diff --git a/features/v8path.feature b/features/v8path.feature new file mode 100644 index 00000000..3ba505ae --- /dev/null +++ b/features/v8path.feature @@ -0,0 +1,31 @@ +# language: ru + +Функционал: Передача полного пути к платформе 1С + Как Пользователь + Я хочу иметь возможность указать не стандартный путь к платформе 1С + Чтобы иметь возможность запускать синхронизацию с использованием платформы 1С установленной в произвольном каталоге + +Контекст: Тестовый контекст + Когда Я очищаю параметры команды "gitsync" в контексте + И Я создаю новый объект ГитРепозиторий + И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С" + И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" + И Я создаю тестовой файл AUTHORS + И Я записываю "0" в файл VERSION + +Сценарий: Простая синхронизация хранилища с git-репозиторием + Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" + И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" + И Я добавляю параметр "--v8-path /opt/1C/v8.3/x86_64/1cv8" для команды "gitsync" + И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "sync" для команды "gitsync" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "ОТЛАДКА - Используется путь к платформе 1С " + И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 \ No newline at end of file diff --git a/readme.md b/readme.md index 29a0f8b5..646d0e12 100644 --- a/readme.md +++ b/readme.md @@ -255,6 +255,7 @@ $ opm install -f <ПутьКФайлу> | Имя | Описание | |---------------------|--------------------------------------------------------| | `GITSYNC_V8VERSION` | маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.) | +| `GITSYNC_V8_PATH` | путь к исполняемому файлу платформы 1С (Например, /opt/1C/v8.3/x86_64/1cv8) | | `GITSYNC_VERSOBE` | вывод отладочной информация в процессе выполнении | | `GITSYNC_TEMP` | путь к каталогу временных файлов | | `GITSYNC_EMAIL` | домен почты для пользователей git | @@ -312,6 +313,14 @@ $ opm install -f <ПутьКФайлу> Данная команда выполнить синхронизацию хранилища 1С по пути `C:/Хранилище_1С/` и репозитория git в каталоге `C:/work_dir` Используя для подключения к хранилищу 1С пользователя `Admin` и пароль `Secret` +* Использование конкретной исполняемого файла платформы + + ```sh + gitsync --v8-path /opt/1C/v8.3/x86_64/1cv8 s -uAdmin -p=Secret C:/Хранилище_1С/ C:/work_dir/ + ``` + Данная команда синхронизации выполнится с использованием исполняемого файла платформы `/opt/1C/v8.3/x86_64/1cv8` для хранилища 1С по пути `C:/Хранилище_1С/` и репозитория git в каталоге `C:/work_dir` + Используя для подключения к хранилищу 1С пользователя `Admin` и пароль `Secret` + * Использование только переменных окружения linux: @@ -322,6 +331,8 @@ $ opm install -f <ПутьКФайлу> export GITSYNC_STORAGE_USER=Admin export GITSYNC_STORAGE_PASSWORD=Secret export GITSYNC_V8VERSION=8.3.7 + # Указание конкретного исполняемого файла платформы 1С + #export GITSYNC_V8_PATH=/opt/1C/v8.3/x86_64/1cv8 # Надо обернуть в кавычки если путь содержит пробелы export GITSYNC_VERSOBE=true #Можно использовать Да/Ложь/Нет/Истина export GITSYNC_TEMP=./temp/sync gitsync s @@ -334,6 +345,8 @@ $ opm install -f <ПутьКФайлу> set GITSYNC_STORAGE_USER=Admin set GITSYNC_STORAGE_PASSWORD=Secret set GITSYNC_V8VERSION=8.3.7 + # Указание конкретного исполняемого файла платформы 1С + #set GITSYNC_V8_PATH="C:\Program Files (x86)\1cv8\8.3.12.1567\bin\1cv8.exe" # Надо обернуть в кавычки если путь содержит пробелы set GITSYNC_VERSOBE=true #Можно использовать Да/Ложь/Нет/Истина set GITSYNC_TEMP=./temp/sync diff --git a/src/cmd/gitsync.os b/src/cmd/gitsync.os index bcc106ff..38a7e2c9 100644 --- a/src/cmd/gitsync.os +++ b/src/cmd/gitsync.os @@ -18,8 +18,10 @@ Приложение = Новый КонсольноеПриложение(ПараметрыПриложения.ИмяПриложения(), "Приложение для синхронизации Хранилища 1С с git"); Приложение.Версия("version", ПараметрыПриложения.Версия()); - Приложение.Опция("v8version", "8.3", "маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)") + Приложение.Опция("v8version", "8.3", "маска версии платформы 1С (8.3, 8.3.5, 8.3.6.2299 и т.п.)") .ВОкружении("GITSYNC_V8VERSION"); + Приложение.Опция("v8-path", "", "путь к исполняемому файлу платформы 1С (Например, /opt/1C/v8.3/x86_64/1cv8)") + .ВОкружении("GITSYNC_V8_PATH"); Приложение.Опция("v verbose", Ложь, "вывод отладочной информация в процессе выполнении") .Флаговый() @@ -64,6 +66,7 @@ Команда.ПередВыполнениемКоманды(Команда); ВерсияПлатформы = Команда.ЗначениеОпции("v8version"); + ПутьКПлатформе = Команда.ЗначениеОпции("v8-path"); ВыводДополнительнойИнформации = Команда.ЗначениеОпции("verbose"); ПутьКГит = Команда.ЗначениеОпции("git-path"); ВременныйКаталогРаботы = Команда.ЗначениеОпции("tempdir"); @@ -73,6 +76,7 @@ Лог.Отладка("Устанавливаю общие параметры"); ПараметрыПриложения.УстановитьВерсиюПлатформы(ВерсияПлатформы); + ПараметрыПриложения.УстановитьПутьКПлатформе(ПутьКПлатформе); ПараметрыПриложения.УстановитьПутьКГит(ПутьКГит); ПараметрыПриложения.УстановитьДоменПочты(ДоменПочты); ПараметрыПриложения.УстановитьВременныйКаталог(ВременныйКаталогРаботы); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Clone.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Clone.os" index 92498673..b12bd3f3 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Clone.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Clone.os" @@ -58,6 +58,7 @@ Распаковщик = Новый МенеджерСинхронизации(); Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы) + .ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе) .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) .ПодпискиНаСобытия(ИндексПлагинов) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Init.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Init.os" index c3e28df2..9ed4df97 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Init.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Init.os" @@ -60,6 +60,7 @@ Распаковщик = Новый МенеджерСинхронизации(); Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы) + .ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе) .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) .ПодпискиНаСобытия(ИндексПлагинов) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260SetVersion.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260SetVersion.os" index 722b5216..10867197 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260SetVersion.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260SetVersion.os" @@ -30,7 +30,8 @@ Распаковщик = Новый МенеджерСинхронизации(); Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы) - .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) + .ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе) + .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) .ПодпискиНаСобытия(ИндексПлагинов) .ПараметрыПодписокНаСобытия(Команда.ПараметрыКоманды()) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" index 53c286d7..4827e5aa 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" @@ -55,6 +55,7 @@ Распаковщик = Новый МенеджерСинхронизации(); Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы) + .ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе) .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) .ПодпискиНаСобытия(ИндексПлагинов) diff --git "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index d4ac334f..7cd6e324 100644 --- "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -11,6 +11,7 @@ ОбщиеПараметры.Вставить("Плагины", Новый Массив); ОбщиеПараметры.Вставить("ВерсияПлатформы", "8.3"); + ОбщиеПараметры.Вставить("ПутьКПлатформе", ""); ОбщиеПараметры.Вставить("ДоменПочты", "localhost"); ОбщиеПараметры.Вставить("ПутьКГит", ""); @@ -24,6 +25,10 @@ ОбщиеПараметры.Вставить("ПутьКГит", ПутьКГит); КонецПроцедуры +Процедура УстановитьПутьКПлатформе(Знач ПутьКПлатформе) Экспорт + ОбщиеПараметры.Вставить("ПутьКПлатформе", ПутьКПлатформе); +КонецПроцедуры + Процедура УстановитьКаталогПлагинов(Знач ПутьККаталогуПлагинов) Экспорт ЛогПриложения.Отладка("Устанавливаю каталог плагинов <%1>", ПутьККаталогуПлагинов); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 50ec2327..a3c47e2d 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -31,6 +31,7 @@ Перем ДоменПочтыДляGitПоУмолчанию Экспорт; // Строка, домен пользователей по умолчанию Перем ТекущаяВерсияПлатформы Экспорт; // Строка, используемая версия 1С.Предприятие +Перем ТекущийПутьКПлатформе Экспорт; // Строка, путь к исполняемому файлу платформы 1С.Предприятие #Область Публичное_API @@ -161,6 +162,21 @@ КонецФункции +// Устанавливает версию платформы 1С +// +// Параметры: +// НоваяВерсияПлатформы - Строка - путь к исполняемому файлу платформы 1С.Предприятие +// +// Возвращаемое значение: +// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> +// +Функция ПутьКПлатформе(Знач НовыйПутьКПлатформе) Экспорт + + ТекущийПутьКПлатформе = НовыйПутьКПлатформе; + Возврат ЭтотОбъект; + +КонецФункции + // Устанавливает путь к исполняемому файлу git // // Параметры: @@ -607,11 +623,26 @@ Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); КаталогСборки = ВременныеФайлы.СоздатьКаталог(); МенеджерКонфигуратора.КаталогСборки(КаталогСборки); - МенеджерКонфигуратора.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы); + + Если ЗначениеЗаполнено(ТекущийПутьКПлатформе) Тогда + + Если Не ФС.ФайлСуществует(ТекущийПутьКПлатформе) Тогда + + ВызватьИсключение СтрШаблон("Исполняемый файл платформы 1С <%1> не найден", ТекущийПутьКПлатформе); + + КонецЕсли; + + МенеджерКонфигуратора.ПутьКПлатформе1С(ТекущийПутьКПлатформе); + Лог.Отладка("Используется путь к платформе 1С <%1>", ТекущийПутьКПлатформе); + Иначе + МенеджерКонфигуратора.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы); + Лог.Отладка("Используется платформа 1С версии <%1>", ТекущийПутьКПлатформе); + КонецЕсли; КонецЕсли; Возврат МенеджерКонфигуратора; + КонецФункции #КонецОбласти @@ -1087,8 +1118,11 @@ Если ХранилищеКонфигурации = Неопределено Тогда ХранилищеКонфигурации = Новый МенеджерХранилищаКонфигурации; - Конфигуратор = ХранилищеКонфигурации.ПолучитьУправлениеКонфигуратором(); - Конфигуратор.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы); + + НовыйУправлениеКонфигуратором = ПолучитьМенеджерКонфигуратора(); + НовыйУправлениеКонфигуратором.УстановитьКодЯзыка("RU"); // TODO: Костыль выгрузки истории хранилища с другими языками выгружает только в RU + ХранилищеКонфигурации.УстановитьУправлениеКонфигуратором(НовыйУправлениеКонфигуратором); + КонецЕсли; Логирование.ПолучитьЛог("oscript.lib.v8storage").УстановитьУровень(Лог.Уровень()); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" index 01f07cbf..0e04c33a 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" @@ -214,7 +214,7 @@ Процедура ПрочитатьФайлНастроек() МенеджерПараметров = Новый МенеджерПараметров(); - МенеджерПараметров.УстановитьФайлПараметров(ПутьКФайлуНастроек.ПолноеИмя); + МенеджерПараметров.УстановитьФайлПараметров(ПутьКФайлуНастроек); МенеджерПараметров.ИспользоватьПровайдерJSON(); МенеджерПараметров.ИспользоватьПровайдерYAML(); МенеджерПараметров.КонструкторПараметров(ЭтотОбъект);