-
Notifications
You must be signed in to change notification settings - Fork 17
/
create-new-branch.os
98 lines (65 loc) · 5.2 KB
/
create-new-branch.os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#Использовать asserts
#Использовать logos
Перем Лог;
Функция ОбернутьВКавычки(Знач Строка)
Возврат """" + Строка + """";
КонецФункции
Процедура ВыполнитьКоманду(Знач КомандаЗапуска, Знач ТекстОшибки = "", Знач РабочийКаталог = "")
Лог.Информация("Выполняю команду: " + КомандаЗапуска);
Процесс = СоздатьПроцесс("cmd.exe /C " + ОбернутьВКавычки(КомандаЗапуска), РабочийКаталог, Истина, , КодировкаТекста.UTF8);
Процесс.Запустить();
Процесс.ОжидатьЗавершения();
Пока НЕ Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл
СтрокаВывода = Процесс.ПотокВывода.ПрочитатьСтроку();
Сообщить(СтрокаВывода);
КонецЦикла;
Если Процесс.КодВозврата <> 0 Тогда
Лог.Ошибка("Код возврата: " + Процесс.КодВозврата);
ВызватьИсключение ТекстОшибки + Символы.ПС + Процесс.ПотокОшибок.Прочитать();
КонецЕсли;
КонецПроцедуры
Процедура Инициализация()
Лог = Логирование.ПолучитьЛог("oscript.app.crowdin-create-new-branch");
КонецПроцедуры
Процедура ЗапускВКоманднойСтроке()
СистемнаяИнформация = Новый СистемнаяИнформация;
// DEBUG
// СистемнаяИнформация.УстановитьПеременнуюСреды("GIT_LOCAL_BRANCH", "6.0");
// СистемнаяИнформация.УстановитьПеременнуюСреды("CROWDIN_API_KEY", "YOUR_API_TOKEN");
ИмяВеткиГит = СистемнаяИнформация.ПолучитьПеременнуюСреды("GIT_LOCAL_BRANCH");
Ожидаем.Что(ИмяВеткиГит, "Переменная окружения GIT_LOCAL_BRANCH не установлена").Заполнено();
Ожидаем.Что(ИмяВеткиГит, "Переменная окружения CROWDIN_API_KEY не установлена").Заполнено();
Лог.Информация("GIT_LOCAL_BRANCH=" + ИмяВеткиГит);
КаталогСФайламиКПереводу = ОбъединитьПути(ТекущийКаталог(), "src");
ФайлыКПереводу = НайтиФайлы(КаталогСФайламиКПереводу, "*.properties", Истина);
СтрокаДляДобавления = "#ü";
Для Каждого ФайлКПереводу Из ФайлыКПереводу Цикл
Если СтрЗаканчиваетсяНа(ФайлКПереводу.ПолноеИмя, "_ru.properties") Тогда
Продолжить;
КонецЕсли;
Лог.Информация("Найден файл " + ФайлКПереводу.ПолноеИмя);
Лог.Информация("Добавляем служебные символы");
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ФайлКПереводу.ПолноеИмя);
Текст.ДобавитьСтроку(СтрокаДляДобавления);
Текст.Записать(ФайлКПереводу.ПолноеИмя, КодировкаТекста.UTF8NoBom);
КонецЦикла;
КомандаЗапуска = СтрШаблон("crowdin upload sources -b %1", ИмяВеткиГит);
ВыполнитьКоманду(КомандаЗапуска);
Для Каждого ФайлКПереводу Из ФайлыКПереводу Цикл
Если СтрЗаканчиваетсяНа(ФайлКПереводу.ПолноеИмя, "_ru.properties") Тогда
Продолжить;
КонецЕсли;
Лог.Информация("Найден файл " + ФайлКПереводу.ПолноеИмя);
Лог.Информация("Убираем служебные символы");
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ФайлКПереводу.ПолноеИмя);
Текст.УдалитьСтроку(Текст.КоличествоСтрок());
Текст.Записать(ФайлКПереводу.ПолноеИмя, КодировкаТекста.UTF8NoBom);
КонецЦикла;
КомандаЗапуска = СтрШаблон("crowdin upload sources -b %1", ИмяВеткиГит);
ВыполнитьКоманду(КомандаЗапуска);
Лог.Информация("Работа завершена.");
КонецПроцедуры
Инициализация();
ЗапускВКоманднойСтроке();