Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 26 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 по умолчанию скрыт.
В итоге у вас должна получиться следующая структура каталога:
```
Expand All @@ -40,8 +63,6 @@ git submodule update --init --recursive
v8files-extractor.os
```

5. Путь хранения исходных текстов разобранных обработок по умолчанию используется как **src** (для обеспечения совместимости со старыми версиями обработки), однако его можно переназначить в файле `pre-commit`

## Запуск

После установки достаточно для проверки сделать commit для любого файла epf/erf, и в вашем репозитории автоматически должна создаться папка *src*, полностью повторяющая структуру проекта, изменённые или добавленные файлы распакуются в папки с аналогичными наименованиями.
Expand Down
79 changes: 79 additions & 0 deletions scripts/build.os
Original file line number Diff line number Diff line change
@@ -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");

Архив.Записать();

КонецПроцедуры

Инициализация();
ВыполнитьСкрипт();