Skip to content
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

Реализация сборки обработки на oscript. Fix #38 #45

Merged
merged 14 commits into from
Nov 3, 2015

Conversation

nixel2007
Copy link
Member

Базовый функционал команды --compile pyv8unpack.py портирован на oscript.

На выходе пока получаю "Ошибку формата потока" при открытии обработки в конфигураторе, буду еще смотреть. Exe'шник v8unpack брал из макета в обработке V8Reader.epf в зависимостях прекоммита (может в этом дело?)
Публикую в качестве WIP, буду рад, если укажете на явные косяки или некрасивости.

Вывод отладочного лога:

Script started: 02.11.2015 23:26:22
ОТЛАДКА - Передана команда: --compile
ОТЛАДКА - ПутьВходящихДанных = ..\src\Fixture
ОТЛАДКА - ВыходнойКаталог = C:\Users\nixel\Documents\test
ОТЛАДКА - 18b638a7-3de6-4b2c-a124-3b13a8bc87da-->und\18b638a7-3de6-4b2c-a124-3b13a8bc87da
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\18b638a7-3de6-4b2c-a124-3b13a8bc87da
ОТЛАДКА - 18b638a7-3de6-4b2c-a124-3b13a8bc87da.0-->Макеты\ДвоичныеДанные.txt
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\18b638a7-3de6-4b2c-a124-3b13a8bc87da.0
ОТЛАДКА - 18b638a7-3de6-4b2c-a124-3b13a8bc87da.0-->und\18b638a7-3de6-4b2c-a124-3b13a8bc87da.0
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\18b638a7-3de6-4b2c-a124-3b13a8bc87da.0
ОТЛАДКА - 4f7f24a2-3a7b-4095-b622-1f8a1e57459c-->und\4f7f24a2-3a7b-4095-b622-1f8a1e57459c
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\4f7f24a2-3a7b-4095-b622-1f8a1e57459c
ОТЛАДКА - 4f7f24a2-3a7b-4095-b622-1f8a1e57459c.0-->Form\Форма1\Форма.txt
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\4f7f24a2-3a7b-4095-b622-1f8a1e57459c.0
ОТЛАДКА - 4f7f24a2-3a7b-4095-b622-1f8a1e57459c.0-->und\4f7f24a2-3a7b-4095-b622-1f8a1e57459c.0
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\4f7f24a2-3a7b-4095-b622-1f8a1e57459c.0
ОТЛАДКА - 4f7f24a2-3a7b-4095-b622-1f8a1e57459c.0-->und\4f7f24a2-3a7b-4095-b622-1f8a1e57459c.0
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\4f7f24a2-3a7b-4095-b622-1f8a1e57459c.0
ОТЛАДКА - 8fa48c24-db97-44e3-9e3d-41057bdad73b-->und\8fa48c24-db97-44e3-9e3d-41057bdad73b
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\8fa48c24-db97-44e3-9e3d-41057bdad73b
ОТЛАДКА - 8fa48c24-db97-44e3-9e3d-41057bdad73b.0-->Макеты\ТекстовыйДокумент.txt
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\8fa48c24-db97-44e3-9e3d-41057bdad73b.0
ОТЛАДКА - 8fa48c24-db97-44e3-9e3d-41057bdad73b.0-->und\8fa48c24-db97-44e3-9e3d-41057bdad73b.0
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\8fa48c24-db97-44e3-9e3d-41057bdad73b.0
ОТЛАДКА - 99c8df1e-5033-46bb-aac6-7f093ce92a3b-->und\99c8df1e-5033-46bb-aac6-7f093ce92a3b
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\99c8df1e-5033-46bb-aac6-7f093ce92a3b
ОТЛАДКА - 99c8df1e-5033-46bb-aac6-7f093ce92a3b.0-->Макеты\СхемаКомпоновкиДанных\T.xml
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\99c8df1e-5033-46bb-aac6-7f093ce92a3b.0
ОТЛАДКА - 99c8df1e-5033-46bb-aac6-7f093ce92a3b.0-->und\99c8df1e-5033-46bb-aac6-7f093ce92a3b.0
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\99c8df1e-5033-46bb-aac6-7f093ce92a3b.0
ОТЛАДКА - a981feb3-1026-4b79-b758-d406f4e487a1-->und\a981feb3-1026-4b79-b758-d406f4e487a1
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\a981feb3-1026-4b79-b758-d406f4e487a1
ОТЛАДКА - copyinfo-->und\copyinfo
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\copyinfo
ОТЛАДКА - d661ecd6-4fe1-47ba-a3d9-96181ef46477-->und\d661ecd6-4fe1-47ba-a3d9-96181ef46477
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\d661ecd6-4fe1-47ba-a3d9-96181ef46477
ОТЛАДКА - d661ecd6-4fe1-47ba-a3d9-96181ef46477.0-->Form\Форма
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\d661ecd6-4fe1-47ba-a3d9-96181ef46477.0
ОТЛАДКА - e5c0d036-33df-4533-a77e-48e9e2334648-->und\e5c0d036-33df-4533-a77e-48e9e2334648
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\e5c0d036-33df-4533-a77e-48e9e2334648
ОТЛАДКА - e5c0d036-33df-4533-a77e-48e9e2334648.0-->Макеты\ТабличныйДокумент.mxl
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\e5c0d036-33df-4533-a77e-48e9e2334648.0
ОТЛАДКА - e5c0d036-33df-4533-a77e-48e9e2334648.0-->und\e5c0d036-33df-4533-a77e-48e9e2334648.0
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\e5c0d036-33df-4533-a77e-48e9e2334648.0
ОТЛАДКА - root-->und\root
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\root
ОТЛАДКА - version-->und\version
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\version
ОТЛАДКА - versions-->und\versions
ОТЛАДКА - C:\Program Files (x86)\OneScript\bin\..\src\Fixture\versions
ОТЛАДКА - C:\Users\nixel\AppData\Roaming\npm\v8unpack.exe -B "C:\Users\nixel\AppData\Local\Temp\sw1d03sq.3qh.tmp" "C:\Users\nixel\AppData\Local\Temp\3jhpr34b.lfv.epf"
ОТЛАДКА - 
Build OK!
ОТЛАДКА - Копирование из C:\Users\nixel\AppData\Local\Temp\3jhpr34b.lfv.epf в C:\Users\nixel\Documents\test

