diff --git a/README.md b/README.md index 02143fd..2f338c6 100644 --- a/README.md +++ b/README.md @@ -18,16 +18,39 @@ * в случае запуска из под wine необходим msscriptcontrol * Библиотеки [oscript-library]( https://github.com/EvilBeaver/oscript-library) -2. По умолчанию считается, что пути к oscript.exe и git.exe находятся в переменной path, иначе необходимо указать явный путь в файлах pre-commit +2. По умолчанию считается, что пути к oscript.exe и git.exe находятся в переменной path, иначе необходимо указать явный путь в файле pre-commit -3. После клонирования данного репозитория необходимо инициализировать используемые подмодули. +3. Путь хранения исходных текстов разобранных обработок по умолчанию используется как **src** (для обеспечения совместимости со старыми версиями обработки), однако его можно переназначить в файле `pre-commit` + +#### Установка через zip-архив + +1. Скачайте zip-архив precommit1c.zip со страницы [последнего релиза](https://github.com/xDrivenDevelopment/precommit1c/releases/latest). + +2. Содержмое архива необходимо разархивировать в каталог .git/hooks/ вашего проекта. +*Примечание:* каталог .git по умолчанию скрыт. +В итоге у вас должна получиться следующая структура каталога: +``` +.git\ + hooks\ + pre-commit + V8Reader + tools + ibService + v8files-extractor.os +``` + +#### Установка через git clone + +1. Склонируйте репозиторий `precommit1c` в удобное место. + +2. После клонирования репозитория необходимо инициализировать используемые подмодули. Откройте командую строку и выполните команды: ```cmd cd путь/к/репозиторию/precommit1c git submodule update --init --recursive ``` -4. Cодержимое каталога необходимо скопировать в каталог .git/hooks/ вашего проекта. +3. Cодержимое каталога необходимо скопировать в каталог .git/hooks/ вашего проекта. *Примечание:* каталог .git по умолчанию скрыт. В итоге у вас должна получиться следующая структура каталога: ``` @@ -40,8 +63,6 @@ git submodule update --init --recursive v8files-extractor.os ``` -5. Путь хранения исходных текстов разобранных обработок по умолчанию используется как **src** (для обеспечения совместимости со старыми версиями обработки), однако его можно переназначить в файле `pre-commit` - ## Запуск После установки достаточно для проверки сделать commit для любого файла epf/erf, и в вашем репозитории автоматически должна создаться папка *src*, полностью повторяющая структуру проекта, изменённые или добавленные файлы распакуются в папки с аналогичными наименованиями. diff --git a/scripts/build.os b/scripts/build.os new file mode 100644 index 0000000..68e869b --- /dev/null +++ b/scripts/build.os @@ -0,0 +1,79 @@ +#Использовать logos + +Перем Лог; +Перем КаталогСборки; + +Процедура Инициализация() + + Лог = Логирование.ПолучитьЛог("precommit1c.app.build"); + Лог.УстановитьУровень(УровниЛога.Информация); + + КаталогСборки = ОбъединитьПути(ТекущийКаталог(), "build"); + + ОбеспечитьПустойКаталог(КаталогСборки); + +КонецПроцедуры + +Функция ОбернутьВКавычки(Знач Строка) + Возврат """" + Строка + """"; +КонецФункции + +Процедура ВыполнитьКоманду(Знач КомандаЗапуска, Знач ТекстОшибки = "", Знач РабочийКаталог = "") + + Лог.Информация("Выполняю команду: " + КомандаЗапуска); + + Процесс = СоздатьПроцесс("cmd.exe /C " + ОбернутьВКавычки(КомандаЗапуска), РабочийКаталог, Истина, , КодировкаТекста.UTF8); + Процесс.Запустить(); + + Процесс.ОжидатьЗавершения(); + + Пока НЕ Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл + СтрокаВывода = Процесс.ПотокВывода.ПрочитатьСтроку(); + Сообщить(СтрокаВывода); + КонецЦикла; + + Если Процесс.КодВозврата <> 0 Тогда + Лог.Ошибка("Код возврата: " + Процесс.КодВозврата); + ВызватьИсключение ТекстОшибки + Символы.ПС + Процесс.ПотокОшибок.Прочитать(); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбеспечитьПустойКаталог(Знач ПутьККаталогу) + + ФайлОбъектКаталога = Новый Файл(ПутьККаталогу); + + Если ФайлОбъектКаталога.Существует() Тогда + Лог.Отладка("Очищаем каталог " + ФайлОбъектКаталога.ПолноеИмя); + УдалитьФайлы(ФайлОбъектКаталога.ПолноеИмя, ПолучитьМаскуВсеФайлы()); + КонецЕсли; + + Лог.Отладка("Создаем новый каталог " + ФайлОбъектКаталога.ПолноеИмя); + СоздатьКаталог(ФайлОбъектКаталога.ПолноеИмя); + +КонецПроцедуры + +Процедура ДобавитьФайлВАрхив(Архив, ПутьКФайлу) + Лог.Информация("Добавляем в архив файл/каталог <" + ПутьКФайлу + ">"); + Архив.Добавить("./" + ПутьКФайлу, РежимСохраненияПутейZIP.СохранятьОтносительныеПути); +КонецПроцедуры + +Процедура ВыполнитьСкрипт() + + Лог.Информация("Инициализация подмодуля v8reader"); + ВыполнитьКоманду("git submodule update --init --recursive"); + + Архив = Новый ЗаписьZipФайла(); + Архив.Открыть(ОбъединитьПути(КаталогСборки, "precommit1c.zip")); + ДобавитьФайлВАрхив(Архив, "pre-commit"); + ДобавитьФайлВАрхив(Архив, "v8files-extractor.os"); + ДобавитьФайлВАрхив(Архив, "ibService"); + ДобавитьФайлВАрхив(Архив, "tools"); + ДобавитьФайлВАрхив(Архив, "v8Reader"); + + Архив.Записать(); + +КонецПроцедуры + +Инициализация(); +ВыполнитьСкрипт();