Skip to content

Commit 3f348ca

Browse files
committed
Конфигурация в JSON для команды sync -all
1 parent 99a5bf0 commit 3f348ca

File tree

6 files changed

+338
-12
lines changed

6 files changed

+338
-12
lines changed

config-example.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"gitsync-options":
3+
{
4+
"global":
5+
{
6+
"email-domain": "server.com",
7+
"v8-version": "8.3.10",
8+
"git-executable": "git"
9+
}
10+
},
11+
"repositories" : [
12+
{
13+
"name" : "test",
14+
"git-local-path": "Путь",
15+
"git-remote": "адрес2",
16+
"v8-storage-dir": "каталог2",
17+
"process-fatform-modules": "on",
18+
"push-every-n-commits": 5,
19+
"auto-set-tags": "on",
20+
"stop-if-empty-comment": "on",
21+
"check-authors": "on"
22+
//"email-domain",
23+
//"v8-version",
24+
//"git-executable",
25+
},
26+
{
27+
"name" : "test2",
28+
"git-local-path": "Путь2",
29+
"git-remote": "адрес2",
30+
"v8-storage-dir": "каталог2",
31+
"process-fatform-modules": "on",
32+
"push-every-n-commits": 5,
33+
"auto-set-tags": "on",
34+
"stop-if-empty-comment": "on",
35+
"check-authors": "on"
36+
//"email-domain",
37+
//"v8-version",
38+
//"git-executable",
39+
40+
}
41+
]
42+
}

packagedef

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,20 @@
55
.Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта())
66
.ВерсияСреды("1.0.16")
77
.ЗависитОт("logos")
8-
.ЗависитОт("cmdline", "0.4.1")
8+
.ЗависитОт("cmdline", "0.6.1")
99
.ЗависитОт("tempfiles")
1010
.ЗависитОт("tool1cd", "0.4")
11-
.ЗависитОт("v8runner", "0.7.0")
12-
.ЗависитОт("gitrunner", "1.1.0")
11+
.ЗависитОт("v8runner", "0.11.2")
12+
.ЗависитОт("gitrunner", "1.5.0")
1313
.ЗависитОт("strings")
14-
.ЗависитОт("1commands", "1.1.1")
14+
.ЗависитОт("1commands", "1.2.1")
1515
.ЗависитОт("v8unpack")
16+
.ЗависитОт("json")
1617
.ВключитьФайл("src")
1718
.ВключитьФайл("tests")
1819
.ВключитьФайл("features")
1920
.ВключитьФайл("bin")
2021
.ВключитьФайл("config-example.xml")
22+
.ВключитьФайл("config-example.json")
2123
.ВключитьФайл("readme.md")
2224
.ИсполняемыйФайл("src/gitsync.os");