Script completed: 02.11.2015 23:26:23
Duration: 00:00:00.1222398

/cc @artbear @EvilBeaver
Fix #38

ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().Компилировать);
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьВходящихДанных");
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ВыходнойКаталог");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--type");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что за именованный параметр --type ?
В справке (в методе Инициализация) описания этого параметра также нет

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Его смысл такой же как в скрипте на питоне - расширение epf/ert/Неопределено. В начале процедуры Компилировать он проверяется и потом используется для сборки готового файла. Поиск "ТипФайла"
В справку добавлю, да.

@artbear
Copy link
Member

artbear commented Nov 3, 2015

@nixel2007 Проведу сегодня код-ревью, спасибо!

СоздатьКаталог(Куда);
КонецЕсли;

Файлы = НайтиФайлы(Откуда, "*.*");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь вместо *.* лучше юзать метод ПолучитьМаскуВсеФайлы() (Win/Linux)

@nixel2007
Copy link
Member Author

@artbear Поправил твои замечания. Пробелы перевел в табы
@pumbaEO Убрал проверку экранирования.

Спасибо!


ПереместитьФайл(ВременныйФайл, ИмяФайлаОбъекта);

ВременныеФайлы.УдалитьФайл(ВременныйКаталог);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Не все временные файлы удаляются. Например, не удаляется файл из ВременныйФайл = ВременныеФайлы.СоздатьФайл(ТипФайла);
  2. Предлагаю удаление временных файлов перенести в метод ЗапускВКоманднойСтроке
    и удалять общей строкой ВременныеФайлы.Удалить()

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Пока добавил удаление в конец процедуры.
  2. Хочешь это сделать целиком для скрипта? При ошибке времени выполнения скрипта до финального ВременныеФайлы.Удалить() может не дойти. Но в целом вероятность мусора снижается, да.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Переделаешь для скрипта в целом?
для исключительных ситуаций как раз может быть удобно, чтобы окружение/временные файлы не удалялись и можно было сделать разбор проблемы

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Окей, сделаю.

КопироватьСодержимоеКаталога(СтарыйПуть, НовыйПуть);
Иначе
Лог.Отладка(СтарыйПуть);
// Нормализовать путь?
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pumbaEO Можешь подсказать по этому месту? В исходнике на питоне это выглядит так:

if os.path.isdir(old_path):
                new_path = os.path.join(temp_path, listline[0])
                shutil.copytree(old_path, new_path)
            else:
                log.debug(old_path)
                shutil.copy(os.path.normpath(old_path), new_path)

Чем будут отличаться нормализованный путь от обычного old_path? Или это тоже тонкости питона?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Снимаю вопрос, не заметил, что функции копирования разные.

