Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Поддержка 1cedtcli #133

Merged

Conversation

ovcharenko-di
Copy link
Contributor

@ovcharenko-di ovcharenko-di commented Nov 10, 2024

Fix #100

Добавил простой метод сравнения версий в
VersionParser, он может в будущем пригодиться не только для EDT. В зависимости от результата вызова этого метода в соответствующих местах вызывается либо ring, либо 1cedtcli

Что хочу доделать:

  • указать в README, что при использовании EDT 2024 и выше 1сedtcli должен быть в PATH
  • выражение для проверки версии EDT вынести в отдельный метод с названием типа isEdtcliRequired

Остался не учтенным кейс, когда у пользователя EDT 2023.* и он хочет использовать 1cedtcli вместо ring. Можно добавить еще один параметр в конфиг, но надо ли?

UPD: для больших конфигураций также пригодится указание параметра -vmargs, как это сделано в обертке над командами ring

Copy link
Contributor

coderabbitai bot commented Nov 10, 2024

Walkthrough

В данном пулл-запросе внесены изменения в несколько классов, связанных с преобразованием форматов EDT и Designer. Основное внимание уделяется внедрению класса EdtCliEngineFactory, который управляет созданием экземпляров движков для выполнения преобразований в зависимости от версии EDT. Логика преобразования была переработана для использования нового интерфейса IEdtCliEngine, который определяет методы для работы с конфигурациями и расширениями. Упрощены и оптимизированы методы, что позволяет более эффективно обрабатывать преобразования и валидацию.

Changes

Файл Изменения
src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy Изменена логика метода run, добавлен импорт EdtCliEngineFactory, удалены старые импорты.
src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy Удалены методы transformConfiguration и transformExtensions, добавлен импорт EdtCliEngineFactory.
src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy Изменен метод run, добавлен импорт EdtCliEngineFactory, изменена логика выполнения команд.
src/ru/pulsar/jenkins/library/edt/EdtCliEngineFactory.groovy Добавлен класс EdtCliEngineFactory с методом getEngine(String edtVersion).
src/ru/pulsar/jenkins/library/edt/IEdtCliEngine.groovy Добавлен интерфейс IEdtCliEngine с методами для преобразования и валидации.
src/ru/pulsar/jenkins/library/edt/NativeEdtCliConverter.groovy Добавлен класс NativeEdtCliConverter, реализующий интерфейс IEdtCliEngine.
src/ru/pulsar/jenkins/library/edt/RingConverter.groovy Добавлен класс RingConverter, реализующий интерфейс IEdtCliEngine.

Assessment against linked issues

Objective Addressed Explanation
Использование механизма 1C:EDT CLI (#100)

Possibly related issues

  • Добавить поддержку 1cedtcli для EDT >=2024.1 #132: Изменения в этом пулл-запросе добавляют поддержку 1cedtcli для EDT >=2024.1, что соответствует описанному в этом открытом вопросе требованию о замене команд ring на 1cedtcli для новых версий EDT.

Possibly related PRs

🐇 В мире кода, где все меняется,
Новый движок к нам в путь направляется.
С EdtCli мы в будущее мчимся,
Форматы меняем, в успехе стремимся!
Пусть команды звучат, как музыка в лете,
Вместе с Rabbit'ом к новым победам идите! 🐇


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Outside diff range and nitpick comments (7)
src/ru/pulsar/jenkins/library/utils/VersionParser.groovy (2)

46-46: Добавьте документацию метода

Рекомендуется добавить JavaDoc с описанием:

  • Назначения метода
  • Параметров
  • Возвращаемого значения
  • Исключений

Предлагаю добавить:

+    /**
+     * Сравнивает две версии в формате x.y.z
+     * @param thisVersion Первая версия для сравнения
+     * @param thatVersion Вторая версия для сравнения
+     * @return 1 если thisVersion больше, -1 если меньше, 0 если версии равны
+     * @throws IllegalArgumentException если версии null, пустые или имеют неверный формат
+     */
     static int compare(String thisVersion, String thatVersion) {

46-63: Добавьте модульные тесты

Для обеспечения надежности метода compare необходимо добавить тесты, покрывающие:

  • Сравнение версий разной длины
  • Краевые случаи
  • Обработку исключений

Хотите, чтобы я помог составить модульные тесты для этого метода?

src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (2)

46-47: Замечание: Уточнить версии в сообщениях логирования

В логах используется версия "2024.1.X", тогда как сравнение производится с версией "2024". Рекомендуется скорректировать сообщения для согласованности с фактическими условиями проверки.


55-56: Замечание: Уточнить версии в сообщениях логирования

Аналогично предыдущему комментарию, следует привести версию в сообщении к "2024" для一致ия с условием проверки.

src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (3)

59-61: Уточните сравнение версий и сообщения логов

В условии используется сравнение с версией "2024", а в сообщении лога упоминается версия "2024.1.X". Для согласованности рекомендуется использовать одинаковую версию в сравнении и сообщениях. Если сравнение происходит с "2024", то в логах стоит указать "2024", чтобы избежать путаницы.


63-66: Унифицируйте методы выполнения команд

В первом блоке вы используете steps.ringCommand(ringCommand), а во втором блоке — steps.cmd(edtcliCommand, false, true). Рекомендуется унифицировать способ выполнения команд для повышения читаемости и поддержки кода. Возможно, стоит создать общий метод, который принимает команду и соответственно вызывает нужный метод.


59-77: Рассмотрите возможность рефакторинга условных блоков

Код внутри блоков if и else имеет схожую структуру с небольшими отличиями в командах и используемых методах. Рассмотрите возможность вынесения общих частей кода в отдельные методы или упрощения логики для уменьшения дублирования и повышения читаемости.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 7a09d2b and 1402449.

📒 Files selected for processing (5)
  • src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (3 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/utils/VersionParser.groovy (1 hunks)
  • test/unit/groovy/ru/pulsar/jenkins/library/utils/VersionParserTest.java (1 hunks)
🔇 Additional comments (5)
test/unit/groovy/ru/pulsar/jenkins/library/utils/VersionParserTest.java (2)

88-101: Тест корректно проверяет сравнение версий!

Тест хорошо структурирован и проверяет важный сценарий сравнения версий, где первая версия меньше второй.


103-116: ⚠️ Potential issue

Проверьте корректность логики сравнения версий разной длины.

Текущая реализация теста предполагает, что версии "2024.2.4" и "2024.2" равны (результат сравнения = 0). Это может быть неожиданным поведением, так как:

  1. Версия "2024.2" может интерпретироваться как "2024.2.0"
  2. В этом случае "2024.2.4" должна быть больше "2024.2.0"

Пожалуйста, подтвердите, что это ожидаемое поведение для бизнес-логики.

Предлагаю добавить дополнительные тест-кейсы:

+  @Test
+  void testVersionComparisonWithImplicitZero() {
+    // given
+    String thisVersion = "2024.2.0";
+    String thatVersion = "2024.2";
+
+    // when
+    int result = VersionParser.compare(thisVersion, thatVersion);
+
+    // then
+    assertThat(result).isEqualTo(0);
+  }
src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (1)

12-12: LGTM: Добавлен импорт VersionParser

Корректное добавление импорта для новой функциональности сравнения версий.

src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (1)

10-10: Импорт класса VersionParser подтверждён

Импорт необходим для сравнения версий EDT.

src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (1)

74-75: Проверьте необходимость вывода stdOut в лог

В блоке с 1cedtcli вы выводите стандартный вывод команды в лог с помощью Logger.println(stdOut). Убедитесь, что этот вывод необходим и не приведет к перегрузке логов или раскрытию чувствительной информации. Если вывод очень объемный или содержит небезопасные данные, возможно, стоит его ограничить или удалить.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Outside diff range and nitpick comments (6)
src/ru/pulsar/jenkins/library/edt/EdtCliEngineFactory.groovy (1)

5-6: Добавьте документацию к классу.

Рекомендуется добавить JavaDoc с описанием назначения фабрики и поддерживаемых движков конвертации.

+/**
+ * Фабрика для создания движков конвертации EDT/Designer форматов.
+ * Выбирает подходящую реализацию в зависимости от версии EDT:
+ * - До версии 2024: использует ring
+ * - Версия 2024 и выше: использует 1cedtcli
+ */
 class EdtCliEngineFactory {
src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (1)

31-32: Рекомендуется добавить обработку ошибок

Текущая реализация корректно делегирует работу фабрике движков, что улучшает поддержку кода. Однако стоит добавить обработку потенциальных ошибок при получении движка.

Предлагаю обернуть код в try-catch:

-        def engine = EdtCliEngineFactory.getEngine(config.edtVersion)
-        engine.designerToEdtTransform(steps, config)
+        try {
+            def engine = EdtCliEngineFactory.getEngine(config.edtVersion)
+            engine.designerToEdtTransform(steps, config)
+        } catch (Exception e) {
+            Logger.println("Ошибка при выполнении трансформации: ${e.message}")
+            throw e
+        }
src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (2)

54-56: Отличная реализация фабричного паттерна!

Использование EdtCliEngineFactory значительно упрощает код и инкапсулирует логику выбора между ring и 1cedtcli. Это делает код более поддерживаемым и соответствующим принципу единой ответственности.

Рекомендуется добавить документацию к методу edtValidate, описывающую особенности работы с разными версиями EDT. Это поможет другим разработчикам быстрее разобраться в логике работы.


Требуется обновление документации для EDT 2024+

Анализ показал:

  1. Логика сравнения версий в EdtCliEngineFactory реализована корректно - используется строгое сравнение с версией 2024
  2. В README отсутствует информация о требованиях к PATH для EDT 2024+ и использовании 1cedtcli
  3. Отсутствует документация в каталоге docs/

Необходимо:

  • Добавить в README.md информацию о новых требованиях к окружению для работы с EDT 2024+
  • Описать различия в использовании ring и 1cedtcli
🔗 Analysis chain

Line range hint 1-63: Необходима проверка обработки версий EDT

Реализация выглядит корректной, но требуется проверка следующих аспектов:

  1. Корректность определения версии EDT для выбора между ring и 1cedtcli
  2. Обновление README с информацией о требованиях к PATH для EDT 2024+
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверяем наличие обновлений в README
rg -i "1cedtcli|path" README.md

# Проверяем логику сравнения версий
ast-grep --pattern 'getEngine($_)'

Length of output: 2442


Script:

#!/bin/bash
# Поиск реализации фабрики и логики сравнения версий EDT
ast-grep --pattern 'class EdtCliEngineFactory {
  $$$
}'

rg -A 10 "getEngine" --type groovy

Length of output: 4074


Script:

#!/bin/bash
# Проверяем реализацию конвертеров
ast-grep --pattern 'class RingConverter {
  $$$
}'

ast-grep --pattern 'class NativeEdtCliConverter {
  $$$
}'

# Проверяем документацию по EDT
rg -i "edt.*version|1cedtcli" docs/

Length of output: 197

src/ru/pulsar/jenkins/library/edt/RingConverter.groovy (2)

65-65: Согласовать использование getRemote() после getFilePath()

В других местах после вызова FileUtils.getFilePath используется метод getRemote(). Рекомендуется добавить getRemote(), чтобы получить строковый путь и обеспечить согласованность.

-def workspaceDir = FileUtils.getFilePath("$env.WORKSPACE/$DesignerToEdtFormatTransformation.WORKSPACE")
+def workspaceDir = FileUtils.getFilePath("$env.WORKSPACE/$DesignerToEdtFormatTransformation.WORKSPACE").getRemote()

88-90: Использовать FileUtils.getFilePath для формирования путей

В методе edtValidate переменные workspaceLocation и resultFile формируются без использования FileUtils.getFilePath, тогда как в других методах для получения путей используется FileUtils.getFilePath. Рекомендуется использовать FileUtils.getFilePath для консистентности и корректной обработки путей.

-def workspaceLocation = "$env.WORKSPACE/$DesignerToEdtFormatTransformation.WORKSPACE"
+def workspaceLocation = FileUtils.getFilePath("$env.WORKSPACE/$DesignerToEdtFormatTransformation.WORKSPACE").getRemote()

-def resultFile = "$env.WORKSPACE/$EdtValidate.RESULT_FILE"
+def resultFile = FileUtils.getFilePath("$env.WORKSPACE/$EdtValidate.RESULT_FILE").getRemote()
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 1402449 and d32239d.

📒 Files selected for processing (7)
  • src/ru/pulsar/jenkins/library/edt/EdtCliEngineFactory.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/edt/IEdtCliEngine.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/edt/NativeEdtCliConverter.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/edt/RingConverter.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (2 hunks)
  • src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (2 hunks)
🔇 Additional comments (7)
src/ru/pulsar/jenkins/library/edt/EdtCliEngineFactory.groovy (2)

1-4: LGTM!

Корректный импорт ModuleDescriptor для работы с версиями.


1-18: Проверьте использование новой фабрики в существующем коде.

Убедитесь, что все места, где создаются конвертеры, обновлены для использования фабрики.

✅ Verification successful

Let me search for any usage of converters to ensure we haven't missed anything.


Фабрика корректно используется во всех местах создания конвертеров

Проверка показала, что:

  • Прямое создание конвертеров (RingConverter и NativeEdtCliConverter) происходит только внутри самой фабрики
  • Фабрика EdtCliEngineFactory правильно используется во всех местах, где требуется конвертер:
    • DesignerToEdtFormatTransformation.groovy
    • EdtToDesignerFormatTransformation.groovy
    • EdtValidate.groovy
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск прямого создания конвертеров в обход фабрики

echo "Поиск создания RingConverter:"
rg "new RingConverter\(\)" --type groovy

echo -e "\nПоиск создания NativeEdtCliConverter:"
rg "new NativeEdtCliConverter\(\)" --type groovy

Length of output: 461


Script:

#!/bin/bash
# Поиск использования конвертеров через методы и интерфейсы

echo "Поиск использования RingConverter:"
rg "RingConverter" --type groovy -A 2

echo -e "\nПоиск использования NativeEdtCliConverter:"
rg "NativeEdtCliConverter" --type groovy -A 2

echo -e "\nПоиск использования EdtCliEngineFactory:"
rg "EdtCliEngineFactory" --type groovy -A 2

Length of output: 3859

src/ru/pulsar/jenkins/library/edt/IEdtCliEngine.groovy (2)

1-5: Корректная организация пакетов и импортов.

Структура пакетов и импорты соответствуют стандартам Java/Groovy.


6-11: Хорошо структурированный интерфейс с четким разделением ответственности.

Интерфейс корректно определяет основные операции для работы с форматами EDT и Designer. Методы имеют понятные названия и логичную группировку параметров.

Давайте проверим использование интерфейса в кодовой базе:

✅ Verification successful

Интерфейс корректно реализован и активно используется в проекте

Анализ показал:

  • Интерфейс реализован двумя классами: RingConverter и NativeEdtCliConverter
  • Все методы корректно имплементированы в обоих классах
  • Обработка ошибок присутствует через механизм catchError
  • Интерфейс активно используется в различных частях системы (pipeline1C, EdtValidate, ResultsTransformer)
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Поиск классов, реализующих интерфейс IEdtCliEngine
ast-grep --pattern 'class $_ implements IEdtCliEngine {
  $$$
}'

Length of output: 66


Script:

#!/bin/bash
# Поиск реализаций интерфейса с учетом возможных вариантов синтаксиса Groovy
rg -l "implements.*IEdtCliEngine|class.*implements.*IEdtCliEngine" 

# Поиск использования методов интерфейса
rg "edtToDesignerTransformConfiguration|edtToDesignerTransformExtensions|designerToEdtTransform|edtValidate"

# Поиск импортов интерфейса
rg "import.*IEdtCliEngine"

Length of output: 4632


Script:

#!/bin/bash
# Проверим реализации интерфейса в найденных классах
rg -A 10 "class.*RingConverter|class.*NativeEdtCliConverter" src/ru/pulsar/jenkins/library/edt/

# Проверим обработку ошибок в реализациях
rg "throw|catch|error" src/ru/pulsar/jenkins/library/edt/RingConverter.groovy src/ru/pulsar/jenkins/library/edt/NativeEdtCliConverter.groovy

Length of output: 2847

src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy (1)

3-3: LGTM: Корректное добавление импорта

Добавление импорта EdtCliEngineFactory соответствует новой архитектуре с поддержкой различных CLI-движков.

src/ru/pulsar/jenkins/library/steps/EdtValidate.groovy (1)

3-3: Корректное добавление импорта!

Импорт EdtCliEngineFactory логично вписывается в общую структуру импортов и необходим для реализации фабричного паттерна.

src/ru/pulsar/jenkins/library/steps/EdtToDesignerFormatTransformation.groovy (1)

42-48: Применение паттерна Стратегия улучшает расширяемость

Замена прямых вызовов на использование EdtCliEngineFactory и engine соответствует предыдущему предложению о применении паттерна Стратегия. Это повышает модульность и упрощает добавление новых вариантов преобразования в будущем.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Outside diff range and nitpick comments (2)
src/ru/pulsar/jenkins/library/edt/NativeEdtCliConverter.groovy (2)

80-90: Добавьте проверку существования рабочих каталогов и файлов перед валидацией.

Переменные workspaceLocation и resultFile используются без проверки их существования. Рекомендуется добавить проверки перед вызовом команды валидации, чтобы избежать возможных ошибок.

Примените следующий дифф для исправления:

     String workspaceLocation = "$env.WORKSPACE/$DesignerToEdtFormatTransformation.WORKSPACE"
     def resultFile = "$env.WORKSPACE/$EdtValidate.RESULT_FILE"

+    if (!steps.fileExists(workspaceLocation)) {
+        Logger.println("Рабочее пространство не существует: $workspaceLocation")
+        return
+    }
+
+    if (!steps.fileExists(resultFile)) {
+        Logger.println("Файл результата не существует: $resultFile")
+        return
+    }

     def edtcliCommand = "1cedtcli -data \"$workspaceLocation\" -command validate --file \"$resultFile\" $projectList"

