├── .gitignore ├── .travis.yml ├── build.cmd ├── features └── build.feature ├── packagedef ├── readme.md ├── src ├── cfe2cf.os ├── Классы │ ├── КомандаИзКаталогаИсходныхФайлов.os │ ├── КомандаИзФайлаРасширения.os │ └── КонверторРасширений.os └── Модули │ ├── ОбработкаФайлов.os │ └── ПараметрыПриложения.os ├── tasks ├── coverage.os └── test.os ├── tests └── Конвертация_test.os └── travis-ci.sh /.gitignore: -------------------------------------------------------------------------------- 1 | *.ospx 2 | tests.xml 3 | coverage/* 4 | bin 5 | tests-reports/* -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | language: generic 3 | 4 | notifications: 5 | email: false 6 | env: 7 | global: 8 | - CHANNEL=dev 9 | - PACKAGE_NAME=cfe2cf 10 | matrix: 11 | - OSCRIPT_VERSION=1_0_20 12 | - OSCRIPT_VERSION=night-build 13 | matrix: 14 | allow_failures: 15 | - env: OSCRIPT_VERSION=night-build 16 | 17 | services: 18 | - docker 19 | 20 | addons: 21 | sonarqube: true 22 | 23 | jdk: 24 | - oraclejdk8 25 | 26 | before_install: 27 | # Load cached docker images 28 | - if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi 29 | 30 | before_script: 31 | - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter 32 | - chmod +x ./cc-test-reporter 33 | - ./cc-test-reporter before-build 34 | 35 | after_script: 36 | - ./cc-test-reporter after-build --prefix "/home/travis/build/khorevaa/cli/coverage/" --exit-code $TRAVIS_TEST_RESULT 37 | 38 | before_cache: 39 | # Save tagged docker images 40 | - > 41 | mkdir -p $HOME/docker && docker images -a --filter='dangling=false' --format '{{.Repository}}:{{.Tag}} {{.ID}}' 42 | | xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz' 43 | install: 44 | - docker pull evilbeaver/onescript:1.0.19 45 | 46 | script: 47 | - docker version 48 | - docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log 49 | - grep 'Результат прогона тестов <Да>' /tmp/test.log 50 | after_success: 51 | # - bash <(curl -s https://codecov.io/bash) 52 | # - ./sonar-qube.sh 53 | 54 | cache: 55 | directories: 56 | - '$HOME/.m2/repository' 57 | - '$HOME/.sonar/cache' 58 | - '$HOME/docker' 59 | jobs: 60 | include: 61 | - stage: Сборка и публикация github 62 | script: skip 63 | before_deploy: 64 | - docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; oscript -make src/cfe2cf.os cfe2cf.exe ; exit' 65 | deploy: 66 | - provider: releases 67 | api_key: "$GITHUB_OAUTH_TOKEN" 68 | file_glob: true 69 | file: $PACKAGE_NAME*.exe 70 | skip_cleanup: true 71 | on: 72 | branch: master 73 | tags: true 74 | -------------------------------------------------------------------------------- /build.cmd: -------------------------------------------------------------------------------- 1 | oscript -make ./src/cfe2cf.os ./bin/cfe2cf.exe -------------------------------------------------------------------------------- /features/build.feature: -------------------------------------------------------------------------------- 1 | # language: ru 2 | 3 | Функционал: Проверка сборки продукта 4 | Как Пользователь 5 | Я хочу автоматически проверять сборку моего продукта 6 | Чтобы гарантировать возможность установку моего продукта у пользователей 7 | 8 | Контекст: Отключение отладки в логах 9 | Допустим Я выключаю отладку лога с именем "oscript.app.cfe2cf" 10 | И Я очищаю параметры команды "opm" в контексте 11 | 12 | Сценарий: Выполнение команды без параметров 13 | Когда Я добавляю параметр "build ." для команды "opm" 14 | И Я выполняю команду "opm" 15 | Тогда Вывод команды "opm" содержит "Сборка пакета завершена" 16 | И Вывод команды "opm" не содержит "Внешнее исключение" 17 | И Код возврата команды "opm" равен 0 -------------------------------------------------------------------------------- /packagedef: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////// 2 | // Описание пакета для сборки и установки 3 | // Полную документацию см. на hub.oscript.io/packaging 4 | // 5 | 6 | Описание.Имя("cfe2cf") 7 | .Версия("0.0.1") 8 | .Автор("Denis Kharchenko") 9 | .АдресАвтора("kharchenkodenis@gmail.com") 10 | .Описание("Приложение - Конвертор расширения .cfe в конфигурацию .cf") 11 | .ВерсияСреды("1.0.20") 12 | .ВключитьФайл("src") 13 | ///.ВключитьФайл("docs") 14 | //.ВключитьФайл("tests") 15 | //.ВключитьФайл("package-loader.os") 16 | //.ВключитьФайл("packagedef") 17 | .ЗависитОт("logos", "1.1.1") 18 | .ЗависитОт("cli", "0.9.10") 19 | .ЗависитОт("v8runner", "1.2.0") 20 | .ЗависитОт("fs") 21 | //.ЗависитОт("datetime", "0.1.0") 22 | .ЗависитОт("v8find") 23 | //.ЗависитОт("1bdd") // Необходимо установил для тестирования 24 | //.ЗависитОт("1testrunner") // Необходимо установил для тестирования 25 | // .ОпределяетКласс("КомандаИзКаталогаИсходныхФайлов", "src/Классы/КомандаИзКаталогаИсходныхФайлов.os") 26 | // .ОпределяетКласс("КомандаИзФайлаРасширения", "src/Классы/КомандаИзФайлаРасширения.os") 27 | // .ОпределяетКласс("КонверторРасширений", "src/Классы/КонверторРасширений.os") 28 | .ИсполняемыйФайл("src/cfe2cf.os","cfe2cf"); 29 | ; -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | [![Stars](https://img.shields.io/github/stars/best-tech/cfe2cf.svg?label=Github%20%E2%98%85&a)](https://github.com/best-tech/cfe2cf/stargazers) 2 | [![Release](https://img.shields.io/github/tag/best-tech/cfe2cf.svg?label=Last%20release&a)](https://github.com/best-tech/cfe2cf/releases) 3 | 4 | # Приложение - Конвертор расширения .cfe в конфигурацию .cf 5 | 6 | #### Поддерживаются режимы работы: 7 | 8 | - Конвертация из файла расширения (.cfe) 9 | - Конвертация из исходных файлов расширения 10 | 11 | ``` 12 | Приложение: cfe2cf 13 | Конвертор расширения .cfe в конфигурацию .cf 14 | 15 | Строка запуска: cfe2cf [ОПЦИИ] КОМАНДА [аргументы...] 16 | 17 | Опции: 18 | -v, --version показать версию и выйти 19 | 20 | Доступные команды: 21 | f, file Конвертация из файла расширения (.cfe) в файл конфигурации (.cf) 22 | s, source Конвертация из исходных файлов расширения (.cfe) в файл конфигурации (.cf) 23 | 24 | Для вывода справки по доступным командам наберите: cfe2cf КОМАНДА --help 25 | ``` 26 | 27 | ## Конвертация файла расширения 28 | Пример: 29 | 30 | `cfe2cf file -t c:/temp path/to/ext.cfe ИмяРасширения path/to/conf.cf` 31 | 32 | ``` 33 | Команда: f, file 34 | Конвертация из файла расширения (.cfe) в файл конфигурации (.cf) 35 | 36 | Строка запуска: cfe2cf f [ОПЦИИ] SRC NAME OUTPUT 37 | 38 | Аргументы: 39 | SRC Путь к входному файлу расширения (.cfe) 40 | NAME Имя расширения (-Extension) 41 | OUTPUT Путь к выходному файлу конфигурации (.cf) 42 | 43 | Опции: 44 | -t, --tempdir Путь к каталогу временных файлов 45 | ``` 46 | 47 | ## Конвертация из исходных файлов 48 | 49 | Пример: 50 | 51 | `cfe2cf file -t c:/temp path/to/ext.src ИмяРасширения path/to/conf.cf` 52 | 53 | ``` 54 | Команда: s, source 55 | Конвертация из исходных файлов расширения (.cfe) в файл конфигурации (.cf) 56 | 57 | Строка запуска: cfe2cf s [ОПЦИИ] SRC NAME OUTPUT 58 | 59 | Аргументы: 60 | SRC Путь папке исходных файлов 61 | NAME Имя расширения (-Extension) 62 | OUTPUT Путь к выходному файлу конфигурации (.cf) 63 | 64 | Опции: 65 | -t, --tempdir Путь к каталогу временных файлов 66 | ``` 67 | 68 | ### Собрать cfe2cf.exe 69 | 70 | `oscript -make src/cfe2cf.os cfe2cf.exe` -------------------------------------------------------------------------------- /src/cfe2cf.os: -------------------------------------------------------------------------------- 1 | #Использовать logos 2 | #Использовать cli 3 | #Использовать "." 4 | 5 | Перем Лог; 6 | 7 | /////////////////////////////////////////////////////////////////////////////// 8 | 9 | Процедура ВыполнитьПриложение() 10 | 11 | Приложение = Новый КонсольноеПриложение("cfe2cf", "Конвертор расширения .cfe в конфигурацию .cf"); 12 | Приложение.Версия("v version", ПараметрыПриложения.Версия()); 13 | 14 | Приложение.ДобавитьКоманду("f file", "Конвертация из файла расширения (.cfe) в файл конфигурации (.cf)", Новый КомандаИзФайлаРасширения); 15 | Приложение.ДобавитьКоманду("s source", "Конвертация из исходных файлов расширения (.cfe) в файл конфигурации (.cf)", Новый КомандаИзКаталогаИсходныхФайлов); 16 | 17 | Приложение.Запустить(АргументыКоманднойСтроки); 18 | 19 | КонецПроцедуры // ВыполнениеКоманды() 20 | 21 | 22 | /////////////////////////////////////////////////////// 23 | 24 | Лог = Логирование.ПолучитьЛог(ПараметрыПриложения.ИмяЛога()); 25 | 26 | Попытка 27 | 28 | ВыполнитьПриложение(); 29 | 30 | Исключение 31 | 32 | Сообщить(ОписаниеОшибки()); 33 | 34 | КонецПопытки; -------------------------------------------------------------------------------- /src/Классы/КомандаИзКаталогаИсходныхФайлов.os: -------------------------------------------------------------------------------- 1 | #Использовать cli 2 | #Использовать fs 3 | #Использовать logos 4 | 5 | Перем Лог; 6 | 7 | Процедура ОписаниеКоманды(Команда) Экспорт 8 | 9 | Команда.Опция("t tempdir", "", "Путь к каталогу временных файлов"); 10 | Команда.Опция("p platform","","Версия платформы"); 11 | 12 | Команда.Аргумент("SRC", "", "Путь папке исходных файлов"); 13 | Команда.Аргумент("NAME", "", "Имя расширения (-Extension)"); 14 | Команда.Аргумент("OUTPUT", "", "Путь к выходному файлу конфигурации (.cf)"); 15 | 16 | КонецПроцедуры 17 | 18 | Процедура ВыполнитьКоманду(Знач Команда) Экспорт 19 | 20 | ИмяФайлаРасширения = Команда.ЗначениеАргумента("SRC"); 21 | ИмяРасширения = Команда.ЗначениеАргумента("NAME"); 22 | ИмяФайлаКонфигурации = Команда.ЗначениеАргумента("OUTPUT"); 23 | КаталогВременныхФайлов = Команда.ЗначениеОпции("tempdir"); 24 | ВерсияПлатформы = Команда.ЗначениеОпции("platform"); 25 | 26 | Конвертор = Новый КонверторРасширений(); 27 | 28 | Конвертор.ИсходныйПуть = ИмяФайлаРасширения; 29 | Конвертор.ИмяРасширения = ИмяРасширения; 30 | Конвертор.ИмяФайлаКонфигурации = ИмяФайлаКонфигурации; 31 | Конвертор.КаталогВременныхФайлов = КаталогВременныхФайлов; 32 | Конвертор.ВерсияПлатформы = ВерсияПлатформы; 33 | 34 | Конвертор.ВыполнитьПреобразованиеИзИсходныхФайловРасширения(); 35 | 36 | УдалитьФайлы(Конвертор.КаталогВременныхФайлов); 37 | 38 | Конвертор.Лог.Информация(СтрШаблон("ОПЕРАЦИЯ ЗАВЕРШЕНА")); 39 | 40 | КонецПроцедуры 41 | 42 | Лог = Логирование.ПолучитьЛог("oscript.lib.cfe2cf.test"); -------------------------------------------------------------------------------- /src/Классы/КомандаИзФайлаРасширения.os: -------------------------------------------------------------------------------- 1 | #Использовать cli 2 | #Использовать fs 3 | 4 | Процедура ОписаниеКоманды(Команда) Экспорт 5 | 6 | Команда.Опция("t tempdir", "", "Путь к каталогу временных файлов"); 7 | Команда.Опция("pl platform","","Версия платформы"); 8 | 9 | Команда.Аргумент("SRC", "", "Путь к входному файлу расширения (.cfe)"); 10 | Команда.Аргумент("NAME", "", "Имя расширения (-Extension)"); 11 | Команда.Аргумент("OUTPUT", "", "Путь к выходному файлу конфигурации (.cf)"); 12 | 13 | КонецПроцедуры 14 | 15 | Процедура ВыполнитьКоманду(Знач Команда) Экспорт 16 | 17 | ИмяФайлаРасширения = Команда.ЗначениеАргумента("SRC"); 18 | ИмяРасширения = Команда.ЗначениеАргумента("NAME"); 19 | ИмяФайлаКонфигурации = Команда.ЗначениеАргумента("OUTPUT"); 20 | КаталогВременныхФайлов = Команда.ЗначениеОпции("tempdir"); 21 | ВерсияПлатформы = Команда.ЗначениеОпции("platform"); 22 | 23 | Конвертор = Новый КонверторРасширений(); 24 | 25 | Конвертор.ИсходныйПуть = ИмяФайлаРасширения; 26 | Конвертор.ИмяРасширения = ИмяРасширения; 27 | Конвертор.ИмяФайлаКонфигурации = ИмяФайлаКонфигурации; 28 | Конвертор.КаталогВременныхФайлов = КаталогВременныхФайлов; 29 | Конвертор.ВерсияПлатформы = ВерсияПлатформы; 30 | 31 | Конвертор.ВыполнитьПреобразованиеИзФайлаРасширения(); 32 | 33 | УдалитьФайлы(Конвертор.КаталогВременныхФайлов); 34 | 35 | Конвертор.Лог.Информация(СтрШаблон("ОПЕРАЦИЯ ЗАВЕРШЕНА")); 36 | 37 | КонецПроцедуры 38 | 39 | -------------------------------------------------------------------------------- /src/Классы/КонверторРасширений.os: -------------------------------------------------------------------------------- 1 | #Использовать fs 2 | #Использовать logos 3 | #Использовать v8runner 4 | #Использовать v8find 5 | 6 | Перем Лог Экспорт; 7 | 8 | Перем ИсходныйПуть Экспорт; 9 | Перем ИмяРасширения Экспорт; 10 | Перем ИмяФайлаКонфигурации Экспорт; 11 | Перем КаталогВременныхФайлов Экспорт; 12 | Перем ВерсияПлатформы Экспорт; 13 | 14 | 15 | Перем Конфигуратор; 16 | Перем ИмяВременнойБазы; 17 | Перем КаталогИсходныхФайлов; 18 | 19 | Процедура ВыполнитьПреобразованиеИзФайлаРасширения() Экспорт 20 | 21 | Инициализировать(); 22 | 23 | ПодготовитьИсходныеФайлыИзФайлаРасширения(); 24 | 25 | ОтредактироватьИЗагрузитьИсходныеФайлы(); 26 | 27 | ВыгрузитьФайлКонфигурации(); 28 | 29 | КонецПроцедуры 30 | 31 | Процедура ВыполнитьПреобразованиеИзИсходныхФайловРасширения() Экспорт 32 | 33 | Инициализировать(); 34 | 35 | СкопироватьИсходныеФайлы(); 36 | 37 | ОтредактироватьИЗагрузитьИсходныеФайлы(); 38 | 39 | ВыгрузитьФайлКонфигурации(); 40 | 41 | КонецПроцедуры 42 | 43 | Процедура СкопироватьИсходныеФайлы() 44 | 45 | ФС.КопироватьСодержимоеКаталога(ИсходныйПуть, КаталогИсходныхФайлов); 46 | 47 | КонецПроцедуры 48 | 49 | 50 | Процедура Инициализировать() 51 | 52 | ФайлРасширения = Новый Файл(ИсходныйПуть); 53 | 54 | Если Не ФайлРасширения.Существует() Тогда 55 | ТекстОшибки = СтрШаблон("Файл не существует по пути %1", ИсходныйПуть); 56 | Лог.Ошибка(ТекстОшибки); 57 | ВызватьИсключение ТекстОшибки; 58 | КонецЕсли; 59 | 60 | Если Не ЗначениеЗаполнено(КаталогВременныхФайлов) Тогда 61 | КаталогВременныхФайлов = ПолучитьИмяВременногоФайла("tmp"); 62 | ФС.ОбеспечитьКаталог(КаталогВременныхФайлов); 63 | Лог.Информация(СтрШаблон("Подготовлен каталог %1", КаталогВременныхФайлов)) 64 | КонецЕсли; 65 | 66 | ФС.ОбеспечитьКаталог(КаталогВременныхФайлов); 67 | 68 | Если Не ФС.КаталогПустой(КаталогВременныхФайлов) Тогда 69 | ТекстОшибки = СтрШаблон("Каталог временных файлов должен быть пуст: %1", КаталогВременныхФайлов); 70 | Лог.Ошибка(ТекстОшибки); 71 | ВызватьИсключение ТекстОшибки; 72 | КонецЕсли; 73 | 74 | ИмяВременнойБазы = ОбъединитьПути(КаталогВременныхФайлов, "database"); 75 | ФС.ОбеспечитьКаталог(ИмяВременнойБазы); 76 | 77 | КаталогИсходныхФайлов = ОбъединитьПути(КаталогВременныхФайлов, "src"); 78 | ФС.ОбеспечитьКаталог(КаталогИсходныхФайлов); 79 | 80 | Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда 81 | ПоискПлатформы = Новый МенеджерПлатформы1С(); 82 | 83 | СисИнфо = Новый СистемнаяИнформация; 84 | ЭтоWindows = Найти(НРег(СисИнфо.ВерсияОС), "windows") > 0; 85 | Это64ОС = СисИнфо.Это64БитнаяОперационнаяСистема; 86 | Лог.Информация(СисИнфо.ВерсияОС); 87 | Если Не ЭтоWindows Тогда 88 | ПоискПлатформы.ДобавитьКаталоГПоиска(ОбъединитьПути("/opt","1C"), РазрядностьПлатформы.x86); 89 | Если Это64ОС Тогда 90 | ПоискПлатформы.ДобавитьКаталоГПоиска(ОбъединитьПути("/opt","1C"), РазрядностьПлатформы.x64); 91 | КонецЕсли; 92 | КонецЕсли; 93 | 94 | ПутьКПлатформе = ПоискПлатформы.ПутьКПредприятию(ВерсияПлатформы, РазрядностьПлатформы.x64); 95 | 96 | Если ЗначениеЗаполнено(ПутьКПлатформе) Тогда 97 | Конфигуратор.ПутьКПлатформе1С(ПутьКПлатформе); 98 | Иначе 99 | Лог.Ошибка(СтрШаблон("Не найдена платформа указанной версии %1. Будет использована платформа по-умолчанию", ВерсияПлатформы)); 100 | КонецЕсли; 101 | КонецЕсли; 102 | 103 | Лог.Информация(СтрШаблон("Создаю временную базу %1", ИмяВременнойБазы)); 104 | Конфигуратор.СоздатьФайловуюБазу(ИмяВременнойБазы); 105 | 106 | КонецПроцедуры 107 | 108 | Процедура ПодготовитьИсходныеФайлыИзФайлаРасширения() 109 | 110 | Конфигуратор.УстановитьКонтекст("/F" + ИмяВременнойБазы, "", ""); 111 | 112 | Лог.Информация(СтрШаблон("Загружаю расширение")); 113 | 114 | ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); 115 | ПараметрыЗапуска.Добавить(СтрШаблон("/LoadCfg""%1"" -Extension %2", ИсходныйПуть, ИмяРасширения)); 116 | Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); 117 | 118 | Лог.Информация(СтрШаблон("Выгружаю расширение в исходные файлы %1", КаталогИсходныхФайлов)); 119 | 120 | ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); 121 | ПараметрыЗапуска.Добавить(СтрШаблон("/DumpConfigToFiles""%1"" -Extension %2", КаталогИсходныхФайлов, ИмяРасширения)); 122 | Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); 123 | 124 | КонецПроцедуры 125 | 126 | Процедура ОтредактироватьИЗагрузитьИсходныеФайлы() 127 | 128 | Конфигуратор.УстановитьКонтекст("/F" + ИмяВременнойБазы, "", ""); 129 | 130 | Лог.Информация(СтрШаблон("Редактирую файлы")); 131 | 132 | ОбработкаФайлов.ВыполнитьОбработкуИсходныхФайловРасширения(КаталогИсходныхФайлов); 133 | 134 | Лог.Информация(СтрШаблон("Загружаю исходные файлы в базу")); 135 | 136 | ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); 137 | ПараметрыЗапуска.Добавить(СтрШаблон("/LoadConfigFromFiles ""%1""", КаталогИсходныхФайлов)); 138 | 139 | Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); 140 | 141 | КонецПроцедуры 142 | 143 | Процедура ВыгрузитьФайлКонфигурации() 144 | 145 | Конфигуратор.УстановитьКонтекст("/F" + ИмяВременнойБазы, "", ""); 146 | 147 | Лог.Информация(СтрШаблон("Сохраняю конфигурацию %1", ИмяФайлаКонфигурации)); 148 | 149 | ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); 150 | ПараметрыЗапуска.Добавить(СтрШаблон("/DumpCfg ""%1"" ", ИмяФайлаКонфигурации)); 151 | 152 | Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); 153 | 154 | КонецПроцедуры 155 | 156 | Конфигуратор = Новый УправлениеКонфигуратором(); 157 | Лог = Логирование.ПолучитьЛог("oscript.lib.cfe2cf.test"); -------------------------------------------------------------------------------- /src/Модули/ОбработкаФайлов.os: -------------------------------------------------------------------------------- 1 | Процедура ВыполнитьОбработкуИсходныхФайловРасширения(Знач КаталогИсходныхФайлов) Экспорт 2 | 3 | ПутьКОсновномуФайлу = ОбъединитьПути(КаталогИсходныхФайлов, "Configuration.xml"); 4 | 5 | ФайлКонфигурации = Новый Файл(ПутьКОсновномуФайлу); 6 | 7 | Если Не ФайлКонфигурации.Существует() Тогда 8 | ТекстОшибки = СтрШаблон("Файл не существует по пути %1", ПутьКОсновномуФайлу); 9 | ВызватьИсключение ТекстОшибки; 10 | КонецЕсли; 11 | 12 | ТекстовыйДокумент = Новый ТекстовыйДокумент; 13 | ТекстовыйДокумент.Прочитать(ПутьКОсновномуФайлу); 14 | 15 | ТекстФайл = ТекстовыйДокумент.ПолучитьТекст(); 16 | ТекстФайл = СтрЗаменить(ТекстФайл, "Customization", ""); 17 | ТекстФайл = СтрЗаменить(ТекстФайл, "AddOn", ""); 18 | ТекстФайл = СтрЗаменить(ТекстФайл, "Patch", ""); 19 | ТекстФайл = СтрЗаменить(ТекстФайл, "Adopted", ""); 20 | ТекстФайл = СтрЗаменить(ТекстФайл, "ConfigurationExtensionCompatibilityMode", "CompatibilityMode"); 21 | 22 | ТекстовыйДокумент.УстановитьТекст(ТекстФайл); 23 | 24 | ТекстовыйДокумент.Записать(ПутьКОсновномуФайлу); 25 | 26 | НайденныеФайлы = НайтиФайлы(КаталогИсходныхФайлов, "*.xml", Истина); 27 | Для каждого Файл Из НайденныеФайлы Цикл 28 | ТекстовыйДокумент = Новый ТекстовыйДокумент; 29 | ТекстовыйДокумент.Прочитать(Файл.ПолноеИмя); 30 | 31 | ТекстФайл = ТекстовыйДокумент.ПолучитьТекст(); 32 | ТекстФайл = СтрЗаменить(ТекстФайл, "Adopted", ""); 33 | 34 | ТекстовыйДокумент.УстановитьТекст(ТекстФайл); 35 | 36 | ТекстовыйДокумент.Записать(Файл.ПолноеИмя); 37 | КонецЦикла; 38 | 39 | КонецПроцедуры -------------------------------------------------------------------------------- /src/Модули/ПараметрыПриложения.os: -------------------------------------------------------------------------------- 1 | Функция ИмяПриложения() Экспорт 2 | Возврат "cfe2cf"; 3 | КонецФункции 4 | 5 | Функция ИмяЛога() Экспорт 6 | Возврат "oscript.app.cfe2cf"; 7 | КонецФункции 8 | 9 | Функция Версия() Экспорт 10 | Возврат "0.0.1"; 11 | КонецФункции -------------------------------------------------------------------------------- /tasks/coverage.os: -------------------------------------------------------------------------------- 1 | #Использовать "../src" 2 | #Использовать 1commands 3 | #Использовать fs 4 | #Использовать coverage 5 | 6 | 7 | ФС.ОбеспечитьПустойКаталог("coverage"); 8 | ПутьКСтат = "coverage/stat.json"; 9 | 10 | Команда = Новый Команда; 11 | Команда.УстановитьКоманду("oscript"); 12 | Команда.ДобавитьПараметр("-encoding=utf-8"); 13 | Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат)); 14 | Команда.ДобавитьПараметр("tasks/test.os"); 15 | Команда.ПоказыватьВыводНемедленно(Истина); 16 | 17 | КодВозврата = Команда.Исполнить(); 18 | 19 | Файл_Стат = Новый Файл(ПутьКСтат); 20 | 21 | ИмяПакета = "cfe2cf"; 22 | 23 | ПроцессорГенерации = Новый ГенераторОтчетаПокрытия(); 24 | 25 | ПроцессорГенерации.ОтносительныеПути() 26 | .ФайлСтатистики(Файл_Стат.ПолноеИмя) 27 | .GenericCoverage() 28 | .Cobertura() 29 | .Clover(ИмяПакета) 30 | .Сформировать(); 31 | 32 | ЗавершитьРаботу(КодВозврата); -------------------------------------------------------------------------------- /tasks/test.os: -------------------------------------------------------------------------------- 1 | #Использовать "../src" 2 | #Использовать 1bdd 3 | #Использовать 1testrunner 4 | 5 | Функция ПрогнатьТесты() 6 | 7 | Тестер = Новый Тестер; 8 | 9 | ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests"); 10 | ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); 11 | 12 | КаталогТестов = Новый Файл(ПутьКТестам); 13 | Если Не КаталогТестов.Существует() Тогда 14 | Сообщить(СтрШаблон("Не найден каталог тестов %1", ПутьКТестам)); 15 | Возврат Истина; 16 | КонецЕсли; 17 | 18 | РезультатТестирования = Тестер.ТестироватьКаталог( 19 | КаталогТестов, 20 | Новый Файл(ПутьКОтчетуJUnit) 21 | ); 22 | 23 | Успешно = РезультатТестирования = 0; 24 | 25 | Возврат Успешно; 26 | КонецФункции // ПрогнатьТесты() 27 | 28 | Функция ПрогнатьФичи() 29 | 30 | ПутьОтчетаJUnit = "./bdd-log.xml"; 31 | 32 | КаталогФич = ОбъединитьПути(".", "features"); 33 | 34 | Файл_КаталогФич = Новый Файл(КаталогФич); 35 | Если Не Файл_КаталогФич.Существует() Тогда 36 | Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич)); 37 | Возврат Истина; 38 | КонецЕсли; 39 | 40 | ИсполнительБДД = Новый ИсполнительБДД; 41 | РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич); 42 | ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); 43 | 44 | СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся; 45 | Если РезультатыВыполнения.Строки.Количество() > 0 Тогда 46 | 47 | СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); 48 | 49 | КонецЕсли; 50 | 51 | ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit; 52 | ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit); 53 | 54 | Сообщить(СтрШаблон("Результат прогона фич <%1> 55 | |", ИтоговыйРезультатВыполнения)); 56 | 57 | Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался; 58 | КонецФункции // ПрогнатьФичи() 59 | 60 | ТестыПрошли = Истина; 61 | 62 | Попытка 63 | ТестыПрошли = ПрогнатьТесты(); 64 | 65 | Исключение 66 | ТестыПрошли = Ложь; 67 | Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно 68 | |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); 69 | КонецПопытки; 70 | 71 | ФичиПрошли = Истина; 72 | 73 | Попытка 74 | ФичиПрошли = ПрогнатьФичи(); 75 | Исключение 76 | ФичиПрошли = Ложь; 77 | Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно 78 | |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); 79 | КонецПопытки; 80 | 81 | Если Не ТестыПрошли Или Не ФичиПрошли Тогда 82 | ВызватьИсключение "Тестирование завершилось неудачно!"; 83 | Иначе 84 | Сообщить(СтрШаблон("Результат прогона тестов <%1> 85 | |", ТестыПрошли)); 86 | КонецЕсли; -------------------------------------------------------------------------------- /tests/Конвертация_test.os: -------------------------------------------------------------------------------- 1 | #Использовать logos 2 | #использовать "../src" 3 | 4 | Перем Лог; 5 | Перем юТест; 6 | 7 | Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт 8 | 9 | юТест = Тестирование; 10 | 11 | ИменаТестов = Новый Массив; 12 | 13 | ИменаТестов.Добавить("ТестДолжен_ВыгрузитьРасширениеИЗагрузитьКонфиуграцию"); 14 | 15 | Возврат ИменаТестов; 16 | 17 | КонецФункции 18 | 19 | Процедура ТестДолжен_ВыгрузитьРасширениеИЗагрузитьКонфиуграцию() Экспорт 20 | 21 | 22 | КонецПроцедуры 23 | 24 | Лог = Логирование.ПолучитьЛог("oscript.lib.cfe2cf.test"); -------------------------------------------------------------------------------- /travis-ci.sh: -------------------------------------------------------------------------------- 1 | set -e 2 | echo "Устанавливаю версию OScript <$OSCRIPT_VERSION>" 3 | curl http://oscript.io/downloads/$OSCRIPT_VERSION/deb > oscript.deb 4 | dpkg -i oscript.deb 5 | rm -f oscript.deb 6 | 7 | opm install v8runner; 8 | opm install cli; 9 | opm install coverage; 10 | 11 | opm install; 12 | 13 | opm run coverage; 14 | 15 | 16 | # oscript ./tasks/coverage.os --------------------------------------------------------------------------------