-
Notifications
You must be signed in to change notification settings - Fork 62
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
Conversation
ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().Компилировать); | ||
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьВходящихДанных"); | ||
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ВыходнойКаталог"); | ||
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--type"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Что за именованный параметр --type
?
В справке (в методе Инициализация) описания этого параметра также нет
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Его смысл такой же как в скрипте на питоне - расширение epf/ert/Неопределено. В начале процедуры Компилировать он проверяется и потом используется для сборки готового файла. Поиск "ТипФайла"
В справку добавлю, да.
@nixel2007 Проведу сегодня код-ревью, спасибо! |
СоздатьКаталог(Куда); | ||
КонецЕсли; | ||
|
||
Файлы = НайтиФайлы(Откуда, "*.*"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Здесь вместо *.*
лучше юзать метод ПолучитьМаскуВсеФайлы()
(Win/Linux)
|
||
ПереместитьФайл(ВременныйФайл, ИмяФайлаОбъекта); | ||
|
||
ВременныеФайлы.УдалитьФайл(ВременныйКаталог); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Не все временные файлы удаляются. Например, не удаляется файл из
ВременныйФайл = ВременныеФайлы.СоздатьФайл(ТипФайла);
- Предлагаю удаление временных файлов перенести в метод
ЗапускВКоманднойСтроке
и удалять общей строкойВременныеФайлы.Удалить()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Пока добавил удаление в конец процедуры.
- Хочешь это сделать целиком для скрипта? При ошибке времени выполнения скрипта до финального ВременныеФайлы.Удалить() может не дойти. Но в целом вероятность мусора снижается, да.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Переделаешь для скрипта в целом?
для исключительных ситуаций как раз может быть удобно, чтобы окружение/временные файлы не удалялись и можно было сделать разбор проблемы
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Окей, сделаю.
КопироватьСодержимоеКаталога(СтарыйПуть, НовыйПуть); | ||
Иначе | ||
Лог.Отладка(СтарыйПуть); | ||
// Нормализовать путь? |
There was a problem hiding this comment.
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? Или это тоже тонкости питона?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Снимаю вопрос, не заметил, что функции копирования разные.
Разобрался с этой ошибкой? |
@artbear Пока нет. Сейчас рефакторю по замечаниям. |
…' into issue-38 Conflicts: v8files-extractor.os
@artbear Отрефакторил. |
@nixel2007 Доработки по справке видел, нормально. |
Теперь бы понять, что с ошибкой открытия в Конфигураторе |
На сколько я понимаю, готово. Собирает. |
@nixel2007 Посмотрю |
@nixel2007 Прогони тесты Пример запуска |
@nixel2007 C Тестами я разобрался. Выдается ошибка
На номер строки внимания не обращай, падает на строке |
Оказывается, что в последнем параметре нужно указывать не путь к файлу, а путь к каталогу выгрузки :( |
@nixel2007 Спасибо за подарок к завтрашнему празднику :) |
Вообще я уже думал о том, что надо переструктурировать справку по 1с-версии 3 нояб. 2015 г. 7:28 PM пользователь "Artur Ayukhanov" <
|
И воспользоваться фичей автодокументирования параметров в cmdline |
@EvilBeaver добавить бы в README по cmdline описание этой фичи и как ей пользоваться. |
@nixel2007 фича очень свежая, еще не успел. Пользоваться примерно вот так: EvilBeaver/oscript-library@7752aea |
@EvilBeaver а процедуры "ВывестиСправкуПоКоманде/Командам" может вынести в саму библиотеку cmdline? или их надо будет в каждом скрипте реализовывать? |
@nixel2007 разумеется, надо вынести в cmdline, просто я пока не придумал, какой формат вывода сообщения устроит всех потребителей. |
Базовый функционал команды --compile pyv8unpack.py портирован на oscript.
На выходе пока получаю "Ошибку формата потока" при открытии обработки в конфигураторе, буду еще смотреть. Exe'шник v8unpack брал из макета в обработке V8Reader.epf в зависимостях прекоммита (может в этом дело?)
Публикую в качестве WIP, буду рад, если укажете на явные косяки или некрасивости.
Вывод отладочного лога:
/cc @artbear @EvilBeaver
Fix #38