Skip to content

fix #150 Добавление возможности указания исполняемого файла платформы 1С #151

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 31, 2018
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: 31 additions & 0 deletions features/v8path.feature
Original file line number Diff line number Diff line change
@@ -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С </opt/1C/v8.3/x86_64/1cv8>"
И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git"
И Вывод команды "gitsync" не содержит "Внешнее исключение"
И Код возврата команды "gitsync" равен 0
13 changes: 13 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down Expand Up @@ -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:
Expand All @@ -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
Expand All @@ -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

Expand Down
6 changes: 5 additions & 1 deletion src/cmd/gitsync.os
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@
Приложение = Новый КонсольноеПриложение(ПараметрыПриложения.ИмяПриложения(),
"Приложение для синхронизации Хранилища 1С с git");
Приложение.Версия("version", ПараметрыПриложения.Версия());
Приложение.Опция("v8version", "8.3", "маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)")
Приложение.Опция("v8version", "8.3", "маска версии платформы (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", Ложь, "вывод отладочной информация в процессе выполнении")
.Флаговый()
Expand Down Expand Up @@ -64,6 +66,7 @@
Команда.ПередВыполнениемКоманды(Команда);

ВерсияПлатформы = Команда.ЗначениеОпции("v8version");
ПутьКПлатформе = Команда.ЗначениеОпции("v8-path");
ВыводДополнительнойИнформации = Команда.ЗначениеОпции("verbose");
ПутьКГит = Команда.ЗначениеОпции("git-path");
ВременныйКаталогРаботы = Команда.ЗначениеОпции("tempdir");
Expand All @@ -73,6 +76,7 @@

Лог.Отладка("Устанавливаю общие параметры");
ПараметрыПриложения.УстановитьВерсиюПлатформы(ВерсияПлатформы);
ПараметрыПриложения.УстановитьПутьКПлатформе(ПутьКПлатформе);
ПараметрыПриложения.УстановитьПутьКГит(ПутьКГит);
ПараметрыПриложения.УстановитьДоменПочты(ДоменПочты);
ПараметрыПриложения.УстановитьВременныйКаталог(ВременныйКаталогРаботы);
Expand Down
1 change: 1 addition & 0 deletions src/cmd/Классы/КомандаClone.os
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@

Распаковщик = Новый МенеджерСинхронизации();
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
.ПодпискиНаСобытия(ИндексПлагинов)
Expand Down
1 change: 1 addition & 0 deletions src/cmd/Классы/КомандаInit.os
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@

Распаковщик = Новый МенеджерСинхронизации();
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
.ПодпискиНаСобытия(ИндексПлагинов)
Expand Down
3 changes: 2 additions & 1 deletion src/cmd/Классы/КомандаSetVersion.os
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@

Распаковщик = Новый МенеджерСинхронизации();
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
.ПодпискиНаСобытия(ИндексПлагинов)
.ПараметрыПодписокНаСобытия(Команда.ПараметрыКоманды())
Expand Down
1 change: 1 addition & 0 deletions src/cmd/Классы/КомандаSync.os
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@

Распаковщик = Новый МенеджерСинхронизации();
Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы)
.ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе)
.ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты)
.ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит)
.ПодпискиНаСобытия(ИндексПлагинов)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

ОбщиеПараметры.Вставить("Плагины", Новый Массив);
ОбщиеПараметры.Вставить("ВерсияПлатформы", "8.3");
ОбщиеПараметры.Вставить("ПутьКПлатформе", "");
ОбщиеПараметры.Вставить("ДоменПочты", "localhost");
ОбщиеПараметры.Вставить("ПутьКГит", "");

Expand All @@ -24,6 +25,10 @@
ОбщиеПараметры.Вставить("ПутьКГит", ПутьКГит);
КонецПроцедуры

Процедура УстановитьПутьКПлатформе(Знач ПутьКПлатформе) Экспорт
ОбщиеПараметры.Вставить("ПутьКПлатформе", ПутьКПлатформе);
КонецПроцедуры

Процедура УстановитьКаталогПлагинов(Знач ПутьККаталогуПлагинов) Экспорт

ЛогПриложения.Отладка("Устанавливаю каталог плагинов <%1>", ПутьККаталогуПлагинов);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

Перем ДоменПочтыДляGitПоУмолчанию Экспорт; // Строка, домен пользователей по умолчанию
Перем ТекущаяВерсияПлатформы Экспорт; // Строка, используемая версия 1С.Предприятие
Перем ТекущийПутьКПлатформе Экспорт; // Строка, путь к исполняемому файлу платформы 1С.Предприятие

#Область Публичное_API

Expand Down Expand Up @@ -161,6 +162,21 @@

КонецФункции

// Устанавливает версию платформы 1С
//
// Параметры:
// НоваяВерсияПлатформы - Строка - путь к исполняемому файлу платформы 1С.Предприятие
//
// Возвращаемое значение:
// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации>
//
Функция ПутьКПлатформе(Знач НовыйПутьКПлатформе) Экспорт

ТекущийПутьКПлатформе = НовыйПутьКПлатформе;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает путь к исполняемому файлу git
//
// Параметры:
Expand Down Expand Up @@ -607,11 +623,26 @@
Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень());
КаталогСборки = ВременныеФайлы.СоздатьКаталог();
МенеджерКонфигуратора.КаталогСборки(КаталогСборки);
МенеджерКонфигуратора.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы);

Если ЗначениеЗаполнено(ТекущийПутьКПлатформе) Тогда

Если Не ФС.ФайлСуществует(ТекущийПутьКПлатформе) Тогда

ВызватьИсключение СтрШаблон("Исполняемый файл платформы 1С <%1> не найден", ТекущийПутьКПлатформе);

КонецЕсли;

МенеджерКонфигуратора.ПутьКПлатформе1С(ТекущийПутьКПлатформе);
Лог.Отладка("Используется путь к платформе 1С <%1>", ТекущийПутьКПлатформе);
Иначе
МенеджерКонфигуратора.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы);
Лог.Отладка("Используется платформа 1С версии <%1>", ТекущийПутьКПлатформе);
КонецЕсли;

КонецЕсли;

Возврат МенеджерКонфигуратора;

КонецФункции

#КонецОбласти
Expand Down Expand Up @@ -1087,8 +1118,11 @@

Если ХранилищеКонфигурации = Неопределено Тогда
ХранилищеКонфигурации = Новый МенеджерХранилищаКонфигурации;
Конфигуратор = ХранилищеКонфигурации.ПолучитьУправлениеКонфигуратором();
Конфигуратор.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы);

НовыйУправлениеКонфигуратором = ПолучитьМенеджерКонфигуратора();
НовыйУправлениеКонфигуратором.УстановитьКодЯзыка("RU"); // TODO: Костыль выгрузки истории хранилища с другими языками выгружает только в RU
ХранилищеКонфигурации.УстановитьУправлениеКонфигуратором(НовыйУправлениеКонфигуратором);

КонецЕсли;

Логирование.ПолучитьЛог("oscript.lib.v8storage").УстановитьУровень(Лог.Уровень());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@
Процедура ПрочитатьФайлНастроек()

МенеджерПараметров = Новый МенеджерПараметров();
МенеджерПараметров.УстановитьФайлПараметров(ПутьКФайлуНастроек.ПолноеИмя);
МенеджерПараметров.УстановитьФайлПараметров(ПутьКФайлуНастроек);
МенеджерПараметров.ИспользоватьПровайдерJSON();
МенеджерПараметров.ИспользоватьПровайдерYAML();
МенеджерПараметров.КонструкторПараметров(ЭтотОбъект);
Expand Down