src/json-config.os

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
2+
#Использовать json
3+
4+
Перем мНастройки;
5+
6+
Функция ПрочитатьФайл(Знач ИмяФайла)
7+
ФайлСуществующий = Новый Файл(ИмяФайла);
8+
Если Не ФайлСуществующий.Существует() Тогда
9+
ВызватьИсключение "Неверная структура файла настроек / файл пустой";;
10+
КонецЕсли;
11+
12+
Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
13+
Рез = Чтение.Прочитать();
14+
Чтение.Закрыть();
15+
Возврат Рез;
16+
КонецФункции // ПрочитатьФайл()
17+
18+
Функция ПрочитатьНастройкиИзФайла(Знач ФайлНастроек) Экспорт
19+
20+
мНастройки = Новый Структура;
21+
22+
JsonСтрока = ПрочитатьФайл(ФайлНастроек);
23+
JsonСтрока = ВырезатьКомментарииИзТекстаJSON(JsonСтрока);
24+
25+
ПарсерJSON = Новый ПарсерJSON();
26+
ПараметрыJSON = ПарсерJSON.ПрочитатьJSON(JsonСтрока);
27+
28+
ВсеНастройки = ПараметрыJSON["gitsync-options"];
29+
ГлобальныеНастройки = ВсеНастройки["global"];
30+
31+
Для Каждого КлючИЗначение Из ГлобальныеНастройки Цикл
32+
33+
Если КлючИЗначение.Ключ = "email-domain" Тогда
34+
Ключ = "ДоменПочтыДляGit";
35+
ИначеЕсли КлючИЗначение.Ключ = "v8-version" Тогда
36+
Ключ = "ПутьКПлатформе83";
37+
ИначеЕсли КлючИЗначение.Ключ = "git-executable" Тогда
38+
Ключ = "ПутьGit";
39+
Иначе
40+
ВызватьИсключение НекорректнаяСтруктураНастроек();
41+
КонецЕсли;
42+
43+
мНастройки.Вставить(Ключ, КлючИЗначение.Значение);
44+
45+
КонецЦикла;
46+
47+
мНастройки.Вставить("Репозитарии", Новый Массив);
48+
49+
МассивРепозиториев = ВсеНастройки["repositories"];
50+
51+
Для Каждого Репозиторий Из МассивРепозиториев Цикл
52+
53+
ПрочитатьНастройкиРепозитория(Репозиторий);
54+
55+
КонецЦикла;
56+
57+
58+
Возврат мНастройки;
59+
60+
КонецФункции
61+
62+
63+
Функция ВырезатьКомментарииИзТекстаJSON(Знач JsonСтрока)
64+
65+
// вырезаем обычные комменты типа "// комментарий"
66+
Регулярка = Новый РегулярноеВыражение("(^\/\/.*$)");
67+
Рез = Регулярка.Заменить(JsonСтрока, "$0" );
68+
69+
// вырезаем комменты после строки, например, "строка //комментарий"
70+
Регулярка = Новый РегулярноеВыражение("(^.*)(\/\/.*$)");
71+
Рез = Регулярка.Заменить(Рез, "$1" );
72+
73+
Возврат Рез;
74+
75+
КонецФункции // ВырезатьКомментарииИзТекстаJSON()
76+
77+
Процедура ПрочитатьНастройкиРепозитория(ЭлементМассива)
78+
79+
Репо = Новый Структура;
80+
81+
мНастройки.Репозитарии.Добавить(Репо);
82+
83+
Для Каждого КлючИЗначение Из ЭлементМассива Цикл
84+
85+
Если КлючИЗначение.Ключ = "name" Тогда
86+
Ключ = "Имя";
87+
ИначеЕсли КлючИЗначение.Ключ = "git-local-path" Тогда
88+
Ключ = "КаталогВыгрузки";
89+
ИначеЕсли КлючИЗначение.Ключ = "git-remote" Тогда
90+
Ключ = "GitURL";
91+
ИначеЕсли КлючИЗначение.Ключ = "v8-storage-dir" Тогда
92+
Ключ = "КаталогХранилища1С";
93+
ИначеЕсли КлючИЗначение.Ключ = "email-domain" Тогда
94+
Ключ = "ДоменПочтыДляGit";
95+
ИначеЕсли КлючИЗначение.Ключ = "v8-version" Тогда
96+
Ключ = "ПутьКПлатформе83";
97+
ИначеЕсли КлючИЗначение.Ключ = "git-executable" Тогда
98+
Ключ = "ПутьGit";
99+
ИначеЕсли КлючИЗначение.Ключ = "push-every-n-commits" Тогда
100+
Ключ = "КоличествоКоммитовДоPush";
101+
ИначеЕсли КлючИЗначение.Ключ = "check-authors" Тогда
102+
Ключ = "ПроверитьАвторовХранилища";
103+
ИначеЕсли КлючИЗначение.Ключ = "stop-if-empty-comment" Тогда
104+
Ключ = "ПрерватьВыполнениеБезКомментарияКВерсии";
105+
ИначеЕсли КлючИЗначение.Ключ = "auto-set-tags" Тогда
106+
Ключ = "АвтоматическаяУстановкаТэговПоВерсиям";
107+
ИначеЕсли КлючИЗначение.Ключ = "process-fatform-modules" Тогда
108+
Ключ = "ПереименовыватьФайлМодуляОбычнойФормы";
109+
Иначе
110+
ВызватьИсключение НекорректнаяСтруктураНастроек();
111+
КонецЕсли;
112+
113+
Если ПустаяСтрока(КлючИЗначение.Значение) и мНастройки.Свойство(Ключ) Тогда
114+
КлючИЗначение.Значение = мНастройки[Ключ];
115+
КонецЕсли;
116+
117+
Репо.Вставить(Ключ, КлючИЗначение.Значение);
118+
119+
КонецЦикла;
120+
121+
Для Каждого ГлобальнаяНастройка Из мНастройки Цикл
122+
123+
Ключ = ГлобальнаяНастройка.Ключ;
124+
125+
Если ГлобальнаяНастройка.Ключ = "Репозитарии" Тогда
126+
Продолжить
127+
КонецЕсли;
128+
129+
ЕстьСвояНастройка = Репо.Свойство(Ключ);
130+
131+
Если НЕ ЕстьСвояНастройка
132+
ИЛИ ЕстьСвояНастройка и ПустаяСтрока(Репо[Ключ]) Тогда
133+
134+
Репо.Вставить(Ключ, ГлобальнаяНастройка.Значение);
135+
КонецЕсли;
136+
137+
КонецЦикла
138+
139+
КонецПроцедуры
140+
141+
Функция НекорректнаяСтруктураНастроек()
142+
Возврат "Некорректная структура файла настроек";
143+
КонецФункции

