From 8990af68c98a0cb1e71ab26706f6284afab4aab6 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 3 Jun 2016 18:24:29 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=B1=D0=B8=D0=BB=D0=B4-=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B0=20(=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D0=B8=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B2=20=D1=80=D0=B0=D0=B7=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=D0=B0=D1=85)=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=20Atom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .atom-build.json | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .atom-build.json diff --git a/.atom-build.json b/.atom-build.json new file mode 100644 index 0000000..d0c5ee9 --- /dev/null +++ b/.atom-build.json @@ -0,0 +1,35 @@ +{ + "cmd": "oscript", + "name": "Precommit1c full testing", + "args": [ "-encoding=utf-8", "{PROJECT_PATH}/../oscript-library/tests/testrunner.os", "-runall", "{PROJECT_PATH}/tests"], + "sh": false, + "errorMatch": [ + "{Модуль (?[^/]+) / Ошибка в строке: (?[0-9]+) / (?.*)" + ], + "targets": { + "Run current file": { + "cmd": "oscript", + "args": [ "-encoding=utf-8", "{FILE_ACTIVE}"], + "sh": false, + "errorMatch": [ + "{Модуль (?[^/]+) / Ошибка в строке: (?[0-9]+) / (?.*)" + ] + }, + "Test current test-file": { + "cmd": "oscript", + "args": [ "-encoding=utf-8", "{PROJECT_PATH}/../oscript-library/tests/testrunner.os", "-run", "{FILE_ACTIVE}"], + "sh": false, + "errorMatch": [ + "{Модуль (?[^/]+) / Ошибка в строке: (?[0-9]+) / (?.*)" + ] + }, + "Test select test-name": { + "cmd": "oscript", + "args": [ "-encoding=utf-8", "{PROJECT_PATH}/../oscript-library/tests/testrunner.os", "-run", "{FILE_ACTIVE}", "{SELECTION}"], + "sh": false, + "errorMatch": [ + "{Модуль (?[^/]+) / Ошибка в строке: (?[0-9]+) / (?.*)" + ] + } + } +} From 1611228a65f629565cbce267a279be9065f81f58 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 3 Jun 2016 18:57:03 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=9F=D1=80=D0=B8=20=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=BE=D0=B2=20=D0=BF=D1=80=D0=B8=D0=BD=D1=83?= =?UTF-8?q?=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=20=D0=B8=D1=85?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D0=B2=D0=B0=D1=8E=20=D0=B8?= =?UTF-8?q?=D0=B7-=D0=B7=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BB=D0=B5?= =?UTF-8?q?=D0=BC=20=D1=81=20=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=BE?= =?UTF-8?q?=D0=BC=20=D0=BA=20=D0=BB=D0=BE=D0=B3-=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D0=B0=D0=BC=20fix=20#89=20=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20?= =?UTF-8?q?=D1=83=D1=81=D0=BF=D0=B5=D1=88=D0=BD=D0=BE=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D1=8F=D1=8E=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/v8files-extractor-test.os | 175 ++++++++++++----------- v8files-extractor.os | 239 ++++++++++++++++---------------- 2 files changed, 214 insertions(+), 200 deletions(-) diff --git a/tests/v8files-extractor-test.os b/tests/v8files-extractor-test.os index 9630325..a34dd8e 100644 --- a/tests/v8files-extractor-test.os +++ b/tests/v8files-extractor-test.os @@ -8,15 +8,15 @@ //{ подготовка тестов и данных для тестов Процедура Инициализация() - Лог = Логирование.ПолучитьЛог("oscript.app.v8files-extractor"); + Лог = Логирование.ПолучитьЛог(ИмяЛога()); КонецПроцедуры Функция ПолучитьСписокТестов(Знач Контекст) Экспорт - + юТест = Контекст; - + ВсеТесты = Новый Массив; - + ВсеТесты.Добавить("Тест_ДолженРазложитьФайлОбработкиИзЗаданнойПапки"); ВсеТесты.Добавить("Тест_ДолженРазложитьКаталогСВложеннымиКаталогами"); ВсеТесты.Добавить("Тест_ДолженРазобратьФайлыПоЖурналуИзмененийГит"); @@ -25,49 +25,56 @@ ВсеТесты.Добавить("Тест_ДолженОбработатьИзмененияИзГитДляКаталогаСВложеннымиКаталогами"); ВсеТесты.Добавить("Тест_ДолженОбработатьИзмененияИзГитДляКаталогаСВложеннымиКаталогамиИУдалитьИзКеша"); ВсеТесты.Добавить("Тест_ДолженСобратьФайлОбработкиИзЗаданнойПапки"); - + Возврат ВсеТесты; - + КонецФункции Процедура ПослеЗапускаТеста() Экспорт - ВременныеФайлы.Удалить(); + Попытка + ВременныеФайлы.Удалить(); + Исключение + КонецПопытки; КонецПроцедуры Функция ЗагрузитьИсполнителя() - + ИмяКаталога = ТекущийСценарий().Каталог; Исполнитель = ЗагрузитьСценарий(ОбъединитьПути(ИмяКаталога,"../v8files-extractor.os")); - Лог = Логирование.ПолучитьЛог("oscript.app.v8files-extractor"); + Лог = Логирование.ПолучитьЛог(ИмяЛога()); // Лог.УстановитьУровень(УровниЛога.Отладка); - + Возврат Исполнитель; - + +КонецФункции + +Функция ИмяЛога() + Возврат "oscript.app.v8files-extractor"; КонецФункции Функция ПолучитьФайлТестовойОбработки() - + ИмяКаталога = ТекущийСценарий().Каталог; ИмяФайла = "Fixture"; ИмяФайлаСРасширением = ИмяФайла+".epf"; - + ПутьФайла = ОбъединитьПути(ИмяКаталога, ИмяФайлаСРасширением); ФайлОбработки = Новый Файл(ПутьФайла); Ожидаем.Что(ФайлОбработки.Существует(), "Исходный файл должен существовать").ЭтоИстина(); - + Возврат ФайлОбработки; - + КонецФункции Функция ПолучитьКаталогТестовойОбработки() - + ИмяКаталогаИсходников = "Fixture"; КаталогИсходниковТеста = ОбъединитьПути(КаталогПроекта(), "src", "tests"); - ПутьФайла = ОбъединитьПути(КаталогИсходниковТеста, ИмяКаталогаИсходников); + ПутьФайла = ОбъединитьПути(КаталогИсходниковТеста, ИмяКаталогаИсходников); КаталогИсходников = Новый Файл(ПутьФайла); Ожидаем.Что(КаталогИсходников.Существует(), "Каталог с исходными кодами обработки должен существовать").ЭтоИстина(); - + Возврат КаталогИсходников; КонецФункции @@ -78,12 +85,12 @@ Процедура Тест_ДолженРазложитьФайлОбработкиИзЗаданнойПапки() Экспорт ФайлОбработки = ПолучитьФайлТестовойОбработки(); - + КаталогВыгрузки = ВременныеФайлы.СоздатьКаталог(); - + Исполнитель = ЗагрузитьИсполнителя(); Исполнитель.РазобратьФайл(Новый Файл(ФайлОбработки.ПолноеИмя), КаталогВыгрузки, ФайлОбработки.Путь); - + КаталогИсходников = Новый Файл(ОбъединитьПути(КаталогВыгрузки, ФайлОбработки.ИмяБезРасширения)); Ожидаем.Что(КаталогИсходников.Существует()).ЭтоИстина(); Ожидаем.Что(КаталогИсходников.ЭтоКаталог(), "Должны были найти каталог с именем обработки").ЭтоИстина(); @@ -93,28 +100,28 @@ Процедура Тест_ДолженРазложитьКаталогСВложеннымиКаталогами() Экспорт ФайлОбработки = ПолучитьФайлТестовойОбработки(); - + ИмяВложенногоКаталога = "1"; - + КаталогИсходников = ВременныеФайлы.СоздатьКаталог(); КаталогВыгрузки = ВременныеФайлы.СоздатьКаталог(); СоздатьКаталог(ОбъединитьПути(КаталогИсходников, ИмяВложенногоКаталога)); - + ВложенныйКаталогИсходников = ОбъединитьПути(КаталогИсходников, ИмяВложенногоКаталога); ПутьВложеннойОбработки = ОбъединитьПути(ВложенныйКаталогИсходников, ФайлОбработки.Имя); КопироватьФайл(ФайлОбработки.ПолноеИмя, ПутьВложеннойОбработки); - + ФайлВложеннойОбработки = Новый Файл(ПутьВложеннойОбработки); Ожидаем.Что(ФайлВложеннойОбработки.Существует(), "Должны были найти имя вложенной обработки").ЭтоИстина(); Ожидаем.Что(ФайлВложеннойОбработки.ЭтоФайл(), "Должны были найти признак файла для вложенной обработки").ЭтоИстина(); - + Исполнитель = ЗагрузитьИсполнителя(); Исполнитель.РазобратьКаталог(Новый Файл(КаталогИсходников), КаталогВыгрузки, КаталогИсходников); - + ВложенныйКаталогВыгрузки = ОбъединитьПути(КаталогВыгрузки, ИмяВложенногоКаталога); - + ФайлВложенныйКаталогВыгрузки = Новый Файл(ВложенныйКаталогВыгрузки); Ожидаем.Что(ФайлВложенныйКаталогВыгрузки.Существует(), "Должны были найти имя вложенного каталога").ЭтоИстина(); Ожидаем.Что(ФайлВложенныйКаталогВыгрузки.ЭтоКаталог(), "Должны были найти вложенный каталог").ЭтоИстина(); @@ -125,31 +132,31 @@ КонецПроцедуры Процедура Тест_ДолженОбработатьИзмененияИзГитДляКаталогаСВложеннымиКаталогами() Экспорт - + КаталогПроекта = КаталогПроекта(); - + КаталогВыгрузки = ВременныеФайлы.СоздатьКаталог(); - + СоздатьРепозитарийГит(КаталогВыгрузки, КаталогПроекта); ФайлОбработки = ПолучитьФайлТестовойОбработки(); - + ИмяВложенногоКаталога = "1"; - + КаталогИсходников = ВременныеФайлы.СоздатьКаталог(); ВложенныйКаталогВыгрузки = ОбъединитьПути(КаталогВыгрузки, ИмяВложенногоКаталога); СоздатьКаталог(ВложенныйКаталогВыгрузки); - + ПутьВложеннойОбработки = ОбъединитьПути(ВложенныйКаталогВыгрузки, ФайлОбработки.Имя); Лог.Отладка("ПутьВложеннойОбработки "+ПутьВложеннойОбработки); КопироватьФайл(ФайлОбработки.ПолноеИмя, ПутьВложеннойОбработки); - + ФайлВложеннойОбработки = Новый Файл(ПутьВложеннойОбработки); Ожидаем.Что(ФайлВложеннойОбработки.Существует(), "Должны были найти имя вложенной обработки").ЭтоИстина(); Ожидаем.Что(ФайлВложеннойОбработки.ЭтоФайл(), "Должны были найти признак файла для вложенной обработки").ЭтоИстина(); - + КомандаГит = "git add -A ."; ВыполнитьКомандуГит(КомандаГит); @@ -158,8 +165,8 @@ КомандаГит = "git commit -m ""init commit"""; ВыполнитьКомандуГит(КомандаГит); - - КаталогИсходниковВложенногоКаталога = ОбъединитьПути(КаталогВыгрузки, "src", ИмяВложенногоКаталога); + + КаталогИсходниковВложенногоКаталога = ОбъединитьПути(КаталогВыгрузки, "src", ИмяВложенногоКаталога); ФайлКаталогИсходниковВложенногоКаталога = Новый Файл(КаталогИсходниковВложенногоКаталога); Ожидаем.Что(ФайлКаталогИсходниковВложенногоКаталога.Существует(), "Должны были найти имя вложенного каталога").ЭтоИстина(); Ожидаем.Что(ФайлКаталогИсходниковВложенногоКаталога.ЭтоКаталог(), "Должны были найти вложенный каталог").ЭтоИстина(); @@ -170,13 +177,13 @@ КонецПроцедуры Процедура Тест_ДолженОбработатьИзмененияИзГитДляКаталогаСВложеннымиКаталогамиИУдалитьИзКеша() Экспорт - + КаталогПроекта = КаталогПроекта(); - + КаталогВыгрузки = ВременныеФайлы.СоздатьКаталог(); - + СоздатьРепозитарийГит(КаталогВыгрузки, КаталогПроекта); - + КаталогХуков = ОбъединитьПути(КаталогВыгрузки, ".git", "hooks"); ПутьКФайлуПрекоммит = ОбъединитьПути(КаталогХуков, "pre-commit"); ТекстПрекоммит = Новый ТекстовыйДокумент; @@ -197,23 +204,23 @@ ТекстПрекоммит.Записать(ПутьКФайлуПрекоммит, КодировкаТекста.UTF8NoBOM); ФайлОбработки = ПолучитьФайлТестовойОбработки(); - + ИмяВложенногоКаталога = "1"; - + КаталогИсходников = ВременныеФайлы.СоздатьКаталог(); ВложенныйКаталогВыгрузки = ОбъединитьПути(КаталогВыгрузки, ИмяВложенногоКаталога); СоздатьКаталог(ВложенныйКаталогВыгрузки); - + ПутьВложеннойОбработки = ОбъединитьПути(ВложенныйКаталогВыгрузки, ФайлОбработки.Имя); Лог.Отладка("ПутьВложеннойОбработки "+ПутьВложеннойОбработки); КопироватьФайл(ФайлОбработки.ПолноеИмя, ПутьВложеннойОбработки); - + ФайлВложеннойОбработки = Новый Файл(ПутьВложеннойОбработки); Ожидаем.Что(ФайлВложеннойОбработки.Существует(), "Должны были найти имя вложенной обработки").ЭтоИстина(); Ожидаем.Что(ФайлВложеннойОбработки.ЭтоФайл(), "Должны были найти признак файла для вложенной обработки").ЭтоИстина(); - + КомандаГит = "git add -A ."; ВыполнитьКомандуГит(КомандаГит); @@ -222,13 +229,13 @@ КомандаГит = "git commit -m ""init commit"""; ВыводКоманды = ВыполнитьКомандуГит(КомандаГит); - + // git использует "/" как разделитель каталогов, а не стандартный разделитель пути ОС СтрокаПоиска = "create mode 100644 " + ИмяВложенногоКаталога + "/" + ФайлОбработки.Имя; ФайлУдаленИзИндексаГит = СтрНайти(ВыводКоманды, СтрокаПоиска) = 0; Ожидаем.Что(ФайлУдаленИзИндексаГит, "ожидаем, что файла обработки удален из индекса git").ЭтоИстина(); - КаталогИсходниковВложенногоКаталога = ОбъединитьПути(КаталогВыгрузки, "src", ИмяВложенногоКаталога); + КаталогИсходниковВложенногоКаталога = ОбъединитьПути(КаталогВыгрузки, "src", ИмяВложенногоКаталога); ФайлКаталогИсходниковВложенногоКаталога = Новый Файл(КаталогИсходниковВложенногоКаталога); Ожидаем.Что(ФайлКаталогИсходниковВложенногоКаталога.Существует(), "Должны были найти имя вложенного каталога").ЭтоИстина(); Ожидаем.Что(ФайлКаталогИсходниковВложенногоКаталога.ЭтоКаталог(), "Должны были найти вложенный каталог").ЭтоИстина(); @@ -239,50 +246,50 @@ КонецПроцедуры Процедура Тест_ДолженРазобратьФайлыПоЖурналуИзмененийГит() Экспорт - + ФайлОбработки = ПолучитьФайлТестовойОбработки(); - + ЖурналИзмененийГит = "A " + ФайлОбработки.Имя+" | M " + "pref-" + ФайлОбработки.Имя; - + Исполнитель = ЗагрузитьИсполнителя(); МассивИмен = Исполнитель.ПолучитьИменаИзЖурналаИзмененийГит(ЖурналИзмененийГит); - + Ожидаем.Что(МассивИмен, "Должны были найти измененный файл").Содержит(ФайлОбработки.Имя); Ожидаем.Что(МассивИмен, "Должны были найти измененный файл").Содержит("pref-" + ФайлОбработки.Имя); КонецПроцедуры Процедура Тест_ДолженСоздатьРепозитарийГит() Экспорт - + КаталогПроекта = КаталогПроекта(); - + КаталогРепо = ВременныеФайлы.СоздатьКаталог(); - + СоздатьРепозитарийГит(КаталогРепо, КаталогПроекта); КонецПроцедуры Процедура Тест_ДолженПроверитьНастройкиРепозитарияГит() Экспорт Перем КодВозврата; - + КаталогПроекта = КаталогПроекта(); - + КаталогРепо = ВременныеФайлы.СоздатьКаталог(); - + СоздатьРепозитарийГит(КаталогРепо, КаталогПроекта); - + Исполнитель = ЗагрузитьИсполнителя(); Исполнитель.ПроверитьНастройкиРепозитарияГит(); КонецПроцедуры Процедура Тест_ДолженСобратьФайлОбработкиИзЗаданнойПапки() Экспорт - + КаталогОбработки = ПолучитьКаталогТестовойОбработки(); - + КаталогВыгрузки = ВременныеФайлы.СоздатьКаталог(); - + Исполнитель = ЗагрузитьИсполнителя(); Исполнитель.Компилировать(КаталогОбработки.ПолноеИмя, КаталогВыгрузки); - + ИмяФайлаОбработки = КаталогОбработки.Имя; НайденныеФайлы = НайтиФайлы(КаталогВыгрузки, ИмяФайлаОбработки + ".epf"); @@ -294,7 +301,7 @@ //{ служебные методы -Процедура СоздатьРепозитарийГит(Знач КаталогРепо, КаталогПроекта) +Процедура СоздатьРепозитарийГит(Знач КаталогРепо, КаталогПроекта) Перем КодВозврата; УстановитьТекущийКаталог(КаталогРепо); @@ -302,23 +309,23 @@ ВыполнитьКомандуГит("git init"); ВыполнитьКомандуГит("git config --local core.quotepath false"); - + КаталогHooks = Новый Файл(ОбъединитьПути(КаталогРепо, ".git", "hooks")); Ожидаем.Что(КаталогHooks.Существует(), "Должен существовать исходный каталог сервисной ИБ, а это не так").ЭтоИстина(); - + Лог.Отладка("КаталогHooks.ПолноеИмя " + КаталогHooks.ПолноеИмя); - + КаталогСервиснойИБ = Новый Файл(ОбъединитьПути(КаталогПроекта, "ibService")); Каталог_v8Reader = Новый Файл(ОбъединитьПути(КаталогПроекта, "v8Reader")); Лог.Отладка("КаталогСервиснойИБ.ПолноеИмя " + КаталогСервиснойИБ.ПолноеИмя); - + КаталогСервиснойИБ_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, "ibService")); ПересоздатьКаталог(КаталогСервиснойИБ_конечный); Лог.Отладка("КаталогСервиснойИБ_конечный.ПолноеИмя " + КаталогСервиснойИБ_конечный.ПолноеИмя); КопироватьДеревоФайлов(КаталогСервиснойИБ.ПолноеИмя, КаталогСервиснойИБ_конечный.ПолноеИмя); Ожидаем.Что(КаталогСервиснойИБ_конечный.Существует(), "Должен существовать конечный каталог сервисной ИБ, а это не так").ЭтоИстина(); - + ФайлСервиснойИБ = Новый Файл(ОбъединитьПути(КаталогСервиснойИБ_конечный.ПолноеИмя, "1Cv8.1CD")); Лог.Отладка("ФайлСервиснойИБ.ПолноеИмя " + ФайлСервиснойИБ.ПолноеИмя); Ожидаем.Что(ФайлСервиснойИБ.Существует(), "Должен существовать файл сервисной ИБ, а это не так").ЭтоИстина(); @@ -337,7 +344,7 @@ Лог.Отладка("Файл_pre_commit_конечный.ПолноеИмя " + Файл_pre_commit_конечный); Файл_сценария_исходный = Новый Файл(ОбъединитьПути(КаталогПроекта, "v8files-extractor.os")); Файл_сценария_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, Файл_сценария_исходный.Имя)); - + КопироватьФайл(Файл_сценария_исходный.ПолноеИмя, Файл_сценария_конечный.ПолноеИмя); Ожидаем.Что(Файл_сценария_конечный.Существует(), "Должен существовать Файл_сценария_конечный, а это не так").ЭтоИстина(); КонецПроцедуры @@ -366,7 +373,7 @@ Для Каждого Файл из Файлы Цикл Если Файл.ЭтоКаталог() Тогда Лог.Отладка(" Каталог.ПолноеИмя: " + Файл.ПолноеИмя); - + НовыйКонечныйКаталог = Новый Файл(ОбъединитьПути(Куда, Файл.Имя)); // Лог.Отладка(" НовыйКонечныйКаталог.ПолноеИмя: " + НовыйКонечныйКаталог.ПолноеИмя); Если НовыйКонечныйКаталог.Существует() Тогда @@ -378,7 +385,7 @@ Лог.Отладка("Создаю каталог "+НовыйКонечныйКаталог.ПолноеИмя); СоздатьКаталог(НовыйКонечныйКаталог.ПолноеИмя); КонецЕсли; - + КопироватьДеревоФайлов(Файл.ПолноеИмя, НовыйКонечныйКаталог.ПолноеИмя); Иначе Лог.Отладка(" Откуда Файл.ПолноеИмя: " + Файл.ПолноеИмя); @@ -389,7 +396,7 @@ КонецПроцедуры Функция ВыполнитьКомандуГит(КомандаГит, КодВозврата = Неопределено, ПроверятьНулевойКодВозврата = Истина) - + Лог.Информация("Запускаю "+КомандаГит); Вывод = ПолучитьВыводПроцесса(КомандаГит, КодВозврата); Лог.Информация(" Вывод команды гит: " + Вывод); @@ -400,19 +407,19 @@ КонецФункции Функция ПолучитьВыводПроцесса(Знач КоманднаяСтрока, КодВозврата) - + // Это для dev версии 1.0.11 Процесс = СоздатьПроцесс(КоманднаяСтрока, , Истина,, КодировкаТекста.UTF8); Процесс.Запустить(); Вывод = ""; - + Процесс.ОжидатьЗавершения(); - + Вывод = Вывод + Процесс.ПотокВывода.Прочитать(); Вывод = Вывод + Процесс.ПотокОшибок.Прочитать(); - + КодВозврата = Процесс.КодВозврата; - + // ЛогФайл = ВременныеФайлы.НовоеИмяФайла(); // СтрокаЗапуска = "cmd /C """ + КоманднаяСтрока + " > """ + ЛогФайл + """ 2>&1"""; // Лог.Отладка(СтрокаЗапуска); @@ -422,20 +429,20 @@ // Вывод = ЧтениеТекста.Прочитать(); // ЧтениеТекста.Закрыть(); // ВременныеФайлы.УдалитьФайл(ЛогФайл); - + Возврат Вывод; - + КонецФункции Функция РазвернутьМассивФайловВИменаФайлов(Знач МассивОбъектовФайл) - + ИменаФайлов = Новый Массив; Для Каждого Файл Из МассивОбъектовФайл Цикл ИменаФайлов.Добавить(Файл.Имя); КонецЦикла; - + Возврат ИменаФайлов; - + КонецФункции Функция КаталогПроекта() diff --git a/v8files-extractor.os b/v8files-extractor.os index 369497e..7d4b8e8 100644 --- a/v8files-extractor.os +++ b/v8files-extractor.os @@ -25,15 +25,15 @@ Перем ЭтоWindows; Функция Версия() Экспорт - - Версия = "2.0.3"; - + + Версия = "2.0.4"; + Возврат "v" + Версия; - + КонецФункции Функция ВозможныеКоманды() - + Если мВозможныеКоманды = Неопределено Тогда мВозможныеКоманды = Новый Структура; мВозможныеКоманды.Вставить("Декомпилировать", "--decompile"); @@ -41,33 +41,35 @@ мВозможныеКоманды.Вставить("ОбработатьИзмененияИзГит", "--git-precommit"); мВозможныеКоманды.Вставить("Компилировать", "--compile"); КонецЕсли; - + Возврат мВозможныеКоманды; - + КонецФункции Функция ЗапускВКоманднойСтроке() Лог_cmdline = Логирование.ПолучитьЛог("oscript.lib.cmdline"); Лог_cmdline.УстановитьУровень(УровниЛога.Отладка); + Лог_cmdline.Закрыть(); + ВыводПоУмолчанию = Новый ВыводЛогаВКонсоль(); Лог_cmdline.ДобавитьСпособВывода(ВыводПоУмолчанию); - + Аппендер = Новый ВыводЛогаВФайл(); Аппендер.ОткрытьФайл(ОбъединитьПути(КаталогПроекта(), ИмяСкрипта()+".cmdline.log")); Лог_cmdline.ДобавитьСпособВывода(Аппендер); - + КодВозврата = 0; - + Если ТекущийСценарий().Источник <> СтартовыйСценарий().Источник Тогда Возврат Ложь; КонецЕсли; - + Лог.Информация("precommit1c " + Версия() + Символы.ПС); - + Попытка - + Парсер = Новый ПарсерАргументовКоманднойСтроки(); - + ДобавитьОписаниеКомандыДекомпилировать(Парсер); ДобавитьОписаниеКомандыПомощь(Парсер); ДобавитьОписаниеКомандыИзмененияПоЖурналуГит(Парсер); @@ -85,7 +87,7 @@ Для Каждого Параметр Из Аргументы.ЗначенияПараметров Цикл Лог.Отладка(Параметр.Ключ + " = " + Параметр.Значение); КонецЦикла; - + Если Команда = ВозможныеКоманды().Декомпилировать Тогда Декомпилировать(Аргументы.ЗначенияПараметров["ПутьВходящихДанных"], Аргументы.ЗначенияПараметров["ВыходнойКаталог"]); ИначеЕсли Команда = ВозможныеКоманды().Помощь Тогда @@ -94,21 +96,24 @@ ОбработатьИзмененияИзГит(Аргументы.ЗначенияПараметров["ВыходнойКаталог"], Аргументы.ЗначенияПараметров["--remove-orig-bin-files"]); ИначеЕсли Команда = ВозможныеКоманды().Компилировать Тогда Компилировать( - Аргументы.ЗначенияПараметров["ПутьВходящихДанных"], - Аргументы.ЗначенияПараметров["ВыходнойКаталог"], + Аргументы.ЗначенияПараметров["ПутьВходящихДанных"], + Аргументы.ЗначенияПараметров["ВыходнойКаталог"], Аргументы.ЗначенияПараметров["--recursive"] ); КонецЕсли; - + Исключение Лог.Ошибка(ОписаниеОшибки()); КодВозврата = 1; КонецПопытки; - - ВременныеФайлы.Удалить(); + + Попытка + ВременныеФайлы.Удалить(); + Исключение + КонецПопытки; Возврат Истина; - + КонецФункции Процедура ДобавитьОписаниеКомандыДекомпилировать(Знач Парсер) @@ -124,12 +129,12 @@ КонецПроцедуры Процедура ДобавитьОписаниеКомандыИзмененияПоЖурналуГит(Знач Парсер) - + ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().ОбработатьИзмененияИзГит); Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ВыходнойКаталог"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--remove-orig-bin-files"); Парсер.ДобавитьКоманду(ОписаниеКоманды); - + КонецПроцедуры Процедура ДобавитьОписаниеКомандыКомпилировать(Знач Парсер) @@ -145,8 +150,9 @@ ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; Лог = Логирование.ПолучитьЛог("oscript.app.v8files-extractor"); + Лог.Закрыть(); //Лог.УстановитьУровень(УровниЛога.Отладка); - + ВыводПоУмолчанию = Новый ВыводЛогаВКонсоль(); Лог.ДобавитьСпособВывода(ВыводПоУмолчанию); @@ -174,13 +180,13 @@ ОтносительныйПутьКаталога = ПолучитьОтносительныйПутьФайла(КаталогКорень, ПутьКаталога); ОтносительныйПутьКаталога = ?(ПустаяСтрока(ОтносительныйПутьКаталога), ПутьКаталога, ОтносительныйПутьКаталога); Лог.Информация(СтрШаблон("Подготовка выгрузки каталога %1 в каталог %2, корень %3", ОтносительныйПутьКаталога, КаталогВыгрузки, КаталогКорень)); - + ИмяКаталогаВыгрузки = Новый Файл(КаталогВыгрузки).Имя; - + Файлы = НайтиФайлы(ПутьКаталога, ПолучитьМаскуВсеФайлы()); Для Каждого Файл из Файлы Цикл Если Файл.ЭтоКаталог() Тогда - + РазобратьКаталог(Новый Файл(Файл.ПолноеИмя), КаталогВыгрузки, КаталогКорень); ИначеЕсли ТипФайлаПоддерживается(Файл) Тогда @@ -191,60 +197,60 @@ Лог.Информация(СтрШаблон("Завершена выгрузка файла %1 в каталог %2", Файл.Имя, ИмяКаталогаВыгрузки)); КонецЕсли; КонецЦикла; - + Лог.Информация(СтрШаблон("Завершена выгрузка каталога %1 в каталог %2, корень %3", ОтносительныйПутьКаталога, КаталогВыгрузки, КаталогКорень)); КонецПроцедуры Функция РазобратьФайл(Знач Файл, Знач КаталогВыгрузки, Знач КаталогКорень = "") Экспорт ПутьФайла = Файл.ПолноеИмя; Лог.Информация(СтрШаблон("Проверка необходимости выгрузки файла %1 в каталог %2, корень %3", ПутьФайла, КаталогВыгрузки, КаталогКорень)); - + КаталогИсходников = РазобратьФайлВнутр(Файл, КаталогВыгрузки, КаталогКорень); - + Лог.Информация(СтрШаблон("Завершена проверка необходимости выгрузки файла %1 в каталог %2, корень %3", ПутьФайла, КаталогВыгрузки, КаталогКорень)); - + Возврат КаталогИсходников; - + КонецФункции Функция ТипФайлаПоддерживается(Файл) Если ПустаяСтрока(Файл.Расширение) Тогда Возврат Ложь; КонецЕсли; - + Поз = Найти(".epf,.erf,", Файл.Расширение+","); Возврат Поз > 0; - + КонецФункции Функция РазобратьФайлВнутр(Знач Файл, Знач КаталогВыгрузки, Знач КаталогКорень) - + ПутьФайла = Файл.ПолноеИмя; Если Не ТипФайлаПоддерживается(Файл) Тогда ВызватьИсключение "Тип файла """+Файл.Расширение+""" не поддерживается"; КонецЕсли; - + Ожидаем.Что(Файл.Существует(), "Файл " + ПутьФайла + " должен существовать").ЭтоИстина(); - + ОтносительныйПутьКаталогаФайла = ПолучитьОтносительныйПутьФайла(КаталогКорень, ОбъединитьПути(Файл.Путь, Файл.ИмяБезРасширения)); Лог.Отладка("ОтносительныйПутьКаталогаФайла <"+ОтносительныйПутьКаталогаФайла+">"); - + ПутьКаталогаИсходников = ОбъединитьПути(КаталогВыгрузки, ОтносительныйПутьКаталогаФайла); Лог.Отладка("ПутьКаталогаИсходников <"+ПутьКаталогаИсходников+">"); ПапкаИсходников = Новый Файл(ПутьКаталогаИсходников); ОбеспечитьПустойКаталог(ПапкаИсходников); ЗапуститьРаспаковку(Файл, ПапкаИсходников); - + Возврат ПапкаИсходников.ПолноеИмя; - + КонецФункции Функция ПолучитьОтносительныйПутьФайла(КаталогКорень, ВнутреннийКаталог) - Если ПустаяСтрока(КаталогКорень) Тогда + Если ПустаяСтрока(КаталогКорень) Тогда Возврат ""; КонецЕсли; - + ФайлКорень = Новый Файл(КаталогКорень); ФайлВнутреннийКаталог = Новый Файл(ВнутреннийКаталог); Рез = СтрЗаменить(ФайлВнутреннийКаталог.ПолноеИмя, ФайлКорень.ПолноеИмя, ""); @@ -258,40 +264,41 @@ КонецФункции Процедура ЗапуститьРаспаковку(Знач Файл, Знач ПапкаИсходников) - + Лог.Отладка("Запускаем распаковку файла"); - + Конфигуратор = Новый УправлениеКонфигуратором(); КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); Конфигуратор.КаталогСборки(КаталогВременнойИБ); - + ЛогКонфигуратора = Логирование.ПолучитьЛог("oscript.lib.v8runner"); ЛогКонфигуратора.УстановитьУровень(Лог.Уровень()); - + ЛогКонфигуратора.Закрыть(); + Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); Параметры[0] = "ENTERPRISE"; - + ПутьV8Reader = ОбъединитьПути(ТекущийСценарий().Каталог, "v8Reader", "V8Reader.epf"); Лог.Отладка("Путь к V8Reader: " + ПутьV8Reader); Ожидаем.Что(Новый Файл(ПутьV8Reader).Существует(), "Некорректно установлен V8Reader. Не обнаружен файл <" + ПутьV8Reader + ">").ЭтоИстина(); - + КоманднаяСтрокаV8Reader = СтрЗаменить("/C""decompile;pathtocf;%1;pathout;%2;convert-mxl2txt;ЗавершитьРаботуПосле;""","%1", Файл.ПолноеИмя); КоманднаяСтрокаV8Reader = СтрЗаменить(КоманднаяСтрокаV8Reader,"%2", ПапкаИсходников.ПолноеИмя); - + Лог.Отладка("Командная строка V8Reader: " + КоманднаяСтрокаV8Reader); Параметры.Добавить("/RunModeOrdinaryApplication"); Параметры.Добавить("/Execute """ + ПутьV8Reader + """"); Параметры.Добавить(КоманднаяСтрокаV8Reader); - + Конфигуратор.ВыполнитьКоманду(Параметры); Лог.Отладка("Вывод 1С:Предприятия - " + Конфигуратор.ВыводКоманды()); Лог.Отладка("Очищаем каталог временной ИБ"); - + КонецПроцедуры Процедура ОбеспечитьПустойКаталог(Знач ФайлОбъектКаталога) - + Если Не ФайлОбъектКаталога.Существует() Тогда Лог.Отладка("Создаем новый каталог " + ФайлОбъектКаталога.ПолноеИмя); СоздатьКаталог(ФайлОбъектКаталога.ПолноеИмя); @@ -301,7 +308,7 @@ Иначе ВызватьИсключение "Путь " + ФайлОбъектКаталога.ПолноеИмя + " не является каталогом. Выгрузка невозможна"; КонецЕсли; - + КонецПроцедуры @@ -312,7 +319,7 @@ Сообщить("Параметры командной строки:"); Сообщить(" --decompile inputPath outputPath"); Сообщить(" Разбор файлов на исходники"); - + Сообщить(" --help"); Сообщить(" Показ этого экрана"); Сообщить(" --git-precommit outputPath [--remove-orig-bin-files]"); @@ -325,7 +332,7 @@ Процедура ОбработатьИзмененияИзГит(Знач ВыходнойКаталог, Знач УдалятьФайлыИзИндексаГит) Экспорт - + Если ПустаяСтрока(ВыходнойКаталог) Тогда ВыходнойКаталог = "src"; КонецЕсли; @@ -334,10 +341,10 @@ Лог.Отладка("Каталог выгрузки " + ВыходнойКаталог); ПроверитьНастройкиРепозитарияГит(); - + ЖурналИзмененийГитСтрокой = ПолучитьЖурналИзмененийГит(); ИменаФайлов = ПолучитьИменаИзЖурналаИзмененийГит(ЖурналИзмененийГитСтрокой); - + КаталогИсходников = ОбъединитьПути(КореньРепо, ВыходнойКаталог); СписокНовыхКаталогов = Новый Массив; Для Каждого ИмяФайла Из ИменаФайлов Цикл @@ -353,9 +360,9 @@ КонецЕсли; КонецЕсли; КонецЦикла; - + ДобавитьИсходникиВГит(СписокНовыхКаталогов); - + КонецПроцедуры Процедура УдалитьФайлИзИндексаГит(Знач ПолныйПуть) @@ -369,7 +376,7 @@ Процедура ПроверитьНастройкиРепозитарияГит() Экспорт Перем КодВозврата; - + КомандаПроверкаСостояния = "git config core.quotepath"; Лог.Отладка("Выполняю команду "+КомандаПроверкаСостояния); @@ -380,35 +387,35 @@ Если КодВозврата = 0 И Вывод = "false" Тогда Возврат; КонецЕсли; - + ВызватьИсключение "У текущего репозитария не заданы необходимые настройки! |Выполните команду git config --local core.quotepath false | |А еще лучше сделать глобальную настройку git config --global core.quotepath false"; - + КонецПроцедуры Функция ПолучитьЖурналИзмененийГит() - + Перем КодВозврата; - + Вывод = ВыполнитьКомандуГит("git diff-index --name-status --cached HEAD", КодВозврата, Ложь); Если КодВозврата <> 0 Тогда Вывод = ВыполнитьКомандуГит("git status --porcelain", КодВозврата, Ложь); - + Если КодВозврата <> 0 Тогда ВызватьИсключение "Не удалось собрать журнал изменений git"; КонецЕсли; - + КонецЕсли; - + Возврат Вывод; - + КонецФункции Функция ВыполнитьКомандуГит(КомандаГит, КодВозврата = Неопределено, ПроверятьНулевойКодВозврата = Истина) - + Лог.Отладка("Запускаю "+КомандаГит); Вывод = ПолучитьВыводПроцесса(КомандаГит, КодВозврата); Лог.Отладка(" Вывод команды гит: " + Вывод); @@ -419,19 +426,19 @@ КонецФункции Функция ПолучитьВыводПроцесса(Знач КоманднаяСтрока, КодВозврата) - + // // Это для dev версии 1.0.11 // Процесс = СоздатьПроцесс(КоманднаяСтрока, , Истина,, КодировкаТекста.UTF8); // Процесс.Запустить(); // Вывод = ""; - + // Процесс.ОжидатьЗавершения(); - + // Вывод = Вывод + Процесс.ПотокВывода.Прочитать(); // Вывод = Вывод + Процесс.ПотокОшибок.Прочитать(); - + // КодВозврата = Процесс.КодВозврата; - + ЛогФайл = ВременныеФайлы.НовоеИмяФайла(); СтрокаЗапуска = "cmd /C """ + КоманднаяСтрока + " > """ + ЛогФайл + """ 2>&1"""; Лог.Отладка(СтрокаЗапуска); @@ -440,9 +447,9 @@ ЧтениеТекста = Новый ЧтениеТекста(ЛогФайл, "utf-8"); Вывод = ЧтениеТекста.Прочитать(); ЧтениеТекста.Закрыть(); - + Возврат Вывод; - + КонецФункции Функция ПолучитьИменаИзЖурналаИзмененийГит(Знач ЖурналИзмененийГит) Экспорт @@ -456,7 +463,7 @@ // ЖурналИзмененийГит = СтрЗаменить(ЖурналИзмененийГит, Символ(0), Символы.ПС); // МассивСтрокЖурнала = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(ЖурналИзмененийГит, Символы.ПС); //Символ(0)); // КонецЕсли; - + Для Каждого СтрокаЖурнала Из МассивСтрокЖурнала Цикл Лог.Отладка(" <"+СтрокаЖурнала +">"); СтрокаЖурнала = СокрЛ(СтрокаЖурнала); @@ -474,9 +481,9 @@ Процедура ДобавитьИсходникиВГит(Знач СписокНовыхКаталогов) Перем КодВозврата; - + Для Каждого Каталог Из СписокНовыхКаталогов Цикл - + Лог.Отладка("Запуск git add для каталога " + Каталог); Вывод = ПолучитьВыводПроцесса("git add --all " + ОбернутьПутьВКавычки(Каталог), КодВозврата); Лог.Отладка("Вывод git add: " + Вывод); @@ -484,7 +491,7 @@ Лог.Ошибка(Вывод); ЗавершитьРаботу(КодВозврата); КонецЕсли; - + КонецЦикла КонецПроцедуры @@ -492,12 +499,12 @@ Функция Компилировать(Знач Путь, Знач КаталогВыгрузки, Знач Рекурсивно = Ложь) Экспорт ПутьКИсходникам = ОбъединитьПути(ТекущийКаталог(), Путь); - + ПапкаИсходников = Новый Файл(ПутьКИсходникам); - + Ожидаем.Что(ПапкаИсходников.Существует(), "Папка " + ПутьКИсходникам + " должна существовать").ЭтоИстина(); Ожидаем.Что(ПапкаИсходников.ЭтоКаталог(), "Путь " + ПутьКИсходникам + "должен быть каталогом").ЭтоИстина(); - + Если Рекурсивно Тогда СобратьКаталог(ПутьКИсходникам, КаталогВыгрузки); Иначе @@ -515,7 +522,7 @@ КонецЕсли; Для Каждого Файл Из СписокФайловВКаталоге Цикл - + Если НЕ Файл.ЭтоКаталог() Тогда Продолжить; КонецЕсли; @@ -532,13 +539,13 @@ КонецПроцедуры Функция СобратьФайл(Знач ПутьКИсходникам, Знач КаталогВыгрузки) - + Лог.Информация("Собираю исходники <"+ПутьКИсходникам+">"); ПапкаИсходников = Новый Файл(ПутьКИсходникам); Переименования = ПолучитьСоответствиеПереименований(ПутьКИсходникам); - + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); Лог.Информация("Восстанавливаю структуру исходников в <" + ВременныйКаталог + ">"); @@ -568,7 +575,7 @@ ИмяПапки = ПапкаИсходников.Имя; ИмяФайлаОбъекта = ОбъединитьПути(ТекущийКаталог(), КаталогВыгрузки, ИмяПапки + "." + ТипФайла); - + СобратьФайлИзИсходников(ВременныйКаталог, ИмяФайлаОбъекта); Лог.Информация("Успешно собран файл "+ИмяФайлаОбъекта); @@ -577,38 +584,38 @@ КонецФункции Функция ЭтоПутьКИсходнымКодамОбработок(ПутьКПапке) - + ФайлПереименования = Новый Файл(ОбъединитьПути(ПутьКПапке, "renames.txt")); Возврат ФайлПереименования.Существует(); КонецФункции Функция ЭтоПутьКТолстойФорме(ПутьКПапке) - + ФайлМодуля = Новый Файл(ОбъединитьПути(ПутьКПапке, "module.bsl")); ФайлФормы = Новый Файл(ОбъединитьПути(ПутьКПапке, "form")); - + Возврат ФайлМодуля.Существует() И ФайлФормы.Существует(); - + КонецФункции Функция ПолучитьТипФайлаПоКаталогуИсходников(Знач КаталогИсходников) ПутьКФайлуРут = ОбъединитьПути(КаталогИсходников, "root"); ФайлРут = Новый Файл(ПутьКФайлуРут); - + Ожидаем.Что(ФайлРут.Существует(), "Файл <" + ПутьКФайлуРут + "> должен существовать").ЭтоИстина(); Ожидаем.Что(ФайлРут.ЭтоКаталог(), "<" + ПутьКФайлуРут + "> должен быть файлом").ЭтоЛожь(); - + ЧтениеТекста = Новый ЧтениеТекста(ПутьКФайлуРут); СодержаниеРут = ЧтениеТекста.Прочитать(); ЧтениеТекста.Закрыть(); МассивСтрокРут = СтрРазделить(СодержаниеРут, ","); Ожидаем.Что(МассивСтрокРут.Количество(), "Некорректный формат файла root").Больше(1); - + ПутьКФайлуКорневойКонтейнер = ОбъединитьПути(КаталогИсходников, МассивСтрокРут[1]); ФайлКорневойКонтейнер = Новый Файл(ПутьКФайлуКорневойКонтейнер); - + Ожидаем.Что(ФайлКорневойКонтейнер.Существует(), "Файл <" + ПутьКФайлуКорневойКонтейнер + "> должен существовать").ЭтоИстина(); Ожидаем.Что(ФайлКорневойКонтейнер.ЭтоКаталог(), "<" + ПутьКФайлуКорневойКонтейнер + "> должен быть файлом").ЭтоЛожь(); @@ -619,14 +626,14 @@ Если ПрочитаннаяСтрока = Неопределено Тогда Прервать; КонецЕсли; - + СодержаниеКорневойКонтейнер = СодержаниеКорневойКонтейнер + ПрочитаннаяСтрока; КонецЦикла; ЧтениеТекста.Закрыть(); - + МассивСтрокКорневойКонтейнер = СтрРазделить(СодержаниеКорневойКонтейнер, ","); Ожидаем.Что(МассивСтрокКорневойКонтейнер.Количество(), "Некорректный формат файла корневого контейнера <" + ПутьКФайлуКорневойКонтейнер + ">").Больше(3); - + ИдентификаторТипаОбъекта = СокрЛП(МассивСтрокКорневойКонтейнер[3]); Если Лев(ИдентификаторТипаОбъекта, 1) = "{" Тогда ИдентификаторТипаОбъекта = Прав(ИдентификаторТипаОбъекта, СтрДлина(ИдентификаторТипаОбъекта) - 1); @@ -634,7 +641,7 @@ Если Прав(ИдентификаторТипаОбъекта, 1) = "}" Тогда ИдентификаторТипаОбъекта = Лев(ИдентификаторТипаОбъекта, СтрДлина(ИдентификаторТипаОбъекта) - 1); КонецЕсли; - + ИдентификаторТипаОбъекта = НРег(СокрЛП(ИдентификаторТипаОбъекта)); Если ИдентификаторТипаОбъекта = "c3831ec8-d8d5-4f93-8a22-f9bfae07327f" Тогда @@ -656,17 +663,17 @@ // ПутьКИсходникам - Строка - Путь к папке с исходными кодами обработки // Возвращаемое значение: // Соответствие - Ключ: оригинальный путь файла после распаковки -// Значение: преобразованный путь (например, при +// Значение: преобразованный путь (например, при // раскладывании файлов по иерархии) // Функция ПолучитьСоответствиеПереименований(ПутьКИсходникам) - + Переименования = Новый Соответствие; ФайлПереименования = Новый Файл(ОбъединитьПути(ПутьКИсходникам, "renames.txt")); - + Ожидаем.Что(ФайлПереименования.Существует(), "Файл переименования " + ФайлПереименования.ПолноеИмя + " должен существовать").ЭтоИстина(); - + ЧтениеТекста = Новый ЧтениеТекста(ФайлПереименования.ПолноеИмя, КодировкаТекста.UTF8); СтрокаПереименования = ЧтениеТекста.ПрочитатьСтроку(); Пока СтрокаПереименования <> Неопределено Цикл @@ -685,7 +692,7 @@ ИсходныйПуть = СписокСтрок[0]; ПреобразованныйПуть = СписокСтрок[1]; - + Переименования.Вставить(ИсходныйПуть, ПреобразованныйПуть); КонецЦикла; @@ -712,24 +719,24 @@ Процесс = СоздатьПроцесс(КомандаЗапуска, , Истина, , КодировкаТекста.UTF8); Процесс.Запустить(); Процесс.ОжидатьЗавершения(); - + ВыводПроцесса = Процесс.ПотокВывода.Прочитать(); Ожидаем.Что(Процесс.КодВозврата, "Не удалось упаковать каталог " + ПапкаИсходников + Символы.ПС + ВыводПроцесса).Равно(0); Лог.Отладка(ВыводПроцесса); - + ФайлОбъекта = Новый Файл(ИмяФайлаОбъекта); Лог.Отладка(СтрШаблон("Перемещение из %1 в %2", ВременныйФайл, ИмяФайлаОбъекта)); Если ФайлОбъекта.Существует() Тогда Лог.Отладка(СтрШаблон("Удаляю старый файл %1 ", ИмяФайлаОбъекта)); УдалитьФайлы(ИмяФайлаОбъекта); КонецЕсли; - + ПереместитьФайл(ВременныйФайл, ИмяФайлаОбъекта); КонецПроцедуры Процедура КопироватьСодержимоеКаталога(Откуда, Куда) - + КаталогНазначения = Новый Файл(Куда); Если КаталогНазначения.Существует() Тогда Если КаталогНазначения.ЭтоФайл() Тогда @@ -753,7 +760,7 @@ КонецПроцедуры Функция ПолучитьПутьПрограммыИзСистемныхПутейЗапускаPath(ИмяФайла) - + НайденныеФайлы = Новый Массив; Расширение = ""; @@ -763,15 +770,15 @@ СистемнаяИнформация = Новый СистемнаяИнформация; ПапкаПоиска = СистемнаяИнформация.ПолучитьПеременнуюСреды("PATH"); - РазделительПапок = ";"; + РазделительПапок = ";"; СписокПапок = СтрРазделить(ПапкаПоиска, РазделительПапок); Для сч = 0 По СписокПапок.ВГраница() Цикл ПроверяемаяПапка = СписокПапок[сч]; - + // На Windows папка может быть обернута в кавычки, сбросим их - Если ЭтоWindows - И СтрДлина(ПроверяемаяПапка) >= 2 + Если ЭтоWindows + И СтрДлина(ПроверяемаяПапка) >= 2 И Лев(ПроверяемаяПапка, 1) = """" И Прав(ПроверяемаяПапка, 1) = """" Тогда ПроверяемаяПапка = Сред(ПроверяемаяПапка, 2, СтрДлина(ПроверяемаяПапка) - 2); @@ -807,16 +814,16 @@ КонецФункции Функция УбратьКавычкиВокругПути(Знач Путь) - + Если Лев(Путь, 1) = """" Тогда Путь = Прав(Путь, СтрДлина(Путь) - 1); КонецЕсли; Если Прав(Путь, 1) = """" Тогда Путь = Лев(Путь, СтрДлина(Путь) - 1); КонецЕсли; - + Возврат Путь; - + КонецФункции Функция КаталогПроекта() From f359a3df376b9ce73a33bf22d8b5b389a4142d56 Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Tue, 16 Aug 2016 11:55:01 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20v8reader.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=BB=D0=B0=D1=82=D1=84=D0=BE=D1=80=D0=BC=D0=B5?= =?UTF-8?q?=208.3.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v8Reader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v8Reader b/v8Reader index 810ba87..8c21131 160000 --- a/v8Reader +++ b/v8Reader @@ -1 +1 @@ -Subproject commit 810ba879d974e36f0c90e6284b011f9902549842 +Subproject commit 8c211312c4f8a3ec0cb197b2bbadebc4b1c6c6c8