15-90: Рассмотрите возможность рефакторинга для устранения дублирования кода.

Методы содержат повторяющийся код для формирования команд и обработки ошибок. Рекомендуется вынести общую логику в отдельные методы для повышения читаемости и поддержки кода.

Предложение:

  • Создать приватный метод для выполнения команд с обработкой ошибок.
  • Вынести общую логику формирования команд 1cedtcli.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between d32239d and 85bb6f9.

📒 Files selected for processing (1)
  • src/ru/pulsar/jenkins/library/edt/NativeEdtCliConverter.groovy (1 hunks)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
src/ru/pulsar/jenkins/library/edt/EdtCliEngineFactory.groovy (1)

9-30: Улучшить документацию формата версии

В документации метода getEngine указан формат версии как YYYY.X.Z, YYYY.X или YYYY, но стоит добавить:

  • Допустимые значения для X и Z
  • Примеры корректных версий
  • Описание поведения при сравнении версий разного формата (например, "2024" vs "2024.1")
README.md (1)

26-26: Предлагаю расширить документацию по использованию 1cedtcli

Текущее изменение корректно описывает новое требование. Предлагаю дополнить документацию следующей информацией:

  1. Добавить ссылку на документацию по установке и настройке 1cedtcli
  2. Описать возможность использования 1cedtcli для версий EDT 2023.* (опционально)
  3. Указать, как проверить корректность установки 1cedtcli в PATH
-1. При использовании EDT версии 2024.1.0 и выше вместо ring используется 1cedtcli, который должен быть прописан в PATH на агенте.
+1. При использовании EDT версии 2024.1.0 и выше вместо ring используется 1cedtcli:
+   * Утилита должна быть прописана в PATH на агенте
+   * Инструкция по установке: <ссылка на документацию>
+   * Для проверки корректности установки выполните команду `1cedtcli --version`
+   * Для EDT версии 2023.* можно принудительно использовать 1cedtcli, установив параметр `useEdtcli: true` в конфигурации
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 85bb6f9 and ab9ee00.

📒 Files selected for processing (4)
  • README.md (1 hunks)
  • src/ru/pulsar/jenkins/library/edt/EdtCliEngineFactory.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/edt/NativeEdtCliConverter.groovy (1 hunks)
  • src/ru/pulsar/jenkins/library/edt/RingConverter.groovy (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/ru/pulsar/jenkins/library/edt/NativeEdtCliConverter.groovy
  • src/ru/pulsar/jenkins/library/edt/RingConverter.groovy
🔇 Additional comments (2)
src/ru/pulsar/jenkins/library/edt/EdtCliEngineFactory.groovy (2)

1-8: Структура класса и константы реализованы корректно!

Правильное решение использовать константу EDT_CLI_MIN_VERSION вместо магического числа "2024". Парсинг версии через ModuleDescriptor.Version обеспечивает надежную обработку версий.


32-39: Проверить поведение сравнения версий

Текущая реализация использует оператор >= для сравнения версий. Необходимо убедиться, что сравнение корректно работает для всех возможных форматов версий.

@ovcharenko-di ovcharenko-di changed the title WiP: поддержка 1cedtcli Поддержка 1cedtcli Nov 17, 2024
@nixel2007 nixel2007 merged commit 7248c85 into firstBitMarksistskaya:develop Nov 17, 2024
2 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Dec 1, 2024
@ovcharenko-di ovcharenko-di deleted the feature/1cedtcli branch December 21, 2024 13:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Использование механизма 1C:EDT CLI
2 participants