@artbear
Copy link
Member

artbear commented Nov 3, 2015

@nixel2007

На выходе пока получаю "Ошибку формата потока" при открытии обработки в конфигураторе, буду еще смотреть. Exe'шник v8unpack брал из макета в обработке V8Reader.epf в зависимостях прекоммита (может в этом дело?)

Разобрался с этой ошибкой?

@nixel2007
Copy link
Member Author

@artbear Пока нет. Сейчас рефакторю по замечаниям.

@nixel2007
Copy link
Member Author

@artbear Отрефакторил.
По поводу параметра --type ты согласен (в справку добавил)?

@artbear
Copy link
Member

artbear commented Nov 3, 2015

@nixel2007 Доработки по справке видел, нормально.

@artbear
Copy link
Member

artbear commented Nov 3, 2015

Теперь бы понять, что с ошибкой открытия в Конфигураторе

@nixel2007
Copy link
Member Author

На сколько я понимаю, готово. Собирает.
@artbear

@artbear
Copy link
Member

artbear commented Nov 3, 2015

@nixel2007 Посмотрю

@nixel2007 nixel2007 changed the title [WIP] Реализация сборки обработки на oscript. Fix #38 Реализация сборки обработки на oscript. Fix #38 Nov 3, 2015
@artbear
Copy link
Member

artbear commented Nov 3, 2015

@nixel2007 Прогони тесты
У меня они падают на твоей сборке.

Пример запуска
oscript T:\Projects\1script\tests\testrunner.os Precommit1c\v8files-extractor-test.os

@nixel2007
Copy link
Member Author

@artbear Артур, в текущей xDrivenDevelopment/develop оно тоже падает. Причем падает на распаковке. Вероятно, это какие-то твои изменения по #40

@artbear
Copy link
Member

artbear commented Nov 3, 2015

@nixel2007 C Тестами я разобрался.
А вот сборка не работает :(
Строка запуска
W:\0\1>T:\Projects\precommit1c\v8files-extractor.os --compile W:\0\1\Fixture W:\0\1\Fixture.epf

Выдается ошибка

ОТЛАДКА - Перемещение из C:\Temp\muluz2fo.inj.tmp в W:\0\1\.\Fixture.epf\Fixture.epf
ОШИБКА - {Модуль T:\Projects\precommit1c\v8files-extractor.os / Ошибка в строке: 548 / Внешнее исключение: Не удалось найти часть пути.}

На номер строки внимания не обращай, падает на строке
ПереместитьФайл(ВременныйФайл, ИмяФайлаОбъекта);

@artbear artbear merged commit 855cae0 into xDrivenDevelopment:develop Nov 3, 2015
artbear added a commit that referenced this pull request Nov 3, 2015
@artbear
Copy link
Member

artbear commented Nov 3, 2015

Оказывается, что в последнем параметре нужно указывать не путь к файлу, а путь к каталогу выгрузки :(
Работает.

@artbear
Copy link
Member

artbear commented Nov 3, 2015

@nixel2007 Спасибо за подарок к завтрашнему празднику :)

@nixel2007
Copy link
Member Author

Вообще я уже думал о том, что надо переструктурировать справку по 1с-версии
скрипта. Сейчас вообще не понятно, что за параметры, что в них надо
помещать и все такое.

3 нояб. 2015 г. 7:28 PM пользователь "Artur Ayukhanov" <
notifications@github.com> написал:

Оказывается, что в последнем параметре нужно указывать не путь к файлу, а путь к каталогу выгрузки :(
Работает.


Reply to this email directly or view it on GitHub.

@EvilBeaver
Copy link

И воспользоваться фичей автодокументирования параметров в cmdline

@nixel2007
Copy link
Member Author

@EvilBeaver добавить бы в README по cmdline описание этой фичи и как ей пользоваться.

@EvilBeaver
Copy link

@nixel2007 фича очень свежая, еще не успел. Пользоваться примерно вот так: EvilBeaver/oscript-library@7752aea

@nixel2007
Copy link
Member Author

@EvilBeaver а процедуры "ВывестиСправкуПоКоманде/Командам" может вынести в саму библиотеку cmdline? или их надо будет в каждом скрипте реализовывать?

@EvilBeaver
Copy link

@nixel2007 разумеется, надо вынести в cmdline, просто я пока не придумал, какой формат вывода сообщения устроит всех потребителей.

@nixel2007 nixel2007 deleted the issue-38 branch November 12, 2015 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants