diff --git a/.bsl-language-server.json b/.bsl-language-server.json new file mode 100644 index 0000000..aff302a --- /dev/null +++ b/.bsl-language-server.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://1c-syntax.github.io/bsl-language-server/configuration/schema.json", + "language": "ru", + "diagnostics": { + "parameters": { + "LineLength": { + "maxLineLength": 150 + }, + "MissingSpace": { + "allowMultipleCommas": true + }, + "Typo": { + "minWordLength": 3, + "userWordsToIgnore": "Закоммитить,Коммитом,Коммита,Коммите,тэг,Тэг,Инкрементально," + } + } + } +} \ No newline at end of file diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index 69c9a04..e40e7db 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -3,22 +3,43 @@ # All rights reserved. name: Контроль качества -# Любой пуш и pr в проекте но с фильтром по основному проекту -on: [push, pull_request] + +on: + push: + pull_request_target: + workflow_dispatch: + jobs: - build: - if: github.repository == 'khorevaa/gitsync-plugins' + sonar: + if: github.repository == 'oscript-library/gitsync-plugins' runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [ubuntu-latest] - oscript_version: ['1.8.3'] + os: [ubuntu-22.04] + oscript_version: ['1.9.2'] + v8_version: ['8.3.24.1691'] + edt_version: ['2024.2.5'] + locale: ['ru_RU'] steps: - # Загрузка проекта + - name: Освобождение места + if: startsWith(matrix.os, 'ubuntu') + uses: easimon/maximize-build-space@master + with: + root-reserve-mb: 20480 + swap-size-mb: 1024 + remove-android: 'true' + remove-haskell: 'true' + remove-codeql: 'true' + remove-docker-images: 'true' + - name: Актуализация - uses: actions/checkout@v2 + uses: actions/checkout@v4.2.2 + with: + repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} + ref: ${{ github.event.pull_request.head.ref || github.ref_name }} + fetch-depth: 0 # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions - name: Извлечение имени текущей ветки @@ -26,27 +47,84 @@ jobs: run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" id: extract_branch - # Установка OneScript конкретной версии - name: Установка OneScript - uses: otymko/setup-onescript@v1.0 - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true + uses: otymko/setup-onescript@v1.5 with: version: ${{ matrix.oscript_version }} - # Установка зависимостей пакета - name: Установка зависимостей run: | opm install opm opm install --dev - opm install 1testrunner - opm install 1bdd - opm install notify - opm install coverage + opm install gitsync # TODO: должно быть необязательно + + - name: Подготовка окружения (Linux) + if: startsWith(matrix.os, 'ubuntu') + run: | + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y locales libwebkit2gtk-4.0-37 + sudo localedef -i ${{ matrix.locale }} -c -f UTF-8 -A /usr/share/locale/locale.alias ${{ matrix.locale }}.UTF-8 + + - name: Установка wine для Tool1CD (Linux) + if: startsWith(matrix.os, 'ubuntu') + run: | + sudo dpkg --add-architecture i386 + sudo apt update + sudo apt install wine -y + + - name: Установка платформы 1С + uses: 1CDevFlow/onec-setup-action@main + with: + type: onec # Тип устанавливаемого приложения + onec_version: ${{ matrix.v8_version }} + cache: true + cache_distr: true + env: + ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} + ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} + + - name: Установка Java 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Установка EDT + uses: 1CDevFlow/onec-setup-action@main + with: + type: edt + edt_version: ${{ matrix.edt_version }} + cache: true + cache_distr: true + env: + ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} + ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} + + - name: Установка лицензии (Linux) + if: startsWith(matrix.os, 'ubuntu') + run: | + # Создание каталога + sudo mkdir -p /var/1C/licenses + + # Запись лицензии в файл + echo "${{ secrets.ONEC_LICENSE }}" | sudo tee /var/1C/licenses/licence.lic > /dev/null + + # Назначение прав + sudo chmod 777 -R /var/1C/licenses + shell: bash + env: + ONEC_LICENSE: ${{ secrets.ONEC_LICENSE }} + + - name: Установка gitsync локально + run: opm run install-gitsync - # Запуск тестов и сбор покрытия кода - name: Покрытие кода - run: oscript ./tasks/coverage.os true + uses: coactions/setup-xvfb@v1 + env: + EDT_VERSION: ${{ matrix.edt_version }} + GITSYNC_V8VERSION: ${{ matrix.v8_version }} + with: + run: opm run coverage - name: Извлечение версии пакета shell: bash @@ -54,25 +132,24 @@ jobs: id: extract_version - name: Установка Sonar-scanner - uses: warchant/setup-sonar-scanner@v1 + uses: warchant/setup-sonar-scanner@v8 - # Анализ проекта в SonarQube (ветка) - name: Анализ в SonarQube (branch) - if: github.event_name == 'push' + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + env: + SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }} run: sonar-scanner - -Dsonar.login=${{ secrets.SONARQUBE_TOKEN }} -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} -Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }} -Dsonar.projectVersion=${{ steps.extract_version.outputs.version }} - # Анализ проекта в SonarQube (PR) # https://docs.sonarqube.org/latest/analysis/pull-request/ - name: Анализ в SonarQube (pull-request) - if: github.event_name == 'pull_request' + if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target' + env: + SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }} run: sonar-scanner - -Dsonar.login=${{ secrets.SONARQUBE_TOKEN }} -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }} - -Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }} -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 24dd142..bb91b3f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - oscript_version: ['1.8.3'] + oscript_version: ['1.9.2'] package_mask: ["gitsync-plugins-*.ospx"] steps: diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 89799b4..3e6b691 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -3,46 +3,161 @@ # All rights reserved. name: Тестирование -# Любой пуш и pr в проекте -on: [push, pull_request] + +on: + push: + pull_request_target: + workflow_dispatch: + +permissions: + checks: write + pull-requests: write jobs: - build: + test: runs-on: ${{ matrix.os }} strategy: - fail-fast: false matrix: - os: [ubuntu-latest] - oscript_version: ['1.8.3'] - + oscript_version: ['1.9.2'] + v8_version: ['8.3.21.1624', '8.3.24.1691'] + edt_version: ['2023.3.6', '2024.2.5'] + os: [windows-latest, ubuntu-22.04] + locale: ['ru_RU'] + fail-fast: false steps: - # Загрузка проекта + - name: Освобождение места + if: startsWith(matrix.os, 'ubuntu') + uses: easimon/maximize-build-space@master + with: + root-reserve-mb: 20480 + swap-size-mb: 1024 + remove-android: 'true' + remove-haskell: 'true' + remove-codeql: 'true' + remove-docker-images: 'true' + + - name: Установка локали + if: matrix.os == startsWith(matrix.os, 'windows') + run: | + powershell -Command "Set-WinUILanguageOverride -Language ru-RU" + powershell -Command "Set-WinUserLanguageList ru-RU -Force" + powershell -Command "Set-Culture ru-RU" + powershell -Command "Set-WinSystemLocale ru-RU" + - name: Актуализация - uses: actions/checkout@v2 + uses: actions/checkout@v4.2.2 + with: + repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} + ref: ${{ github.event.pull_request.head.ref || github.ref_name }} - # Установка OneScript конкретной версии - name: Установка OneScript - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - uses: otymko/setup-onescript@v1.0 + uses: otymko/setup-onescript@v1.5 with: version: ${{ matrix.oscript_version }} - # Установка зависимостей пакета - name: Установка зависимостей run: | opm install opm opm install --dev - opm install 1testrunner - opm install 1bdd - opm install notify - opm install coverage - - # Задача тестирования, в результате ожидается успешное выполнение - - name: Тестирование Unit - run: oscript ./tasks/test.os true - - # - name: Тестирование Integrated - # run: | - # docker run -e OSCRIPT_VERSION=${{ matrix.oscript_version }} -v $(pwd):/work_dir harmit/ci-image sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' - # grep 'Результат прогона тестов <Да>' /tmp/test.log \ No newline at end of file + opm install gitsync # TODO: должно быть необязательно + + - name: Подготовка окружения (Linux) + if: startsWith(matrix.os, 'ubuntu') + run: | + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y locales libwebkit2gtk-4.0-37 + sudo localedef -i ${{ matrix.locale }} -c -f UTF-8 -A /usr/share/locale/locale.alias ${{ matrix.locale }}.UTF-8 + + - name: Установка libenchant1c2a для 8.3.21 (Linux) + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.v8_version, '8.3.21') + run: | + sudo echo "deb http://cz.archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libenchant1c2a + + - name: Установка wine для Tool1CD (Linux) + if: startsWith(matrix.os, 'ubuntu') + run: | + sudo dpkg --add-architecture i386 + sudo apt update + sudo apt install wine -y + + - name: Установка платформы 1С + uses: 1CDevFlow/onec-setup-action@main + with: + type: onec # Тип устанавливаемого приложения + onec_version: ${{ matrix.v8_version }} + cache: true + cache_distr: true + env: + ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} + ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} + + - name: Установка Java 11 + if: startsWith(matrix.edt_version, '2023') + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '11' + + - name: Установка Java 17 + if: startsWith(matrix.edt_version, '2024') + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Установка EDT + uses: 1CDevFlow/onec-setup-action@main + with: + type: edt + edt_version: ${{ matrix.edt_version }} + cache: true + cache_distr: true + env: + ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} + ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} + + - name: Установка лицензии (Linux) + if: startsWith(matrix.os, 'ubuntu') + run: | + # Создание каталога + sudo mkdir -p /var/1C/licenses + + # Запись лицензии в файл + echo "${{ secrets.ONEC_LICENSE }}" | sudo tee /var/1C/licenses/licence.lic > /dev/null + + # Назначение прав + sudo chmod 777 -R /var/1C/licenses + shell: bash + env: + ONEC_LICENSE: ${{ secrets.ONEC_LICENSE }} + + - name: Установка лицензии (Windows) + if: startsWith(matrix.os, 'windows') + run: | + mkdir "C:\ProgramData\1C\licenses" -Force + echo $Env:ONEC_LICENSE | Out-File -FilePath "C:\ProgramData\1C\licenses\licence.lic" -Encoding ascii + shell: pwsh + env: + ONEC_LICENSE: ${{ secrets.ONEC_LICENSE }} + + - name: Установка gitsync локально + run: opm run install-gitsync + + - name: Тестирование + uses: coactions/setup-xvfb@v1 + env: + EDT_VERSION: ${{ matrix.edt_version }} + GITSYNC_V8VERSION: ${{ matrix.v8_version }} + with: + run: oscript ./tasks/test.os + + - name: Публикация отчета + if: success() || failure() + uses: mikepenz/action-junit-report@v5 + with: + report_paths: '**/build/reports/*.xml' + fail_on_failure: true + comment: true + check_name: 'Результаты тестов. ОС: ${{ matrix.os }}. Версия 1С: ${{ matrix.v8_version }}. Версия OneScript: ${{ matrix.oscript_version }}. Версия EDT: ${{ matrix.edt_version }}' diff --git a/.gitignore b/.gitignore index ef10eb3..fe7105d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,13 +2,15 @@ build/* -bin/gitsync/* +coverage/* + +bin_gitsync/* bin/gitsync.exe -bin/gitsync.bat +bin/gitsync +bin/build_gitsync.bat tests/*.xml -exec/*.log - +exec.log bdd-log*.xml .enabled-plugins diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c826eaf..08c0b23 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,15 +1,29 @@ # Руководство контрибьютора -Доработка проводится по git-flow. Жду ваших PR. +Доработка проводится по github-flow, основная ветка - master. Жду ваших PR. -## Первоначальная настройка +Для удобства доработки в каталог ./tests/fixtures сохранены выгрузки отчетов по версиям хранилища в формате mxl. Можно ориентироваться на них при написании тестов. Обратите внимание, что комментарий к версии хранилища может неточно описывать изменения в этой версии. -- Необходимо предварительно выполнить команду - - `opm run install-gitsync` - - он устанавливает версию gitsync в каталог bin -- После необходимо собрать и установить плагины из исходников - - `opm run testing-build` +## Требования к окружению + +- Установленная Платформа 1С +- Установленная EDT + +## Запуск тестов + +- Установить значение переменной GITSYNC_V8VERSION, например: + - `set GITSYNC_V8VERSION=8.3.21` # Windows + - `export GITSYNC_V8VERSION=8.3.21` # Linux -А вот потом можно запускать тесты ) +Если переменная не указана, то версию платформы выберет установленная у вас библиотека v8find. -- через команду `opm test` +- Установить значение переменной EDT_VERSION, например: + - `set EDT_VERSION=2023.3.6` # Windows + - `export EDT_VERSION=2023.3.6` # Linux + +По умолчанию используется версия 2022.2.5 + +- Выполнить команду, которая устанавливает gitsync в каталог bin_gitsync + - `opm run install-gitsync` +- Запустить тесты + - `opm test` diff --git a/bin/v8unpack/v8unpack.exe b/bin/v8unpack/v8unpack.exe deleted file mode 100644 index af7ade9..0000000 Binary files a/bin/v8unpack/v8unpack.exe and /dev/null differ diff --git a/bin/v8unpack/zlib1.dll b/bin/v8unpack/zlib1.dll deleted file mode 100644 index 1cf8a47..0000000 Binary files a/bin/v8unpack/zlib1.dll and /dev/null differ diff --git a/features/check-authors.feature b/features/check-authors.feature index 65c85c6..85462b7 100644 --- a/features/check-authors.feature +++ b/features/check-authors.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст check-authors Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,23 +15,21 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS - И Я записываю "0" в файл VERSION + И Я создаю тестовый файл AUTHORS И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "check-authors" -Сценарий: Cинхронизация c простым использованием - Допустим Я создаю неполный тестовой файл AUTHORS +Сценарий: Cинхронизация с простым использованием + Допустим Я создаю неполный тестовый файл AUTHORS + И Я записываю "8" в файл VERSION И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "В таблице истории версий найдены авторы (количество 10), которые не сопоставлены в AUTHORS" + Тогда Вывод команды "gitsync" содержит "В таблице истории версий найдены авторы (количество 3), которые не сопоставлены в AUTHORS" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 1 - - diff --git a/features/check-comments.feature b/features/check-comments.feature index 38a0762..4202121 100644 --- a/features/check-comments.feature +++ b/features/check-comments.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст check-comments Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,12 +15,11 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS - И Я записываю "0" в файл VERSION + И Я создаю тестовый файл AUTHORS И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "check-comments" @@ -28,17 +27,19 @@ Сценарий: Cинхронизация с использованием просто check-comments Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "7" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "КРИТИЧНАЯОШИБКА - Версия <4> от автора <Администратор>: комментарий не задан" + Тогда Вывод команды "gitsync" содержит "КРИТИЧНАЯОШИБКА - Версия <8> от автора <Администратор>: комментарий не задан" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация c использованием --error-comment Допустим Я добавляю параметр "--error-comment" для команды "gitsync" + И Я записываю "2" в файл VERSION И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" Тогда Вывод команды "gitsync" содержит "КРИТИЧНАЯОШИБКА - Версия <4> от автора <Администратор>: комментарий не задан" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 1 - И Количество коммитов должно быть "3" + И Количество коммитов должно быть "1" diff --git a/features/compatibility.feature b/features/compatibility.feature new file mode 100644 index 0000000..a8a906d --- /dev/null +++ b/features/compatibility.feature @@ -0,0 +1,51 @@ +# language: ru + +Функционал: Работа комбинаций плагинов + Как Пользователь + Я хочу выполнять автоматическую синхронизацию даже если активированы несовместимые плагины + Чтобы синхронизация выполнялась корректно всегда + +Контекст: Тестовый контекст + Когда Я очищаю параметры команды "gitsync" в контексте + И Я устанавливаю рабочий каталог во временный каталог + И Я создаю новый объект ГитРепозиторий + И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке + И Я устанавливаю текущие плагины + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С" + И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" + И я включаю отладку лога с именем "oscript.app.gitsync" + И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" + И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" + # И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "sync" для команды "gitsync" + И Я выключаю все плагины + +Сценарий: Cинхронизация с использованием плагинов increment и use-ibcmd + Допустим Я включаю плагин "increment" + И Я включаю плагин "use-ibcmd" + И Я создаю временный каталог и сохраняю его в переменной "РабочийКаталогАвтономногоСервера" + И Я добавляю параметр "--ibcmd-data" для команды "gitsync" из переменной "РабочийКаталогАвтономногоСервера" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит + | Плагин "increment" не совместим с плагином "use-ibcmd" и будет отключен на время выполнения синхронизации | + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 + +Сценарий: Cинхронизация с использованием плагинов increment и drop-config-dump + Допустим Я включаю плагин "increment" + И Я включаю плагин "drop-config-dump" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит + | Плагин "increment" не совместим с плагином "drop-config-dump" и будет отключен на время выполнения синхронизации | + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 diff --git a/features/dropConfigDump.feature b/features/dropConfigDump.feature new file mode 100644 index 0000000..eda7544 --- /dev/null +++ b/features/dropConfigDump.feature @@ -0,0 +1,33 @@ +# language: ru + +Функционал: Работа плагина отключения версионирования файла дампа версий объектов конфигурации (ConfigDumpInfo.xml) + Как Пользователь + Я хочу выполнять автоматическую синхронизацию и не версионировать при этом ConfigDumpInfo.xml + Чтобы в репозитории не было лишних изменений + +Контекст: Тестовый контекст drop-config-dump + Когда Я очищаю параметры команды "gitsync" в контексте + И Я устанавливаю рабочий каталог во временный каталог + И Я создаю новый объект ГитРепозиторий + И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке + И Я устанавливаю текущие плагины + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С" + И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" + И я включаю отладку лога с именем "oscript.app.gitsync" + И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" + И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" + # И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "sync" для команды "gitsync" + И Я выключаю все плагины + И Я включаю плагин "drop-config-dump" + +Сценарий: Cинхронизация с использованием плагина drop-config-dump + Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION + Когда Я выполняю команду "gitsync" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 + И Каталог из переменной "ПутьКаталогаИсходников" не содержит файл "ConfigDumpInfo.xml" diff --git a/features/edtExport.feature b/features/edtExport.feature index 50bb491..123c84e 100644 --- a/features/edtExport.feature +++ b/features/edtExport.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст edtExport Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -16,23 +16,35 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS - И Я записываю "0" в файл VERSION + И Я создаю тестовый файл AUTHORS И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" - И Я добавляю параметр "-P test" для команды "gitsync" + И Я добавляю параметр "--PN test" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "edtExport" - И Я включаю плагин "edtExport" -Сценарий: Cинхронизация с использованием edtExport +Сценарий: Cинхронизация с использованием edtExport без явного указания версии EDT Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "8" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Вывод команды "gitsync" содержит "Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии." + И Код возврата команды "gitsync" равен 0 + +Сценарий: Cинхронизация с использованием edtExport с явным указанием версии EDT + Дано Я получаю переменную окружения "EDT_VERSION" в переменную "ВерсияEDT" + Дано Я добавляю параметр "--edt-version" для команды "gitsync" из переменной "ВерсияEDT" + Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "8" в файл VERSION + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Вывод команды "gitsync" не содержит "Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии." И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация хранилища расширения с использованием edtExport без указания базового проекта @@ -41,20 +53,22 @@ И Я добавляю параметр "-e test" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "2" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 -Сценарий: Cинхронизация хранилища расширения с использованием edtExport c указанием базового проекта +Сценарий: Cинхронизация хранилища расширения с использованием edtExport с указанием базового проекта Допустим Я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилища1С" И я скопировал каталог рабочего окружения EDT в каталог из переменной "РабочееОкружениеEDT" И Я добавляю параметр "-e test" для команды "gitsync" И Я добавляю параметр "-W" для команды "gitsync" из переменной "РабочееОкружениеEDT" - И Я добавляю параметр "-B edtExport" для команды "gitsync" + И Я добавляю параметр "--BP edtExport" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "2" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 diff --git a/features/increment.feature b/features/increment.feature index c3503ba..4f73b6d 100644 --- a/features/increment.feature +++ b/features/increment.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст increment Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,11 +15,10 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS - И Я записываю "0" в файл VERSION + И Я создаю тестовый файл AUTHORS И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "increment" @@ -27,8 +26,9 @@ Сценарий: Cинхронизация с использованием increment Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы:" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 @@ -38,8 +38,9 @@ И Я добавляю параметр "-e test" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "3" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы:" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 \ No newline at end of file diff --git a/features/limit.feature b/features/limit.feature index 1f79f83..f1c146e 100644 --- a/features/limit.feature +++ b/features/limit.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст limit Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,12 +15,11 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS - И Я записываю "0" в файл VERSION + И Я создаю тестовый файл AUTHORS И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "limit" @@ -29,8 +28,9 @@ Допустим Я добавляю параметр "-l 1" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Количество коммитов должно быть "1" @@ -39,8 +39,9 @@ Допустим Я добавляю параметр "--maxversion 2" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "0" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Количество коммитов должно быть "2" @@ -49,8 +50,9 @@ Допустим Я добавляю параметр "--minversion 5" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "0" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Количество коммитов должно быть "6" @@ -61,8 +63,9 @@ И Я добавляю параметр "--maxversion 4" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "0" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Количество коммитов должно быть "3" \ No newline at end of file diff --git a/features/smart-tags.feature b/features/smart-tags.feature index 26dea88..fd01813 100644 --- a/features/smart-tags.feature +++ b/features/smart-tags.feature @@ -5,9 +5,9 @@ Я хочу выполнять автоматическую синхронизацию конфигурации из хранилища Чтобы автоматизировать свою работы с хранилищем с git -Контекст: Тестовый контекст check-authors +Контекст: Тестовый контекст smart-tags Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,12 +15,11 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS - И Я записываю "0" в файл VERSION + И Я создаю тестовый файл AUTHORS И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "smart-tags" @@ -28,18 +27,20 @@ Сценарий: Cинхронизация c установкой тэгов Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 - И Тег "1.0" должен присутствовать в репозитории + И Тег "1.1.0.1" должен присутствовать в репозитории Сценарий: Пропуск ошибки уже существующих тэгов Допустим Я добавляю параметр "--skip-exists-tags" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "8" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 - И Тег "1.0" должен присутствовать в репозитории \ No newline at end of file + И Тег "1.1.0.1" должен присутствовать в репозитории \ No newline at end of file diff --git a/features/step_definitions/edtExport.os b/features/step_definitions/edtExport.os index 7c0464d..bf0298f 100644 --- a/features/step_definitions/edtExport.os +++ b/features/step_definitions/edtExport.os @@ -1,6 +1,11 @@ -#Использовать fs +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:MissingReturnedValueDescription-off +// BSLLS:MissingParameterDescription-off + // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd +#Использовать fs + Перем БДД; //контекст фреймворка 1bdd // Метод выдает список шагов, реализованных в данном файле-шагов @@ -10,7 +15,6 @@ ВсеШаги = Новый Массив; ВсеШаги.Добавить("ЯСкопировалКаталогРабочегоОкруженияEDTВКаталогИзПеременной"); - Возврат ВсеШаги; КонецФункции @@ -41,9 +45,9 @@ КонецФункции Функция КаталогFixtures() - Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures"); + Возврат ОбъединитьПути(КореньПроекта(), "tests", "fixtures"); КонецФункции -Функция КаталогГитсинк() +Функция КореньПроекта() Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."); КонецФункции diff --git a/features/step_definitions/increment.os b/features/step_definitions/increment.os index 8c193e4..4d36449 100644 --- a/features/step_definitions/increment.os +++ b/features/step_definitions/increment.os @@ -1,4 +1,7 @@ -#Использовать fs +// BSLLS:MissingParameterDescription-off +// BSLLS:MissingReturnedValueDescription-off + +#Использовать fs // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd @@ -32,7 +35,6 @@ КаталогХранилища1С = БДД.ПолучитьИзКонтекста(ИмяПеременной); ФС.ОбеспечитьПустойКаталог(КаталогХранилища1С); ФС.КопироватьСодержимоеКаталога(ПутьКВременномуФайлуХранилища1С(), КаталогХранилища1С); - // КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(КаталогХранилища1С, "1cv8ddb.1CD")); КонецПроцедуры Функция ПутьКВременномуФайлуХранилища1С() @@ -42,9 +44,9 @@ КонецФункции Функция КаталогFixtures() - Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures"); + Возврат ОбъединитьПути(КореньПроекта(), "tests", "fixtures"); КонецФункции -Функция КаталогГитсинк() +Функция КореньПроекта() Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."); КонецФункции diff --git a/features/step_definitions/limit.os b/features/step_definitions/limit.os index 9424aec..01472b3 100644 --- a/features/step_definitions/limit.os +++ b/features/step_definitions/limit.os @@ -40,7 +40,7 @@ ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); Вывод = ГитРепозиторий.ПолучитьВыводКоманды(); - МассивСтрок = СтрРазделить(Вывод, Символы.ПС); + МассивСтрок = СтрРазделить(Вывод, Символы.ПС, Ложь); КоличествоКоммитов = МассивСтрок.Количество(); diff --git a/features/step_definitions/shared.os b/features/step_definitions/shared.os index eb7a2ac..2a3b285 100644 --- a/features/step_definitions/shared.os +++ b/features/step_definitions/shared.os @@ -1,4 +1,9 @@ -// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd +// BSLLS:UnusedParameters-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:MissingParameterDescription-off +// BSLLS:MissingReturnedValueDescription-off + +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd #Использовать gitrunner #Использовать asserts #Использовать tempfiles @@ -12,25 +17,27 @@ ВсеШаги = Новый Массив; + ВсеШаги.Добавить("КаталогИзПеременнойСодержитФайл"); + ВсеШаги.Добавить("КаталогИзПеременнойНеСодержитФайл"); ВсеШаги.Добавить("ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке"); ВсеШаги.Добавить("ЯСкопировалКаталогТестовогоХранилищаКонфигурацииВоВременныйКаталог"); ВсеШаги.Добавить("ЯСохраняюЗначениеВременногоКаталогаВПеременной"); - ВсеШаги.Добавить("ЯСоздаюТестовойФайлAuthors"); + ВсеШаги.Добавить("ЯСоздаюТестовыйФайлAuthors"); ВсеШаги.Добавить("ЯЗаписываюВФайлVersion"); ВсеШаги.Добавить("ЯИнициализируюBareРепозиторийВоВременномКаталоге"); ВсеШаги.Добавить("ЯИнициализируюСвязьСВнешнимРепозиторием"); ВсеШаги.Добавить("ЯДобавляюПозиционныйПараметрДляКомандыИзПеременной"); ВсеШаги.Добавить("ЯДобавляюПараметрДляКомандыИзПеременной"); ВсеШаги.Добавить("ЯДобавляюПараметрыДляКоманды"); - ВсеШаги.Добавить("ЯСоздаюНеполныйТестовойФайлAuthors"); + ВсеШаги.Добавить("ЯСоздаюНеполныйТестовыйФайлAuthors"); ВсеШаги.Добавить("ЯСоздаюНовыйОбъектГитрепозиторий"); - ВсеШаги.Добавить("ЯУстанавливаюРабочейКаталогВоВременныйКаталог"); + ВсеШаги.Добавить("ЯУстанавливаюРабочийКаталогВоВременныйКаталог"); ВсеШаги.Добавить("ЯВключаюПлагин"); ВсеШаги.Добавить("ЯИнициализируюРепозиторийВКаталогеИзПеременной"); ВсеШаги.Добавить("ЯВыключаюВсеПлагины"); ВсеШаги.Добавить("ЯНаполняюBareРепозиторийИзПеременнойТестовымиДанными"); ВсеШаги.Добавить("ЯУстанавливаюПеременнуюОкруженияИзПеременной"); - ВсеШаги.Добавить("ЯУстанавливаюРабочейКаталогИзПеременной"); + ВсеШаги.Добавить("ЯУстанавливаюРабочийКаталогИзПеременной"); ВсеШаги.Добавить("ВКаталогеИзПеременнойСоздаетсяФайлИлиКаталог"); ВсеШаги.Добавить("ВКаталогеИзПеременнойНеСоздаетсяФайлИлиКаталог"); ВсеШаги.Добавить("ЯОчищаюЗначениеПеременныхОкружения"); @@ -43,6 +50,40 @@ КонецФункции +//Каталог из переменной "ПутьКаталогаИсходников" содержит файл "module.bsl" +Процедура КаталогИзПеременнойСодержитФайл(Знач ПеременнаяКаталога, Знач ИмяФайла) Экспорт + + КаталогИсходников = БДД.ПолучитьИзКонтекста(ПеременнаяКаталога); + + ПутьКФайлу = ОбъединитьПути(КаталогИсходников, ИмяФайла); + Файл = Новый Файл(ПутьКФайлу); + Если Не Файл.Существует() Тогда + + МассивФайлов = НайтиФайлы(КаталогИсходников, ПолучитьМаскуВсеФайлы(), Истина); + Для каждого Файл Из МассивФайлов Цикл + + Сообщить(Файл.ПолноеИмя); + + КонецЦикла; + + ВызватьИсключение СтрШаблон("Каталог не содержит нужного файла <%1>", ПутьКФайлу); + КонецЕсли; + +КонецПроцедуры + +//Каталог из переменной "ПутьКаталогаИсходников" не содержит файл "module.bsl" +Процедура КаталогИзПеременнойНеСодержитФайл(Знач ПеременнаяКаталога, Знач ИмяФайла) Экспорт + + КаталогИсходников = БДД.ПолучитьИзКонтекста(ПеременнаяКаталога); + + ПутьКФайлу = ОбъединитьПути(КаталогИсходников, ИмяФайла); + Файл = Новый Файл(ПутьКФайлу); + Если Файл.Существует() Тогда + ВызватьИсключение СтрШаблон("Каталог содержит искомый файл <%1>", ПутьКФайлу); + КонецЕсли; + +КонецПроцедуры + //Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов" Процедура ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной(Знач ИмяПеременной) Экспорт @@ -82,8 +123,8 @@ КонецПроцедуры -//Я устанавливаю рабочей каталог из переменной "ПутьКаталогаИсходников" -Процедура ЯУстанавливаюРабочейКаталогИзПеременной(Знач ПутьКаталогаИсходников) Экспорт +//Я устанавливаю рабочий каталог из переменной "ПутьКаталогаИсходников" +Процедура ЯУстанавливаюРабочийКаталогИзПеременной(Знач ПутьКаталогаИсходников) Экспорт ВременныйКаталог = БДД.ПолучитьИзКонтекста(ПутьКаталогаИсходников); УстановитьТекущийКаталог(ОбъединитьПути(ТекущийКаталог(), ВременныйКаталог)); @@ -97,7 +138,6 @@ УстановитьДвижок(Команда); Команда.ДобавитьПараметр(ОбернутьВКавычки(ПутьКГитсинк())); Команда.ДобавитьПараметр("p d -a"); - //Команда.ДобавитьПараметр(ПарамСтрока1); КодВозврата = Команда.Исполнить(); Если Не КодВозврата = 0 Тогда @@ -126,6 +166,8 @@ ГитРепозиторий.УстановитьРабочийКаталог(ВременныйКаталог); ГитРепозиторий.Инициализировать(); + ГитРепозиторий.УстановитьНастройку("user.name", "John Doe", РежимУстановкиНастроекGit.Локально); + ГитРепозиторий.УстановитьНастройку("user.email", "jd@example.com", РежимУстановкиНастроекGit.Локально); КонецПроцедуры @@ -170,8 +212,8 @@ ВременныеФайлы.Удалить(); КонецПроцедуры -//Я устанавливаю рабочей каталог во временный каталог -Процедура ЯУстанавливаюРабочейКаталогВоВременныйКаталог() Экспорт +//Я устанавливаю рабочий каталог во временный каталог +Процедура ЯУстанавливаюРабочийКаталогВоВременныйКаталог() Экспорт УстановитьТекущийКаталог(ВременныеФайлы.СоздатьКаталог()); КонецПроцедуры @@ -212,8 +254,8 @@ КонецПроцедуры -//Я создаю тестовой файл AUTHORS -Процедура ЯСоздаюТестовойФайлAuthors() Экспорт +//Я создаю тестовый файл AUTHORS +Процедура ЯСоздаюТестовыйФайлAuthors() Экспорт ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); ФайлАвторов = Новый ЗаписьТекста; @@ -286,7 +328,7 @@ Процедура ЯДобавляюПараметрДляКомандыИзПеременной(Знач Параметр, Знач ИмяКоманды, Знач ИмяПеременной) Экспорт Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); ЗначениеПеременной = БДД.ПолучитьИзКонтекста(ИмяПеременной); - Команда.ДобавитьПараметр(СтрШаблон("%1 %2", Параметр, ЗначениеПеременной)) + Команда.ДобавитьПараметр(СтрШаблон("%1 %2", Параметр, ЗначениеПеременной)); КонецПроцедуры //Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке @@ -303,21 +345,17 @@ Процедура ЯСкопировалКаталогТестовогоХранилищаКонфигурацииВоВременныйКаталог() Экспорт ВременныйКаталог = БДД.ПолучитьИзКонтекста("ВременныйКаталог"); - КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(ВременныйКаталог, "1cv8ddb.1CD")) + КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(ВременныйКаталог, "1cv8ddb.1CD")); КонецПроцедуры // И Я устанавливаю текущие плагины Процедура ЯУстанавливаюТекущиеПлагины() Экспорт - КаталогПлагинов = ВременныеФайлы.СоздатьКаталог(); - - УстановитьПеременнуюСреды("GITSYNC_PLUGINS_PATH", КаталогПлагинов); - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(КаталогГитсинк()); + КомандаOpm.УстановитьРабочийКаталог(КореньПроекта()); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("run testing-build"); + КомандаOpm.ДобавитьПараметр("run install-plugins"); КодВозврата = КомандаOpm.Исполнить(); @@ -327,8 +365,8 @@ КонецПроцедуры -//Я создаю неполный тестовой файл AUTHORS -Процедура ЯСоздаюНеполныйТестовойФайлAuthors() Экспорт +//Я создаю неполный тестовый файл AUTHORS +Процедура ЯСоздаюНеполныйТестовыйФайлAuthors() Экспорт ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); ФайлАвторов = Новый ЗаписьТекста; @@ -345,8 +383,8 @@ Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); Для Каждого Параметр из ТаблицаПараметров Цикл - Команда.ДобавитьПараметр(Параметр[0]) - КонецЦикла + Команда.ДобавитьПараметр(Параметр[0]); + КонецЦикла; КонецПроцедуры @@ -382,16 +420,16 @@ КонецФункции Функция КаталогFixtures() - Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures"); + Возврат ОбъединитьПути(КореньПроекта(), "tests", "fixtures"); КонецФункции -Функция КаталогГитсинк() +Функция КореньПроекта() Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."); КонецФункции Функция ПутьКГитсинк() - Возврат ОбъединитьПути(КаталогГитсинк(), "bin", "gitsync/src/cmd/gitsync.os"); + Возврат ОбъединитьПути(КореньПроекта(), "bin_gitsync", "gitsync/src/cmd/gitsync.os"); КонецФункции diff --git a/features/step_definitions/unpackForm.os b/features/step_definitions/unpackForm.os deleted file mode 100644 index f4f30d5..0000000 --- a/features/step_definitions/unpackForm.os +++ /dev/null @@ -1,48 +0,0 @@ -// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd - -Перем БДД; //контекст фреймворка 1bdd - -// Метод выдает список шагов, реализованных в данном файле-шагов -Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт - БДД = КонтекстФреймворкаBDD; - - ВсеШаги = Новый Массив; - - ВсеШаги.Добавить("КаталогИзПеременнойСодержитФайл"); - - Возврат ВсеШаги; -КонецФункции - -// Реализация шагов - -// Процедура выполняется перед запуском каждого сценария -Процедура ПередЗапускомСценария(Знач Узел) Экспорт - -КонецПроцедуры - -// Процедура выполняется после завершения каждого сценария -Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - -КонецПроцедуры - - -//Каталог из переменной "ПутьКаталогаИсходников" содержит файл "module.bsl" -Процедура КаталогИзПеременнойСодержитФайл(Знач ПеременнаяКаталога, Знач ИмяФайла) Экспорт - - КаталогИсходников = БДД.ПолучитьИзКонтекста(ПеременнаяКаталога); - - ПутьКФайлу = ОбъединитьПути(КаталогИсходников, ИмяФайла); - Файл = Новый Файл(ПутьКФайлу); - Если Не Файл.Существует() Тогда - - МассивФайлов = НайтиФайлы(КаталогИсходников, ПолучитьМаскуВсеФайлы(), Истина); - Для каждого Файл Из МассивФайлов Цикл - - Сообщить(Файл.ПолноеИмя); - - КонецЦикла; - - ВызватьИсключение СтрШаблон("Каталог не содержит нужного файла <%1>", ПутьКФайлу); - КонецЕсли; - -КонецПроцедуры diff --git a/features/sync-remote.feature b/features/sync-remote.feature index db066e9..3ff1717 100644 --- a/features/sync-remote.feature +++ b/features/sync-remote.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,8 +15,7 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS - И Я записываю "0" в файл VERSION + И Я создаю тестовый файл AUTHORS И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я создаю временный каталог и сохраняю его в контекст @@ -24,59 +23,66 @@ И Я сохраняю значение временного каталога в переменной "URLРепозитория" И я инициализирую связь "ПутьКаталогаИсходников" с внешним репозиторием "URLРепозитория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "sync-remote" Сценарий: Cинхронизация с использованием push - Допустим Я добавляю параметр "-P" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация с использованием pull и push - Допустим Я добавляю параметр "-GP" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" + И Я добавляю параметр "-G" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация c использованием push-tags - Допустим Я добавляю параметр "-P" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" И Я добавляю параметр "--push-tags" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация c использованием push-every-n-commits - Допустим Я добавляю параметр "-P" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" И Я добавляю параметр "--push-n-commits 1" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация хранилища все вместе - Допустим Я добавляю параметр "-PGTn=2" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" + И Я добавляю параметр "-GTn=2" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" + И Я записываю "6" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 diff --git a/features/tool1CD.feature b/features/tool1CD.feature index d3bf3c5..d83dd08 100644 --- a/features/tool1CD.feature +++ b/features/tool1CD.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,12 +15,11 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS - И Я записываю "0" в файл VERSION + И Я создаю тестовый файл AUTHORS И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "tool1CD" @@ -28,9 +27,10 @@ Сценарий: Успешная синхронизация с tool1CD Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Использую tool1CD для работы с хранилищем" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 - И Количество коммитов должно быть "10" + И Количество коммитов должно быть "1" diff --git a/features/unpackForm.feature b/features/unpackForm.feature index e4a2ed3..68383fe 100644 --- a/features/unpackForm.feature +++ b/features/unpackForm.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст unpackForm Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,41 +15,41 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "unpackForm" -Сценарий: Распаковка форм +Сценарий: Распаковка форм без переименования Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" - И Вывод команды "gitsync" не содержит "Внешнее исключение" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Код возврата команды "gitsync" равен 0 И Каталог из переменной "ПутьКаталогаИсходников" содержит файл "Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form/module" -Сценарий: Переименование модулей module в module.bsl +Сценарий: Распаковка форм с Переименованием модулей module в Module.bsl Допустим Я добавляю параметр "-R" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" - И Вывод команды "gitsync" не содержит "Внешнее исключение" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Код возврата команды "gitsync" равен 0 - И Каталог из переменной "ПутьКаталогаИсходников" содержит файл "Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form/module.bsl" + И Каталог из переменной "ПутьКаталогаИсходников" содержит файл "Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form/Module.bsl" -Сценарий: Переименование модулей form в form.txt +Сценарий: Распаковка форм с переименованием модулей form в form.txt Допустим Я добавляю параметр "-F" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" - И Вывод команды "gitsync" не содержит "Внешнее исключение" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Код возврата команды "gitsync" равен 0 И Каталог из переменной "ПутьКаталогаИсходников" содержит файл "Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form/form.txt" diff --git a/features/useIbcmd.feature b/features/useIbcmd.feature new file mode 100644 index 0000000..c9701e5 --- /dev/null +++ b/features/useIbcmd.feature @@ -0,0 +1,49 @@ +# language: ru + +Функционал: Работа плагина use-ibcmd + Как Пользователь + Я хочу выполнять автоматическую синхронизацию конфигурации из хранилища с использованием ibcmd + Чтобы ускорить операции выгрузки и загрузки + +Контекст: Тестовый контекст use-ibcmd + Когда Я очищаю параметры команды "gitsync" в контексте + И Я устанавливаю рабочий каталог во временный каталог + И Я создаю новый объект ГитРепозиторий + И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке + И Я устанавливаю текущие плагины + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С" + И Я создаю временный каталог и сохраняю его в переменной "РабочееОкружениеEDT" + И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" + И Я создаю тестовый файл AUTHORS + И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" + И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" + # И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "sync" для команды "gitsync" + И Я создаю временный каталог и сохраняю его в переменной "РабочийКаталогАвтономногоСервера" + И Я добавляю параметр "--ibcmd-data" для команды "gitsync" из переменной "РабочийКаталогАвтономногоСервера" + И Я выключаю все плагины + И Я включаю плагин "use-ibcmd" + +Сценарий: Cинхронизация с использованием use-ibcmd (успешная) + Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "9" в файл VERSION + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Вывод команды "gitsync" содержит "Используем утилиту ibcmd для выгрузки конфигурации в файлы" + И Код возврата команды "gitsync" равен 0 + +Сценарий: Cинхронизация с использованием use-ibcmd (инкрементальная) + Допустим Я добавляю параметр "--increment" для команды "gitsync" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + И Я записываю "8" в файл VERSION + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Вывод команды "gitsync" содержит "Используем утилиту ibcmd для выгрузки конфигурации в файлы" + И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы: ИНКРЕМЕНТАЛЬНАЯ ВЫГРУЗКА" + И Код возврата команды "gitsync" равен 0 diff --git a/packagedef b/packagedef index 76ede8a..81ecb85 100644 --- a/packagedef +++ b/packagedef @@ -3,47 +3,51 @@ // Полную документацию см. на hub.oscript.io/packaging // Процедура ПередСборкой(Знач РабочийКаталог) Экспорт - - ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); - + + ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); + Сообщить("Запаковка бинарных данных библиотек"); - КомандаOpm = Новый Команда; - - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("run packdata "); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); - + КомандаOpm = Новый Команда; + + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("run pack"); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); + КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда + + Если КодВозврата <> 0 Тогда ВызватьИсключение КомандаOpm.ПолучитьВывод(); КонецЕсли; - - Сообщить("Установка локальных зависимостей библиотек"); - КомандаOpm = Новый Команда; - - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install -l"); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда + + Сообщить("Установка локальных зависимостей библиотек"); + КомандаOpm = Новый Команда; + + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("install -l"); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - + КонецЕсли; + КонецПроцедуры Описание.Имя("gitsync-plugins") - .Версия("1.6.0") + .Версия("2.0.0") .Автор("Khorev A.A. and SilverBulleters") .АдресАвтора("khorevaa@gmail.com,help@silverbulleters.org") .Описание("Набор предустановленных плагинов для gitsync") - .ВерсияСреды("1.7.0") + .ВерсияСреды("1.9.2") .ВключитьФайл("src") .ВключитьФайл("docs") .ВключитьФайл("oscript_modules") .ЗависитОт("strings", "0.4.1") + .РазработкаЗависитОт("1testrunner", "1.9.2") + .РазработкаЗависитОт("1bdd", "1.15.1") + .РазработкаЗависитОт("notify", "0.2.0") + .РазработкаЗависитОт("coverage", "0.7.0") .ОпределяетКласс("Плагин_ИнкрементальнаяВыгрузка", "src/Классы/increment.os") .ОпределяетКласс("Плагин_УстановкиЛимитов", "src/Классы/limit.os") .ОпределяетКласс("Плагин_ПроверкиАвторов", "src/Классы/checkAuthors.os") @@ -59,4 +63,4 @@ .ОпределяетКласс("Плагин_DropConfigDump", "src/Классы/dropConfigDump.os") .ОпределяетКласс("Плагин_DropSupport", "src/Классы/dropSupport.os") .ОпределяетКласс("Плагин_RoboCopy", "src/Классы/roboCopy.os") - ; + ; \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties index 177897d..97c70c7 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,9 +1,8 @@ # must be unique in a given SonarQube instance -sonar.projectKey=opensource-gitsync-plugins -sonar.organization=sonar-opensource-add +sonar.projectKey=gitsync-plugins # this is the name displayed in the SonarQube UI -sonar.projectName=Embedded plugins for Gitsync +sonar.projectName=gitsync-plugins # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. # Since SonarQube 4.2, this property is optional if sonar.modules is set. diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/disableSupport.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/disableSupport.os" index 2182bf8..80cfc12 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/disableSupport.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/disableSupport.os" @@ -1,7 +1,6 @@ #Использовать logos -Перем ВерсияПлагина; Перем Лог; Перем КомандыПлагина; Перем Описание; @@ -83,7 +82,6 @@ Процедура Инициализация() - ВерсияПлагина = "1.3.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КонецПроцедуры diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropConfigDump.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropConfigDump.os" index 967817f..a01a894 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropConfigDump.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropConfigDump.os" @@ -74,11 +74,6 @@ Обработчик = СтандартныйОбработчик; - Если НЕ (ВРег(ТекущаяКоманда) = "ALL" - ИЛИ ВРег(ТекущаяКоманда) = "SYNC") Тогда - Возврат; - КонецЕсли; - МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); ОтключаемыеПлагины = ОтключаемыеПлагины(); @@ -136,7 +131,7 @@ КорневойКаталогГит = КорневойКаталогГит(КаталогРабочейКопии); Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда - Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", КаталогРабочейКопии); + Лог.Предупреждение("Каталог ""%1"" не является репозиторием git!", КаталогРабочейКопии); Возврат; КонецЕсли; @@ -185,7 +180,7 @@ КорневойКаталогГит = КорневойКаталогГит(РабочийКаталог); Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда - Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", РабочийКаталог); + Лог.Предупреждение("Каталог ""%1"" не является репозиторием git!", РабочийКаталог); Возврат; КонецЕсли; @@ -211,7 +206,7 @@ // // Возвращаемое значение: // Строка - путь к корневому каталогу репозитария git -// если пустая строка, то каталог не является репозитарием git +// если пустая строка, то каталог не является репозиторием git // Функция КорневойКаталогГит(Знач КаталогРабочейКопии) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropSupport.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropSupport.os" index 8063a52..8f8525d 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropSupport.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropSupport.os" @@ -112,7 +112,7 @@ КорневойКаталогГит = КорневойКаталогГит(КаталогРабочейКопии); Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда - Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", КаталогРабочейКопии); + Лог.Предупреждение("Каталог ""%1"" не является репозиторием git!", КаталогРабочейКопии); Возврат; КонецЕсли; @@ -159,7 +159,7 @@ КорневойКаталогГит = КорневойКаталогГит(РабочийКаталог); Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда - Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", РабочийКаталог); + Лог.Предупреждение("Каталог ""%1"" не является репозиторием git!", РабочийКаталог); Возврат; КонецЕсли; @@ -185,7 +185,7 @@ // // Возвращаемое значение: // Строка - путь к корневому каталогу репозитария git -// если пустая строка, то каталог не является репозитарием git +// если пустая строка, то каталог не является репозиторием git // Функция КорневойКаталогГит(Знач КаталогРабочейКопии) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" index a11aaef..f92493c 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" @@ -1,14 +1,14 @@ #Использовать logos #Использовать tempfiles #Использовать fs +#Использовать semver -Перем ВерсияПлагина; Перем Лог; Перем Обработчик; Перем КомандыПлагина; Перем ИмяПроекта; -Перем ИмяМодуля; +Перем ВерсияEDT; Перем РабочееПространство; Перем ИмяРасширения; Перем ИмяБазовогоПроекта; @@ -24,7 +24,7 @@ // Строка - текущая версия плагина // Функция Версия() Экспорт - Возврат ВерсияПлагина; + Возврат "2.0.0"; КонецФункции // Возвращает приоритет выполнения плагина @@ -43,7 +43,7 @@ // Функция Описание() Экспорт Возврат "Плагин добавляет возможность выгрузки в формате EDT." - + " Важно: Для работы плагина необходимы установленные EDT и Ring"; + + " Важно: Для работы плагина необходимы установленные EDT и ring\1cedtcli"; КонецФункции // Возвращает подробную справку к плагину @@ -100,40 +100,34 @@ Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды); - КлассРеализации.Опция("P project-name", "", "[*edtExport] Имя проекта") - .ТСтрока() - .ВОкружении("GITSYNC_PROJECT_NAME"); + КлассРеализации.Опция("PN project-name", "", "[*edtExport] Имя проекта") + .ТСтрока() + .ВОкружении("GITSYNC_PROJECT_NAME"); КлассРеализации.Опция("W workspace-location", "", "[*edtExport] расположение рабочей области") - .ТСтрока() - .ВОкружении("GITSYNC_WORKSPACE_LOCATION"); - - КлассРеализации.Опция( - "B base-project-name", - "", - "[*edtExport] имя базового проекта в рабочей области (для расширений))") - .ТСтрока() - .ВОкружении("GITSYNC_BASE_PROJECT_NAME"); - - КлассРеализации.Опция( - "M module", - "", - "[*edtExport] имя установленного модуля edt") - .ТСтрока() - .ВОкружении("GITSYNC_MODULE"); + .ТСтрока() + .ВОкружении("GITSYNC_WORKSPACE_LOCATION"); + + КлассРеализации.Опция("BP base-project-name", + "", + "[*edtExport] имя базового проекта в рабочей области (для расширений))") + .ТСтрока() + .ВОкружении("GITSYNC_BASE_PROJECT_NAME"); + + КлассРеализации.Опция("EDT edt-version", + "", + "[*edtExport] версия EDT") + .ТСтрока() + .ВОкружении("GITSYNC_EDT_VERSION"); КонецПроцедуры Процедура ПриПолученииПараметров(ПараметрыКоманды) Экспорт ИмяПроекта = ПараметрыКоманды.Параметр("project-name"); - ИмяМодуля = ПараметрыКоманды.Параметр("module"); + ВерсияEDT = ПараметрыКоманды.Параметр("edt-version"); РабочееПространство = ПараметрыКоманды.Параметр("workspace-location"); ИмяБазовогоПроекта = ПараметрыКоманды.Параметр("base-project-name"); - - Если ПустаяСтрока(ИмяМодуля) Тогда - ИмяМодуля = "edt"; - КонецЕсли; Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) @@ -157,7 +151,7 @@ КаталогВыгрузки, ПутьКХранилищу, НомерВерсии) Экспорт - // BSLLS:UnusedParameters-on +// BSLLS:UnusedParameters-on Лог.Отладка("Начинаю выгрузку EDT"); Лог.Отладка("Имя проекта: %1", ИмяПроекта); @@ -185,27 +179,11 @@ Лог.Отладка("Каталог проекта EDT: %1", КаталогПроекта); ФС.ОбеспечитьПустойКаталог(КаталогПроекта); - Команда = Новый Команда; - - Параметры = Новый Массив(); - Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки)); - Параметры.Добавить(СтрШаблон("--workspace-location ""%1""", ВременноеРабочееПространство)); - Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта)); + Команда = КомандаКонвертации(КаталогВыгрузки, ВременноеРабочееПространство, КаталогПроекта); - Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда - Параметры.Добавить(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта)); - КонецЕсли; - - Команда.УстановитьСтрокуЗапуска(СтрШаблон("ring %1 workspace import", ИмяМодуля)); - Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI); - Команда.ДобавитьЛогВыводаКоманды("oscript.lib.gitsync.plugins.edtExport"); - Команда.ДобавитьПараметры(Параметры); - Команда.УстановитьИсполнениеЧерезКомандыСистемы(Истина); - Команда.ПоказыватьВыводНемедленно(Ложь); - Команда.УстановитьПравильныйКодВозврата(0); КодВозврата = Команда.Исполнить(); - Лог.Отладка("Код возврата EDT: %1", КодВозврата); + Лог.Отладка("Код возврата команды конвертации: %1", КодВозврата); ТекущийФайлВерсийМетаданных = Новый Файл(ОбъединитьПути(КаталогВыгрузки, ИмяФайлаДампаКонфигурации)); Если ТекущийФайлВерсийМетаданных.Существует() Тогда @@ -228,6 +206,248 @@ #Область Вспомогательные_процедуры_и_функции +Функция ОпределитьИсполняемыйФайл() + + ИсполняемыйФайл = ""; + + КаталогEDT = УточнитьВерсиюEDT(); + + Если Лев(ВерсияEDT, 4) >= "2024" Тогда // BSLLS:MagicNumber-off + ИсполняемыйФайл = НайтиEdtcli(КаталогEDT); + Иначе + ИсполняемыйФайл = НайтиRing(); + КонецЕсли; + + Возврат ИсполняемыйФайл; + +КонецФункции + +Функция УточнитьВерсиюEDT() + + ВсеВерсииEDT = НайтиВсеУстановленныеEDT(); + + Если Не ЗначениеЗаполнено(ВерсияEDT) Тогда + + Лог.Информация("Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии."); + + ВерсияEDT = ВсеВерсииEDT.Версии[0]; + КаталогEDT = ВсеВерсииEDT.КаталогиEDT.Получить(ВсеВерсииEDT.Версии[0]); + Лог.Информация("Версия EDT определена автоматически: %1, каталог %2", ВерсияEDT, КаталогEDT); + + Возврат КаталогEDT; + + Иначе + + Возврат ВсеВерсииEDT.КаталогиEDT.Получить(ВерсияEDT); + + КонецЕсли; + +КонецФункции + +// Функция - получает команду запуска утилиты ring или 1cedtcli для выполнения конвертации +// +// Возвращаемое значение: +// Команда - команда запуска утилиты ring или 1cedtcli для выполнения конвертации +// +Функция КомандаКонвертации(КаталогВыгрузки, РабочееПространство, КаталогПроекта) + + Команда = Новый Команда; + Команда.УстановитьКоманду(ОпределитьИсполняемыйФайл()); + + Если Лев(ВерсияEDT, 4) >= "2024" Тогда // BSLLS:MagicNumber-off + КомандаEdtcli(Команда, КаталогВыгрузки, РабочееПространство, КаталогПроекта); + Иначе + КомандаRing(Команда, КаталогВыгрузки, РабочееПространство, КаталогПроекта); + КонецЕсли; + + Команда.ДобавитьЛогВыводаКоманды("oscript.lib.gitsync.plugins.edtExport"); + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Истина); + Команда.ПоказыватьВыводНемедленно(Ложь); + Команда.УстановитьПравильныйКодВозврата(0); + + Возврат Команда; + +КонецФункции + +// Функция - получает команду запуска утилиты ring для выполнения конвертации +// +// Возвращаемое значение: +// Команда - команда запуска утилиты ring для выполнения конвертации +// +Процедура КомандаRing(Команда, КаталогВыгрузки, РабочееПространство, КаталогПроекта) + + Команда.ДобавитьПараметр(СтрШаблон("edt@%1:x86_64", ВерсияEDT)); + Команда.ДобавитьПараметр("workspace import"); + + Команда.ДобавитьПараметр(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки)); + Команда.ДобавитьПараметр(СтрШаблон("--workspace-location ""%1""", РабочееПространство)); + Команда.ДобавитьПараметр(СтрШаблон("--project ""%1""", КаталогПроекта)); + + Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда + Команда.ДобавитьПараметр(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта)); + КонецЕсли; + +КонецПроцедуры + +// Функция - получает команду запуска утилиты edtcli для выполнения конвертации +// +// Возвращаемое значение: +// Команда - команда запуска утилиты edtcli для выполнения конвертации +// +Процедура КомандаEdtcli(Команда, КаталогВыгрузки, РабочееПространство, КаталогПроекта) + + Команда.ДобавитьПараметр("-data"); + Команда.ДобавитьПараметр(ОбернутьВКавычки(РабочееПространство)); + Команда.ДобавитьПараметр("-command import"); + + Команда.ДобавитьПараметр(СтрШаблон("--project ""%1""", КаталогПроекта)); + Команда.ДобавитьПараметр(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки)); + + Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда + Команда.ДобавитьПараметр(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта)); + КонецЕсли; + +КонецПроцедуры + +// Функция - выполняет поиск утилиты ring и возвращает полный путь к утилите +// +// Возвращаемое значение: +// Строка - полный путь к утилите ring +// +Функция НайтиRing() Экспорт + + Если ЭтоWindows() Тогда + КаталогПрограмм = ПолучитьПеременнуюСреды("ProgramW6432"); + Расширение = ".cmd"; + Иначе + КаталогПрограмм = "/opt"; + Расширение = ""; + КонецЕсли; + ПутьУстановки_1CE = ОбъединитьПути(КаталогПрограмм, "1C", "1CE", "components"); + Файлы = НайтиФайлы(ПутьУстановки_1CE, СтрШаблон("ring%1", Расширение), Истина); + + Если Файлы.Количество() > 0 Тогда + Возврат Файлы[0].ПолноеИмя; + КонецЕсли; + + Возврат ""; + +КонецФункции + +// Функция - выполняет поиск утилиты 1cedtcli и возвращает полный путь к утилите +// +// Возвращаемое значение: +// Строка - полный путь к утилите 1cedtcli +// +Функция НайтиEdtcli(КаталогEDT) Экспорт + + Расширение = ""; + Если ЭтоWindows() Тогда + Расширение = ".exe"; + КонецЕсли; + + ИсполняемыйФайл = СтрШаблон("1cedtcli%1", Расширение); + Лог.Информация("Ищу %1 в %2", ИсполняемыйФайл, КаталогEDT); + НайденныеФайлы = НайтиФайлы(КаталогEDT, ИсполняемыйФайл, Истина); + + Если НайденныеФайлы.Количество() = 0 Тогда + ВызватьИсключение "1cedtcli не найден"; + КонецЕсли; + + Результат = НайденныеФайлы[0].ПолноеИмя; + Лог.Информация("Найден исполняемый файл %1", Результат); + Возврат Результат; + +КонецФункции + +Функция ОбернутьВКавычки(Знач Строка) + Возврат """" + Строка + """"; +КонецФункции + +// Функция - проверяет, что скрипт выполняется в среде Windows +// +// Возвращаемое значение: +// Булево - Истина - скрипт выполняется в среде Windows +// +Функция ЭтоWindows() Экспорт + + СистемнаяИнформация = Новый СистемнаяИнформация; + Возврат Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + +КонецФункции // ЭтоWindows() + +// Функция - выполняет поиск всех установленных версий EDT +// +// Возвращаемое значение: +// Структура - отсортированные версии и пути к исполняемым файлам +// +Функция НайтиВсеУстановленныеEDT() + + КаталогиEDT = Новый Соответствие; + ВерсииДляСортировки = Новый Массив; + + КаталогиПоиска = КаталогиУстановкиЕДТПоУмолчанию(); + + РВ = Новый РегулярноеВыражение("1c[-|_]edt[-| ](\d+\.\d+(?:\.\d)*)"); + РВ.ИгнорироватьРегистр = Истина; + + Для Каждого КаталогПоиска Из КаталогиПоиска Цикл + + Лог.Информация("Ищу версии EDT в каталоге ""%1""", КаталогПоиска); + + ФайлыIni = НайтиФайлы(КаталогПоиска, "1cedt.ini", Истина); + Файлы = НайтиФайлы(КаталогПоиска, "1cedt", Истина); + + Для Каждого Файл Из ФайлыIni Цикл + Файлы.Добавить(Файл); + КонецЦикла; + + Для Каждого ТекФайл Из Файлы Цикл + + Лог.Информация("Ищу совпадения регулярного выражения с именем файла ""%1""", ТекФайл.Путь); + КаталогВерсии = Новый Файл(ТекФайл.Путь); + Совпадения = РВ.НайтиСовпадения(КаталогВерсии.Имя); + + Если Совпадения.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + НайденнаяВерсия = Совпадения[0].Группы[1].Значение; + + КаталогиEDT.Вставить(НайденнаяВерсия, ТекФайл.Путь); + ВерсииДляСортировки.Добавить(НайденнаяВерсия); + + Лог.Информация("Найдена версия EDT ""%1"" в каталоге ""%2"".", НайденнаяВерсия, ТекФайл.Путь); + КонецЦикла; + КонецЦикла; + + Версии.СортироватьВерсии(ВерсииДляСортировки, "УБЫВ"); + + Если ВерсииДляСортировки.Количество() = 0 Тогда + ВызватьИсключение "Не найдено ни одной установленной версии EDT"; + КонецЕсли; + + Возврат Новый Структура("Версии, КаталогиEDT", ВерсииДляСортировки, КаталогиEDT); + +КонецФункции + +// скопировано из yard, код Abramov Dmitry +Функция КаталогиУстановкиЕДТПоУмолчанию() + + СистемнаяИнформация = Новый СистемнаяИнформация(); + Массив = Новый Массив(); + Если ЭтоWindows() Тогда + Массив.Добавить(ОбъединитьПути(СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений), "1C\1cedtstart\installations")); + Массив.Добавить("C:\Program Files\1C\1CE\components"); + Иначе + Массив.Добавить("~/.local/share/1C/1cedtstart/installations"); + Массив.Добавить("/opt/1C/1CE/components"); + КонецЕсли; + + Возврат Массив; + +КонецФункции + Процедура ДополнитьИнкрементнуюВыгрузкуПроекта(Конфигуратор, КаталогВыгрузки) ПутьКФайлуДополнительнойВыгрузки = ВременныеФайлы.НовоеИмяФайла(); @@ -390,7 +610,6 @@ Процедура Инициализация() - ВерсияПлагина = "1.3.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КомандыПлагина = Новый Массив; КомандыПлагина.Добавить("sync"); @@ -406,4 +625,4 @@ #КонецОбласти -Инициализация(); +Инициализация(); \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/increment.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/increment.os" index 114ef28..70294aa 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/increment.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/increment.os" @@ -9,7 +9,6 @@ Перем ИмяФайлаДампаКонфигурации; Перем ПутьКФайлуВерсийМетаданных; -Перем ОчиститьКаталогРабочейКопии; Перем ВыгрузкаИзмененийВозможна; Перем ИмяРасширения; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\320\272\320\260\320\244\320\276\321\200\320\274.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\320\272\320\260\320\244\320\276\321\200\320\274.os" index 2651d5e..fbc0ba4 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\320\272\320\260\320\244\320\276\321\200\320\274.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\320\272\320\260\320\244\320\276\321\200\320\274.os" @@ -1,3 +1,5 @@ +// BSLLS:LatinAndCyrillicSymbolInWord-off + #Использовать "../../bindata" #Использовать logos @@ -28,7 +30,7 @@ Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.unpackForm"); КомпонентаГотова = Ложь; - ЭтоСборкаEXE = ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE"; + ЭтоСборкаEXE = ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE"; // BSLLS:MagicNumber-off СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; @@ -62,7 +64,6 @@ КомандаUnpack.ДобавитьПараметр("-P"); КомандаUnpack.ДобавитьПараметр(ФайлРаспаковки); КомандаUnpack.ДобавитьПараметр(КаталогРаспаковки); - // КомандаUnpack.ПоказыватьВыводНемедленно(Истина); КодВозврата = КомандаUnpack.Исполнить(); @@ -87,7 +88,7 @@ Иначе ПутьКФайлу = ЗагрузчикДвоичныхДанных.ПолучитьПутьКФайлу("v8unpack.dll"); - //Лог.Отладка("Выполняю подключение из файла <%1>", ПутьКФайлу); + Лог.Отладка("Выполняю подключение из файла <%1>", ПутьКФайлу); ПодключитьВнешнююКомпоненту(ПутьКФайлу); КонецЕсли; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/limit.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/limit.os" index a78a9e3..e9d6a05 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/limit.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/limit.os" @@ -1,10 +1,8 @@ #Использовать logos -Перем ВерсияПлагина; Перем Лог; Перем КомандыПлагина; -Перем МассивНомеровВерсий; Перем Лимит; Перем Обработчик; Перем НачальнаяВерсия; @@ -144,7 +142,6 @@ Функция ОпределитьМаксимальнуюВерсиюСУчетомОграниченияСверху(Знач ТаблицаИсторииХранилища, Знач ТекущаяВерсия, Знач МаксимальнаяВерсия) МаксимальнаяВерсияДляРазбора = 0; - ЧислоВерсийПлюс = 0; Если МаксимальнаяВерсия <> 0 Тогда Попытка @@ -196,5 +193,3 @@ КонецПроцедуры Инициализация(); - - diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/plugin.os.template" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/plugin.os.template" index 5f23b49..ae9cca5 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/plugin.os.template" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/plugin.os.template" @@ -2,7 +2,6 @@ #Использовать logos #Использовать tempfiles -Перем ВерсияПлагина; Перем Лог; Перем КомандыПлагина; @@ -15,7 +14,7 @@ // Строка - текущая версия плагина // Функция Версия() Экспорт - Возврат ВерсияПлагина; + Возврат "1.0.0"; КонецФункции // Возвращает приоритет выполнения плагина @@ -109,7 +108,6 @@ Процедура Инициализация() - ВерсияПлагина = "1.3.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КомандыПлагина = Новый Массив; КомандыПлагина.Добавить("sync"); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/roboCopy.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/roboCopy.os" index 5fb38a7..2a72991 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/roboCopy.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/roboCopy.os" @@ -1,12 +1,9 @@ - #Использовать logos #Использовать tempfiles -Перем ВерсияПлагина; Перем Лог; Перем КомандыПлагина; - #Область Интерфейс_плагина // Возвращает версию плагина @@ -125,7 +122,6 @@ Процедура Инициализация() - ВерсияПлагина = "1.0.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КомандыПлагина = Новый Массив; КомандыПлагина.Добавить("sync"); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/smartTags.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/smartTags.os" index 19ed708..b456e6b 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/smartTags.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/smartTags.os" @@ -1,6 +1,5 @@ #Использовать logos -Перем ВерсияПлагина; Перем Лог; Перем Обработчик; Перем КомандыПлагина; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/syncRemote.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/syncRemote.os" index ec8d0ca..6419cff 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/syncRemote.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/syncRemote.os" @@ -2,7 +2,6 @@ #Использовать logos #Использовать gitrunner -Перем ВерсияПлагина; Перем Лог; Перем КомандыПлагина; @@ -16,6 +15,7 @@ Перем КоличествоКоммитовДоPush; Перем СчетчикКоммитов; Перем ОтправлятьТеги; +Перем PushOptions; Перем ГитРепозиторий; @@ -27,7 +27,7 @@ // Строка - текущая версия плагина // Функция Версия() Экспорт - Возврат "1.6.0"; + Возврат "2.0.0"; КонецФункции // Возвращает приоритет выполнения плагина @@ -88,6 +88,7 @@ ПолучитьИзменения = Ложь; ОтправитьИзменения = Ложь; ОтправлятьТеги = Ложь; + PushOptions = ""; КоличествоКоммитовДоPush = 0; СчетчикКоммитов = 0; @@ -103,20 +104,25 @@ Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды); - //КлассРеализации.Опция("b branch", "master", "<имя ветки git>").ВОкружении("GITSYNC_BRANCH"); - КлассРеализации.Опция("P push", Ложь, "[*sync-remote] Флаг отправки изменений на удаленный репозиторий") + КлассРеализации.Опция("PS push", Ложь, "[*sync-remote] Флаг отправки изменений на удаленный репозиторий") .Флаг() .ВОкружении("GITSYNC_REMOTE_PUSH"); КлассРеализации.Опция("G pull", Ложь, "[*sync-remote] Флаг получения изменений из удаленный репозитория перед синхронизацией") .Флаг() .ВОкружении("GITSYNC_REMOTE_PULL"); + КлассРеализации.Опция("b branch", "master", "[*sync-remote] Имя ветки") + .ТСтрока() + .ВОкружении("GITSYNC_REMOTE_BRANCH"); КлассРеализации.Опция("T push-tags", Ложь, "[*sync-remote] Флаг отправки тегов по версиям") .Флаг() .ВОкружении("GITSYNC_REMOTE_PUSH_TAGS"); КлассРеализации.Опция("n push-n-commits", 0, "[*sync-remote] <число> количество коммитов до промежуточной отправки на удаленный сервер") .ТЧисло() .ВОкружении("GITSYNC_REMOTE_PUSH_N_COMMITS"); - + КлассРеализации.Опция("O push-options", "", "[*sync-remote] Дополнительные параметры для команды push, разделенные ;") + .ТСтрока() + .ВОкружении("GITSYNC_PUSH_OPTIONS"); + КлассРеализации.Аргумент("URL", "", "[*sync-remote] Адрес удаленного репозитория GIT.") .ВОкружении("GITSYNC_REPO_URL") .Обязательный(Ложь); @@ -131,13 +137,16 @@ ПолучитьИзменения = ПараметрыКоманды.Параметр("pull", Ложь); ОтправитьИзменения = ПараметрыКоманды.Параметр("push", Ложь); ОтправлятьТеги = ПараметрыКоманды.Параметр("push-tags", Ложь); + PushOptions = СтрРазделить(ПараметрыКоманды.Параметр("push-options", ""), ";"); КоличествоКоммитовДоPush = ПараметрыКоманды.Параметр("push-n-commits", 0); - Лог.Отладка("Установлена отправка изменений <%1> ", ОтправитьИзменения); Лог.Отладка("Установлено получение изменений <%1> ", ПолучитьИзменения); + Лог.Отладка("Установлено имя ветки <%1> ", ИмяВетки); + Лог.Отладка("Установлена отправка изменений <%1> ", ОтправитьИзменения); Лог.Отладка("Установлено количество коммитов <%1>, после которых осуществляется отправка", КоличествоКоммитовДоPush); Лог.Отладка("Установлен флаг отправки меток в значение <%1> выгрузки версий", ОтправлятьТеги); + Лог.Отладка("Установлены дополнительные параметры команды push: <%1>", СтрСоединить(PushOptions, ", ")); КонецПроцедуры @@ -198,6 +207,12 @@ ПараметрыКомандыPush.Добавить(СтрЗаменить(URLРепозитория, "%", "%%")); ПараметрыКомандыPush.Добавить("-v"); + Для Каждого Опция Из PushOptions Цикл + Если Не ПустаяСтрока(Опция) Тогда + ПараметрыКомандыPush.Добавить("-o " + Опция); + КонецЕсли; + КонецЦикла; + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКомандыPush); Если ОтправлятьТеги Тогда @@ -207,6 +222,12 @@ ПараметрыКомандыPush.Добавить(СтрЗаменить(URLРепозитория, "%", "%%")); ПараметрыКомандыPush.Добавить("--tags"); + Для Каждого Опция Из PushOptions Цикл + Если Не ПустаяСтрока(Опция) Тогда + ПараметрыКомандыPush.Добавить("-o " + Опция); + КонецЕсли; + КонецЦикла; + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКомандыPush); КонецЕсли; @@ -230,7 +251,6 @@ Процедура Инициализация() - ВерсияПлагина = "1.3.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КомандыПлагина = Новый Массив; КомандыПлагина.Добавить("sync"); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/tool1CD.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/tool1CD.os" index 711a736..5b2d31e 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/tool1CD.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/tool1CD.os" @@ -3,7 +3,6 @@ #Использовать "./internal/tool1cd" #Использовать tempfiles -Перем ВерсияПлагина; Перем Лог; Перем Обработчик; Перем КоличествоЦикловОжиданияЛицензии; @@ -355,7 +354,6 @@ Процедура Инициализация() - ВерсияПлагина = "1.3.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КомандыПлагина = Новый Массив; КомандыПлагина.Добавить("sync"); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/unpackForm.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/unpackForm.os" index f0a9c2c..83d7699 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/unpackForm.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/unpackForm.os" @@ -1,7 +1,6 @@ #Использовать logos #Использовать "./internal/v8unpack" -Перем ВерсияПлагина; Перем Лог; Перем Обработчик; Перем КомандыПлагина; @@ -177,7 +176,6 @@ Процедура Инициализация() - ВерсияПлагина = "1.3.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КомандыПлагина = Новый Массив; КомандыПлагина.Добавить("sync"); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" index 285f427..6da2875 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" @@ -15,6 +15,7 @@ Перем ПользовательБД; // Строка - имя пользователя базы данных Перем ПарольБД; // Строка - пароль пользователя базы данных Перем Инкрементально; // Булево - Истина - будет выполнена инкрементальная выгрузка если возможно +Перем ЧислоПотоков; // Число - 0 - Количество потоков используемых при экспорте. Перем ИнкрементальнаяВыгрузкаВозможна; // Булево - Истина - инкрементальная выгрузка возможна Перем ПутьКФайлуДампаИзменений; // Строка - путь к файлу ConfigDumpInfo.xml @@ -27,7 +28,7 @@ // Строка - текущая версия плагина // Функция Версия() Экспорт - Возврат "1.6.0"; + Возврат "2.0.0"; КонецФункции // Возвращает приоритет выполнения плагина @@ -92,11 +93,7 @@ ПользовательБД = "sa"; ПарольБД = ""; Инкрементально = Ложь; - - Если НЕ (ВРег(ТекущаяКоманда) = "ALL" - ИЛИ ВРег(ТекущаяКоманда) = "SYNC") Тогда - Возврат; - КонецЕсли; + ЧислоПотоков = 0; МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); @@ -134,7 +131,7 @@ Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды); - КлассРеализации.Опция("d ibcmd-data", "", "[*use-ibcmd] рабочий каталог утилиты ibcmd") + КлассРеализации.Опция("ibcmd-data", "", "[*use-ibcmd] рабочий каталог утилиты ibcmd") .ТСтрока() .ВОкружении("GITSYNC_IBCMD_DATA"); @@ -157,6 +154,11 @@ КлассРеализации.Опция("P ibcmd-db-pwd", "", "[*use-ibcmd] пароль пользователя базы данных (при использовании ibcmd)") .ТСтрока() .ВОкружении("GITSYNC_IBCMD_DB_PWD"); + + КлассРеализации.Опция("j ibcmd-threads", 0, "[*use-ibcmd] Количество потоков используемых при экспорте") + .ТЧисло() + .ВОкружении("GITSYNC_IBCMD_THREADS"); + КлассРеализации.Опция("i increment", Ложь, "[*use-ibcmd] флаг использования инкрементальной выгрузки конфигурации, если возможно") @@ -173,6 +175,7 @@ ИмяБД = ПараметрыКоманды.Параметр("ibcmd-db-name" , ""); ПользовательБД = ПараметрыКоманды.Параметр("ibcmd-db-user" , "sa"); ПарольБД = ПараметрыКоманды.Параметр("ibcmd-db-pwd" , ""); + ЧислоПотоков = ПараметрыКоманды.Параметр("ibcmd-threads" , 0); Если НЕ Инкрементально Тогда Инкрементально = ПараметрыКоманды.Параметр("increment", Ложь); КонецЕсли; @@ -203,8 +206,8 @@ ВыгрузитьКонфигурациюВФайлыIBCMD(Конфигуратор, КаталогВыгрузки); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - Лог.Ошибка("Невозможно выгрузить конфигурацию в файлы. Ошибка:%1%2", Символы.ПС, ТекстОшибки); - ВызватьИсключение; + ТекстОшибки = СтрШаблон("Невозможно выгрузить конфигурацию в файлы. Ошибка:%1%2", Символы.ПС, ТекстОшибки); + ВызватьИсключение ТекстОшибки; КонецПопытки; КонецПроцедуры @@ -238,9 +241,12 @@ КомандаIBCMD = Новый Команда; КомандаIBCMD.УстановитьКоманду(ПутьКIBCMD); КомандаIBCMD.ПоказыватьВыводНемедленно(Истина); - КомандаIBCMD.УстановитьКодировкуВывода("UTF-8"); КомандаIBCMD.ДобавитьПараметр("infobase config export"); - КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--data=%1", РабочийКаталогIBCMD)); + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--data=""%1""", РабочийКаталогIBCMD)); + + Если ЧислоПотоков > 0 Тогда + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--threads=%1", ЧислоПотоков)); + КонецЕсли; ДобавитьПараметрыПодключенияКИБ(КомандаIBCMD, Конфигуратор); @@ -263,9 +269,10 @@ Если КодВозврата <> 0 Тогда ТекстОшибки = КомандаIBCMD.ПолучитьВывод(); - Лог.КритичнаяОшибка("Не удалось выгрузить конфигурацию в файлы с использованием IBCMD:%1%2", - Символы.ПС, - ТекстОшибки); + ТекстОшибки = СтрШаблон("Не удалось выгрузить конфигурацию в файлы с использованием IBCMD:%1%2", + Символы.ПС, + ТекстОшибки); + ВызватьИсключение ТекстОшибки; КонецЕсли; КонецПроцедуры // ВыгрузитьКонфигурациюВФайлыIBCMD() @@ -311,7 +318,7 @@ КомандаIBCMD.ПоказыватьВыводНемедленно(Ложь); КомандаIBCMD.УстановитьКодировкуВывода("UTF-8"); КомандаIBCMD.ДобавитьПараметр("infobase config export status"); - КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--data=%1", РабочийКаталогIBCMD)); + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--data=""%1""", РабочийКаталогIBCMD)); ДобавитьПараметрыПодключенияКИБ(КомандаIBCMD, Конфигуратор); @@ -323,28 +330,28 @@ КодВозврата = КомандаIBCMD.Исполнить(); - Если КодВозврата <> 0 Тогда - ТекстОшибки = КомандаIBCMD.ПолучитьВывод(); - Лог.КритичнаяОшибка("Не удалось получить информацию об изменениях конфигурации:%1%2", - Символы.ПС, - ТекстОшибки); - КонецЕсли; - - ФайлПроверки = Новый Файл(ПутьКФайлуПроверки); - - Если ФайлПроверки.Существует() Тогда - СтрокаПолныйДамп = "modified: all"; - ЧтениеФайла = Новый ЧтениеТекста(ПутьКФайлуПроверки); - СтрокаПроверки = Лев(ЧтениеФайла.ПрочитатьСтроку(), СтрДлина(СтрокаПолныйДамп)); - - Если Не ПустаяСтрока(СокрЛП(СтрокаПроверки)) Тогда - - Лог.Отладка("Строка проверки на возможность выгрузки конфигурации: <%1> = <%2> ", СтрокаПолныйДамп, СтрокаПроверки); - Результат = НЕ (ВРег(СтрокаПроверки) = ВРег(СтрокаПолныйДамп)); + Если КодВозврата = 0 Тогда + ФайлПроверки = Новый Файл(ПутьКФайлуПроверки); + Если ФайлПроверки.Существует() Тогда + СтрокаПолныйДамп = "modified: all"; + ЧтениеФайла = Новый ЧтениеТекста(ПутьКФайлуПроверки); + СтрокаПроверки = Лев(ЧтениеФайла.ПрочитатьСтроку(), СтрДлина(СтрокаПолныйДамп)); + + Если Не ПустаяСтрока(СокрЛП(СтрокаПроверки)) Тогда + + Лог.Отладка("Строка проверки на возможность выгрузки конфигурации: <%1> = <%2> ", СтрокаПолныйДамп, СтрокаПроверки); + Результат = НЕ (ВРег(СтрокаПроверки) = ВРег(СтрокаПолныйДамп)); + + КонецЕсли; + ЧтениеФайла.Закрыть(); + УдалитьФайлы(ПутьКФайлуПроверки); КонецЕсли; - ЧтениеФайла.Закрыть(); - УдалитьФайлы(ПутьКФайлуПроверки); + Иначе + ТекстОшибки = КомандаIBCMD.ПолучитьВывод(); + Лог.Ошибка("Не удалось получить информацию об изменениях конфигурации:%1%2", + Символы.ПС, + ТекстОшибки); КонецЕсли; Лог.Отладка("Инкрементальная выгрузка конфигурации - %1", ?(Результат, "ВОЗМОЖНА", "НЕВОЗМОЖНА")); @@ -401,7 +408,7 @@ Если ЗначениеЗаполнено(Пользователь) Тогда Команда.ДобавитьПараметр(СтрШаблон("--user=%1", Пользователь)); Если ЗначениеЗаполнено(Пароль) Тогда - Команда.ДобавитьПараметр(СтрШаблон("--pwd=%1", Пароль)); + Команда.ДобавитьПараметр(СтрШаблон("--password=%1", Пароль)); КонецЕсли; КонецЕсли; diff --git a/tasks/coverage.os b/tasks/coverage.os index f75160e..128cbd6 100644 --- a/tasks/coverage.os +++ b/tasks/coverage.os @@ -1,30 +1,70 @@ +#Использовать 1commands #Использовать fs #Использовать coverage -#Использовать 1commands -ФС.ОбеспечитьПустойКаталог("coverage"); -ПутьКСтат = "coverage/stat.json"; +ИмяПакета = "gitsync-plugins"; + +ИмяКаталогаФайловПокрытия = "coverage"; +ИмяОбщегоФайлаПокрытия = "stat.json"; +ШаблонИменФайловПокрытия = "*.json"; + +ФС.ОбеспечитьПустойКаталог(ИмяКаталогаФайловПокрытия); +ПутьКСтат = ОбъединитьПути(ИмяКаталогаФайловПокрытия, ИмяОбщегоФайлаПокрытия); + +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; Команда = Новый Команда; Команда.УстановитьКоманду("oscript"); -Команда.ДобавитьПараметр("-encoding=utf-8"); -Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат)); -Команда.ДобавитьПараметр("tasks/test.os"); +Если НЕ ЭтоWindows Тогда + Команда.ДобавитьПараметр("-encoding=utf-8"); +КонецЕсли; +Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат)); +Команда.ДобавитьПараметр("tasks/test.os coverage"); Команда.ПоказыватьВыводНемедленно(Истина); КодВозврата = Команда.Исполнить(); Файл_Стат = Новый Файл(ПутьКСтат); -ИмяПакета = "gitsync-plugins"; +// Заменяем пути в файлах на ./src +ПутьКИсходникам = ОбъединитьПути(ТекущийСценарий(), "..", "src"); +КаталогИсходников = Новый Файл(ПутьКИсходникам).ПолноеИмя; +КаталогИсходников = СтрЗаменить(КаталогИсходников, "\", "\\"); + +// взято из gitsync +СистемнаяИнформация = Новый СистемнаяИнформация; +ОбщийКаталогДанныхПриложений = СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений); +ПутьУстановкиПлагинов = ОбъединитьПути(ОбщийКаталогДанныхПриложений, "gitsync", "plugins"); +ПутьИсходниковУстановленныхПлагинов = ОбъединитьПути(ПутьУстановкиПлагинов, "gitsync-plugins", "src"); +ПолноеИмяКаталогаИсходниковУстановленныхПлагинов = Новый Файл(ПутьИсходниковУстановленныхПлагинов).ПолноеИмя; + +ПолноеИмяКаталогаИсходниковУстановленныхПлагинов = СтрЗаменить(ПолноеИмяКаталогаИсходниковУстановленныхПлагинов, "\", "\\"); + +ФайлыСтатистики = НайтиФайлы(ИмяКаталогаФайловПокрытия, ШаблонИменФайловПокрытия); +Для Каждого ФайлСтатистики Из ФайлыСтатистики Цикл + + ЧтениеТекста = Новый ЧтениеТекста(ФайлСтатистики.ПолноеИмя, КодировкаТекста.UTF8NoBOM); + Содержимое = ЧтениеТекста.Прочитать(); + ЧтениеТекста.Закрыть(); + + Содержимое = СтрЗаменить(Содержимое, ПолноеИмяКаталогаИсходниковУстановленныхПлагинов, КаталогИсходников); + + ЗаписьТекста = Новый ЗаписьТекста(ФайлСтатистики.ПолноеИмя, КодировкаТекста.UTF8NoBOM); + ЗаписьТекста.Записать(Содержимое); + ЗаписьТекста.Закрыть(); + +КонецЦикла; ПроцессорГенерации = Новый ГенераторОтчетаПокрытия(); ПроцессорГенерации.ОтносительныеПути() + .РабочийКаталог(ИмяКаталогаФайловПокрытия) + .ИмяФайлаСтатистики(ШаблонИменФайловПокрытия) .ФайлСтатистики(Файл_Стат.ПолноеИмя) .GenericCoverage() .Cobertura() .Clover(ИмяПакета) .Сформировать(); -ЗавершитьРаботу(КодВозврата); \ No newline at end of file +ЗавершитьРаботу(0); // TODO КодВозврата diff --git a/tasks/install-gitsync.os b/tasks/install-gitsync.os index 2f1c21d..1153014 100644 --- a/tasks/install-gitsync.os +++ b/tasks/install-gitsync.os @@ -36,20 +36,19 @@ КомандаOpm = Новый Команда; КомандаOpm.УстановитьРабочийКаталог(Каталог); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install"); - КомандаOpm.ДобавитьПараметр("-l"); + КомандаOpm.ДобавитьПараметр("install"); + КомандаOpm.ДобавитьПараметр("-l"); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); - КомандаOpm = Новый Команда; КомандаOpm.УстановитьРабочийКаталог(Каталог); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("build"); - КомандаOpm.ДобавитьПараметр("--mf"); - КомандаOpm.ДобавитьПараметр(ПутьКМанифестуСборки); - КомандаOpm.ДобавитьПараметр(Каталог); + КомандаOpm.ДобавитьПараметр("build"); + КомандаOpm.ДобавитьПараметр("--mf"); + КомандаOpm.ДобавитьПараметр(ПутьКМанифестуСборки); + КомандаOpm.ДобавитьПараметр(Каталог); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); @@ -58,40 +57,42 @@ ВызватьИсключение КомандаOpm.ПолучитьВывод(); КонецЕсли; - МассивФайлов = НайтиФайлы(Каталог, "*.ospx"); + МассивФайлов = НайтиФайлы(Каталог, "gitsync*.ospx"); Если МассивФайлов.Количество() = 0 Тогда ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета gitsync", "Не найден собранный файл пакета gitsync"); КонецЕсли; - ФайлПлагина = МассивФайлов[0].ПолноеИмя; - - КаталогПроектаGitsync = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "bin"); - - УстановитьПеременнуюСреды("OSCRIPTBIN", КаталогПроектаGitsync); - - ФС.ОбеспечитьКаталог(КаталогПроектаGitsync); + ФайлПакетаGitsync = МассивФайлов[0].ПолноеИмя; - Лог.Информация("Установка в каталог проекта <%1>", КаталогПроектаGitsync); + КореньПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); + + // устанавливать gitsync из файла с параметром --dest + // необходимо в каталог, отличный от ./bin, потому что + // на Linux имя каталога установки ./bin/gitsync + // и имя исполняемого файла ./bin/gitsync совпадут + КаталогУстановкиGitsync = ОбъединитьПути(КореньПроекта, "bin_gitsync"); - Лог.Информация("Установка пакета из файла <%1>", ФайлПлагина); + ФС.ОбеспечитьКаталог(КаталогУстановкиGitsync); + + Лог.Информация("Установка в каталог проекта <%1>", КаталогУстановкиGitsync); - УстановитьПеременнуюСреды("OSCRIPTBIN", КаталогПроектаGitsync); + Лог.Информация("Установка пакета из файла <%1>", ФайлПакетаGitsync); КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(КаталогПроектаGitsync); + КомандаOpm.УстановитьРабочийКаталог(КореньПроекта); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install"); - КомандаOpm.ДобавитьПараметр("-f"); - КомандаOpm.ДобавитьПараметр(ФайлПлагина); - КомандаOpm.ДобавитьПараметр("--dest"); - КомандаOpm.ДобавитьПараметр(КаталогПроектаGitsync); + КомандаOpm.ДобавитьПараметр("install"); + КомандаOpm.ДобавитьПараметр("-f"); + КомандаOpm.ДобавитьПараметр(ФайлПакетаGitsync); + КомандаOpm.ДобавитьПараметр("--dest"); + КомандаOpm.ДобавитьПараметр(КаталогУстановкиGitsync); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); Если КодВозврата <> 0 Тогда - ВызватьИсключение СтрШаблон("Ошибка установки opm из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); + ВызватьИсключение СтрШаблон("Ошибка установки opm из <%1> по причине <%2>", ФайлПакетаGitsync, КомандаOpm.ПолучитьВывод()); КонецЕсли; КонецПроцедуры @@ -114,5 +115,3 @@ Лог = Логирование.ПолучитьЛог("task.install-opm"); ПолезнаяРабота(); - - diff --git a/tasks/install-plugins.os b/tasks/install-plugins.os new file mode 100644 index 0000000..67cd587 --- /dev/null +++ b/tasks/install-plugins.os @@ -0,0 +1,49 @@ +#Использовать gitrunner + +Перем Лог; + +Процедура УстановитьТекущиеПлагины(Знач Каталог) + + Лог.Информация("=== Собираю пакет с плагинами из текущего каталога ==="); + + КомандаOpm = Новый Команда; + КомандаOpm.УстановитьРабочийКаталог(Каталог); + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("build"); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + + КодВозврата = КомандаOpm.Исполнить(); + + МассивФайлов = НайтиФайлы(Каталог, "gitsync-plugins*.ospx"); + + Если МассивФайлов.Количество() = 0 Тогда + Сообщение = СтрШаблон("В каталоге %1 найден собранный файл пакета gitsync-plugins", Каталог); + ВызватьИсключение Новый ИнформацияОбОшибке("Не найден собранный пакет gitsync-plugins", Сообщение); + КонецЕсли; + + ФайлПлагина = МассивФайлов[0].ПолноеИмя; + + ИсполнительGitSync = ОбъединитьПути(Каталог, "bin_gitsync/gitsync/src/cmd/gitsync.os"); + + Лог.Информация("=== Установка плагинов из файла <%1> ===", ФайлПлагина); + + КомандаOpm = Новый Команда; + КомандаOpm.УстановитьРабочийКаталог(Каталог); + КомандаOpm.УстановитьКоманду("oscript"); + КомандаOpm.ДобавитьПараметр(ИсполнительGitSync); + КомандаOpm.ДобавитьПараметр("p i"); + КомандаOpm.ДобавитьПараметр("-f"); + КомандаOpm.ДобавитьПараметр(ФайлПлагина); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение СтрШаблон("Ошибка установки плагинов из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); + КонецЕсли; + +КонецПроцедуры + +Лог = Логирование.ПолучитьЛог("task.install-opm"); + +УстановитьТекущиеПлагины(ОбъединитьПути(ТекущийСценарий().Каталог, "..")); diff --git a/tasks/make.os b/tasks/make.os index de2ccd3..9dfefbb 100644 --- a/tasks/make.os +++ b/tasks/make.os @@ -4,7 +4,6 @@ Перем Лог; Перем КаталогПроекта; - Процедура ВыполнитьСборкуEXE(КаталогУстановки) Лог.Информация("Выполнение создания exe в <%1>", КаталогУстановки); @@ -85,7 +84,6 @@ КонецПроцедуры - Процедура ОбработатьСтруктуруКаталоговПоСоглашению(Путь, МассивПлагинов) КаталогиКлассов = Новый Массив; @@ -100,7 +98,6 @@ КонецЦикла; - КонецПроцедуры Процедура ОбработатьКаталогКлассов(Знач Путь, МассивПлагинов) @@ -112,8 +109,7 @@ Для Каждого Файл Из Файлы Цикл Сообщить(СтрШаблон(" класс (по соглашению) %1, файл %2", Файл.ИмяБезРасширения, Файл.ПолноеИмя)); СтандартнаяОбработка = Ложь; - // ДобавитьКласс(Файл.ПолноеИмя, Файл.ИмяБезРасширения); - + МассивПлагинов.Добавить(Файл.ИмяБезРасширения); КонецЦикла; @@ -126,21 +122,16 @@ КаталогСборки = ВременныеФайлы.СоздатьКаталог(); КаталогУстановки = ОбъединитьПути(КаталогПроекта, "bin"); - ПодготовитьПлагины(КаталогУстановки, КаталогПроекта); - ВыполнитьСборкуEXE(КаталогУстановки); ВременныеФайлы.УдалитьФайл(КаталогСборки); - //ВременныеФайлы.УдалитьФайл(КаталогУстановки); КонецПроцедуры - ФайлКаталогПроекта = Новый Файл(ОбъединитьПути(ТекущийСценарий().Каталог, "..")); КаталогПроекта = ФайлКаталогПроекта.ПолноеИмя; Лог = Логирование.ПолучитьЛог("task.install-opm"); -// Лог.УстановитьУровень(УровниЛОга.отладка); ПолезнаяРабота(); diff --git a/tasks/test.os b/tasks/test.os index 2200b09..96a2493 100644 --- a/tasks/test.os +++ b/tasks/test.os @@ -1,82 +1,79 @@ -// #Использовать "../src" #Использовать 1bdd #Использовать 1testrunner +#Использовать fs -Функция ПрогнатьТесты() - - Тестер = Новый Тестер; +Функция ПрогнатьФичи(Знач КаталогФайловПокрытия, Знач ПутьФич = "features") - ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests"); - ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); + ПутьКОтчетам = ОбъединитьПути("build", "reports"); + ФС.ОбеспечитьКаталог(ПутьКОтчетам); - КаталогТестов = Новый Файл(ПутьКТестам); - Если Не КаталогТестов.Существует() Тогда - Сообщить(СтрШаблон("Не найден каталог тестов %1", ПутьКТестам)); - Возврат Истина; - КонецЕсли; - - РезультатТестирования = Тестер.ТестироватьКаталог( - КаталогТестов, - Новый Файл(ПутьКОтчетуJUnit) - ); + ПутьОтчетаJUnit = ОбъединитьПути(ПутьКОтчетам, "bdd-log.xml"); - Успешно = РезультатТестирования = 0; - - Возврат Успешно; -КонецФункции // ПрогнатьТесты() + КаталогФич = ОбъединитьПути(".", ПутьФич); -Функция ПрогнатьФичи() - - ПутьОтчетаJUnit = "./bdd-log.xml"; + Файл_КаталогФич = Новый Файл(КаталогФич); - КаталогФич = ОбъединитьПути(".", "features"); + ИсполнительБДД = Новый ИсполнительБДД; - Файл_КаталогФич = Новый Файл(КаталогФич); - Если Не Файл_КаталогФич.Существует() Тогда - Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич)); - Возврат Истина; + Если ЗначениеЗаполнено(КаталогФайловПокрытия) Тогда + ИсполнительБДД.СохранитьВКонтекст("ПризнакСтатистикиСкриптовOnescript", Новый Файл(КаталогФайловПокрытия)); КонецЕсли; - ИсполнительБДД = Новый ИсполнительБДД; РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич); ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); - СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся; + СтатусыВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения(); + + СтатусВыполнения = СтатусыВыполнения.НеВыполнялся; Если РезультатыВыполнения.Строки.Количество() > 0 Тогда - + СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); - + ИсполнительБДД.ПоказатьПроблемныеСценарии(РезультатыВыполнения); + + ИсполнительБДД.ВывестиИтоговыеРезультатыВыполнения(РезультатыВыполнения, Файл_КаталогФич.ЭтоКаталог()); КонецЕсли; ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit; ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit); - Сообщить(СтрШаблон("Результат прогона фич <%1> - |", ИтоговыйРезультатВыполнения)); + Сообщить(СтрШаблон("Результат прогона фич <%1>. Путь %2 + |", ИтоговыйРезультатВыполнения, ПутьФич)); - Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался; -КонецФункции // ПрогнатьФичи() + Возврат ИтоговыйРезультатВыполнения <> СтатусыВыполнения.Сломался; +КонецФункции -// Попытка -// ТестыПрошли = ПрогнатьТесты(); +ИмяКаталогаФайловПокрытия = "coverage"; -// Исключение -// ТестыПрошли = Ложь; -// Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно -// |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); -// КонецПопытки; +// основной код + +ТекКаталог = ТекущийКаталог(); + +КаталогФайловПокрытия = ""; + +ИспользуетсяПокрытиеКода = Ложь; +Для каждого Элемент Из АргументыКоманднойСтроки Цикл + Если Элемент = "coverage" Тогда + + КаталогФайловПокрытия = ОбъединитьПути(ТекущийКаталог(), ".", ИмяКаталогаФайловПокрытия); + ФС.ОбеспечитьПустойКаталог(КаталогФайловПокрытия); + + Прервать; + КонецЕсли; +КонецЦикла; + +УстановитьТекущийКаталог(ТекКаталог); Попытка - ФичиПрошли = ПрогнатьФичи(); + ФичиПрошли = ПрогнатьФичи(КаталогФайловПокрытия, "features"); Исключение ФичиПрошли = Ложь; Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; +Сообщить(СтрШаблон("Результат прогона основных фич <%1> +|", ФичиПрошли)); + Если Не ФичиПрошли Тогда ВызватьИсключение "Тестирование завершилось неудачно!"; -Иначе - Сообщить(СтрШаблон("Результат прогона тестов <%1> - |", ФичиПрошли)); КонецЕсли; diff --git a/tasks/testing-build.os b/tasks/testing-build.os deleted file mode 100644 index 646b3d1..0000000 --- a/tasks/testing-build.os +++ /dev/null @@ -1,96 +0,0 @@ -#Использовать gitrunner -#Использовать tempfiles -#Использовать fs - -Перем Лог; - -Процедура ПолучитьИсходники(Знач URLРепозитория, Знач Ветка, Знач Каталог) - - ГитРепозиторий = Новый ГитРепозиторий; - - ГитРепозиторий.УстановитьРабочийКаталог(Каталог); - - ГитРепозиторий.КлонироватьРепозиторий(URLРепозитория, Каталог); - ГитРепозиторий.ПерейтиВВетку(Ветка); - -КонецПроцедуры - -Процедура УстановитьПакет(Знач Каталог, ПутьКМанифестуСборки) - - Лог.Информация("Каталог сборки <%1>", Каталог); - - Лог.Информация("Сборка пакета библиотеки"); - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(Каталог); - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("build"); - КомандаOpm.ДобавитьПараметр("--mf"); - КомандаOpm.ДобавитьПараметр(ПутьКМанифестуСборки); - КомандаOpm.ДобавитьПараметр(Каталог); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - - МассивФайлов = НайтиФайлы(Каталог, "*.ospx"); - - Если МассивФайлов.Количество() = 0 Тогда - ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета gitsync", "Не найден собранный файл пакета gitsync"); - КонецЕсли; - - ФайлПлагина = МассивФайлов[0].ПолноеИмя; - - ИсполнительGitSync = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "bin/gitsync/src/cmd/gitsync.os"); - - // ФС.ОбеспечитьКаталог(КаталогПроектаGitsync); - - // Лог.Информация("Установка в каталог проекта <%1>", КаталогПроектаGitsync); - - Лог.Информация("Установка пакета из файла <%1>", ФайлПлагина); - - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(Каталог); - КомандаOpm.УстановитьКоманду("oscript"); - КомандаOpm.ДобавитьПараметр("-encoding=utf-8"); - КомандаOpm.ДобавитьПараметр(ИсполнительGitSync); - КомандаOpm.ДобавитьПараметр("p c -a"); - - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(Каталог); - КомандаOpm.УстановитьКоманду("oscript"); - КомандаOpm.ДобавитьПараметр("-encoding=utf-8"); - КомандаOpm.ДобавитьПараметр(ИсполнительGitSync); - КомандаOpm.ДобавитьПараметр("p i"); - КомандаOpm.ДобавитьПараметр("-f"); - КомандаOpm.ДобавитьПараметр(ФайлПлагина); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение СтрШаблон("Ошибка установки плагинов из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); - КонецЕсли; - - ВременныеФайлы.УдалитьФайл(ФайлПлагина); - -КонецПроцедуры - -Процедура ПолезнаяРабота() - - ПутьКМанифестуСборки = "packagedef"; - - // ПолучитьИсходники(URLРепозитория, Ветка, КаталогСборки); - УстановитьПакет(ОбъединитьПути(ТекущийСценарий().Каталог, ".."), ПутьКМанифестуСборки); - - // ВременныеФайлы.УдалитьФайл(КаталогСборки); - -КонецПроцедуры - -Лог = Логирование.ПолучитьЛог("task.install-opm"); - -ПолезнаяРабота(); - - diff --git "a/tests/fixtures/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.mxl" "b/tests/fixtures/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.mxl" new file mode 100644 index 0000000..9f1abad Binary files /dev/null and "b/tests/fixtures/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.mxl" differ diff --git "a/tests/fixtures/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.mxl" "b/tests/fixtures/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.mxl" new file mode 100644 index 0000000..b0f5e2b Binary files /dev/null and "b/tests/fixtures/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\222\320\265\321\200\321\201\320\270\321\217\320\274\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217.mxl" differ