src/multi-controller.os

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,33 @@
3232

3333
Процедура ПрочитатьНастройкиИзФайла(Знач ФайлНастроек)
3434

35-
Конфиг = ЗагрузитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "xml-config.os"));
36-
мНастройки = Конфиг.ПрочитатьНастройкиИзФайла(ФайлНастроек);
35+
ФайлКонфига = Новый Файл(ФайлНастроек);
36+
Расширение = ФайлКонфига.Расширение;
37+
38+
Если Расширение = ".xml" Тогда
39+
40+
ПрочитатьНастройкиИзФайлаXML(ФайлНастроек);
41+
42+
ИначеЕсли Расширение = ".json" Тогда
43+
44+
ПрочитатьНастройкиИзФайлаJSON(ФайлНастроек);
45+
46+
КонецЕсли;
47+
48+
КонецПроцедуры
3749

50+
Процедура ПрочитатьНастройкиИзФайлаXML(Знач ФайлНастроек)
51+
52+
Конфиг = ЗагрузитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "xml-config.os"));
53+
мНастройки = Конфиг.ПрочитатьНастройкиИзФайла(ФайлНастроек);
54+
55+
КонецПроцедуры
56+
57+
Процедура ПрочитатьНастройкиИзФайлаJSON(Знач ФайлНастроек)
58+
59+
Конфиг = ЗагрузитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "json-config.os"));
60+
мНастройки = Конфиг.ПрочитатьНастройкиИзФайла(ФайлНастроек);
61+
3862
КонецПроцедуры
3963

4064
////////////////////////////////////////////////////////////////////////

tests/fixtures/config.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"gitsync-options":
3+
{
4+
"global":
5+
{
6+
"email-domain": "server.com",
7+
"v8-version": "1cv8.exe",
8+
"git-executable": "git"
9+
},
10+
"repositories" : [
11+
{
12+
"name" : "test",
13+
"git-local-path": "путь1",
14+
"git-remote": "адрес1",
15+
"v8-storage-dir": "каталог1",
16+
"process-fatform-modules": "on",
17+
"push-every-n-commits": 5,
18+
"auto-set-tags": "on",
19+
"stop-if-empty-comment": "on",
20+
"check-authors": "on"
21+
//"email-domain",
22+
//"v8-version",
23+
//"git-executable",
24+
},
25+
{
26+
"name" : "test2",
27+
"git-local-path": "путь2",
28+
"git-remote": "адрес2",
29+
"v8-storage-dir": "каталог2",
30+
"process-fatform-modules": "on",
31+
"push-every-n-commits": 5,
32+
"auto-set-tags": "on",
33+
"stop-if-empty-comment": "on",
34+
"check-authors": "on"
35+
//"email-domain",
36+
//"v8-version",
37+
//"git-executable",
38+
39+
}
40+
]
41+
}
42+
}

0 commit comments

Comments
 (0)