|
5 | 5 | #Использовать v8runner |
6 | 6 |
|
7 | 7 | Перем Лог; |
| 8 | +Перем КодВозврата; |
8 | 9 |
|
9 | 10 | Функция ЗапускВКоманднойСтроке() |
10 | 11 |
|
| 12 | + КодВозврата = 0; |
| 13 | + |
11 | 14 | Если ТекущийСценарий().Источник <> СтартовыйСценарий().Источник Тогда |
12 | 15 | Возврат Ложь; |
13 | 16 | КонецЕсли; |
14 | 17 |
|
15 | | - Парсер = Новый ПарсерАргументовКоманднойСтроки(); |
16 | | - Парсер.ДобавитьПараметр("ВходящиеФайлы"); |
17 | | - |
18 | | - Аргументы = Парсер.Разобрать(АргументыКоманднойСтроки); |
19 | | - |
20 | | - Для Каждого Параметр Из Аргументы Цикл |
21 | | - Лог.Отладка(Параметр); |
22 | | - КонецЦикла; |
| 18 | + Попытка |
| 19 | + |
| 20 | + Парсер = Новый ПарсерАргументовКоманднойСтроки(); |
| 21 | + |
| 22 | + ВозможныеКоманды = Новый Структура; |
| 23 | + ВозможныеКоманды.Вставить("Декомпилировать", "--decompile"); |
| 24 | + |
| 25 | + ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды.Декомпилировать); |
| 26 | + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьВходящихДанных"); |
| 27 | + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ВыходнойКаталог"); |
| 28 | + Парсер.ДобавитьКоманду(ОписаниеКоманды); |
| 29 | + |
| 30 | + Аргументы = Парсер.РазобратьКоманду(АргументыКоманднойСтроки); |
| 31 | + |
| 32 | + Команда = Аргументы.Команда; |
| 33 | + Лог.Отладка("Передана команда: "+Команда); |
| 34 | + Для Каждого Параметр Из Аргументы.ЗначенияПараметров Цикл |
| 35 | + Лог.Отладка(Параметр.Ключ + " = " + Параметр.Значение); |
| 36 | + КонецЦикла; |
| 37 | + |
| 38 | + Если Команда = ВозможныеКоманды.Декомпилировать Тогда |
| 39 | + Декомпилировать(Аргументы.ЗначенияПараметров["ПутьВходящихДанных"], Аргументы.ЗначенияПараметров["ВыходнойКаталог"]); |
| 40 | + КонецЕсли; |
| 41 | + |
| 42 | + Исключение |
| 43 | + Лог.Ошибка(ОписаниеОшибки()); |
| 44 | + КодВозврата = 1; |
| 45 | + КонецПопытки; |
23 | 46 |
|
24 | 47 | Возврат Истина; |
25 | 48 |
|
26 | 49 | КонецФункции |
27 | 50 |
|
28 | 51 | Процедура Инициализация() |
29 | 52 | Лог = Логирование.ПолучитьЛог("oscript.app.v8files-extractor"); |
30 | | - Лог.Отладка("Параметры командной строки:"); |
| 53 | + Лог.УстановитьУровень(УровниЛога.Отладка); |
| 54 | +КонецПроцедуры |
| 55 | + |
| 56 | +Процедура Декомпилировать(Знач Путь, Знач КаталогВыгрузки) Экспорт |
| 57 | + Файл = Новый Файл(Путь); |
| 58 | + Если Файл.ЭтоКаталог() Тогда |
| 59 | + РазобратьКаталог(Файл.ПолноеИмя, КаталогВыгрузки); |
| 60 | + Иначе |
| 61 | + РазобратьФайл(Файл.ПолноеИмя, КаталогВыгрузки); |
| 62 | + КонецЕсли; |
31 | 63 | КонецПроцедуры |
32 | 64 |
|
33 | 65 | Процедура РазобратьКаталог(Знач ПутьКаталога, Знач КаталогВыгрузки) Экспорт |
|
133 | 165 | Инициализация(); |
134 | 166 |
|
135 | 167 | Если ЗапускВКоманднойСтроке() Тогда |
136 | | - // TODO Сообщить код возврата в оболочку ОС |
| 168 | + ЗавершитьРаботу(КодВозврата); |
137 | 169 | КонецЕсли; |
138 | 170 |
|
139 | 171 |
|
0 commit comments