Снегопат

Обсуждение Снегопата
Текущее время: 24 апр 2024, 04:16

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Get-Latest на OneScript
СообщениеДобавлено: 07 апр 2015, 19:14 
Не в сети

Зарегистрирован: 27 мар 2014, 15:01
Сообщения: 40
По поступающим просьбам сделал реплику Get-Latest на PowerShell на OneScript.

Для унификации писал на английском диалекте языка 1С. Мдя, OneScript-у ещё есть куда расти :twisted: Версия 1.0.9.124:
1. Не работает группировка Procedure/EndProcedure, Function/EndFunction во встроенном редакторе
2. Не опознаются ключевые слова "Not", "In", "False", "True"
3. Не опознается объект CommandLineArguments (АргументыКоманднойСтроки)
4. Не опознается метод Count() (Количество()) у массивов
5. RunApp() глотает кавычки:
cmdLine =
"C:\Snegopat 20\fossil.exe" clone "http://snegopat.ru:9004" "C:\Snegopat 20\repo\core.fossil"

а командная строка процесса =
"C:\Snegopat 20\fossil.exe" clone http://snegopat.ru:9004 C:\Snegopat 20\repo\core.fossil


Вложения:
Get-LatestOS2-0-0-1.zip [1.78 КБ]
Скачиваний: 425
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 07 апр 2015, 19:36 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Прикольно. Спасибо!

Ты про встроенный редактор 1С, верно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 07 апр 2015, 19:45 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Вопрос - Юзаешь под снегопатом или просто из командной строки ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 07 апр 2015, 20:19 
Не в сети

Зарегистрирован: 27 мар 2014, 15:01
Сообщения: 40
artbear писал(а):
Ты про встроенный редактор 1С, верно?

Нет, про поставляемый с OneScript.

artbear писал(а):
Юзаешь под снегопатом или просто из командной строки ?

Писал в поставляемом редакторе, там же и проверял работу. А уже когда дело дошло по параметров командной строки, то уже проверял из командной строки. Основной скрипт работает на PowerShell из соседней ветки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 07 апр 2015, 22:26 
Не в сети

Зарегистрирован: 26 май 2014, 13:53
Сообщения: 83
Цитата:
1. Не работает группировка Procedure/EndProcedure, Function/EndFunction во встроенном редакторе

Встроенный редактор - это не редактор а тестовая консоль. В ней не предусмотрены полноценные функции форматирования, свертки блоков и всего такого прочего, что должно быть в редакторе. Этот режим запуска (в TestApp) вообще можно не считать штатным. TestApp это, можно, сказать, внутренняя отладочная утилита, не предназначенная для реального применения.
Отсюда и по пункту 2:
Цитата:
2. Не опознаются ключевые слова "Not", "In", "False", "True"

Тестовое приложение не предназначено для реальной работы. Оно не будет ни развиваться, ни предлагаться к использованию. Для написания кода есть достаточное количество специализированных инструментов и у нас нет желания писать свой велосипед-редактор :)
Цитата:
3. Не опознается объект CommandLineArguments (АргументыКоманднойСтроки)

У свойства АргументыКоманднойСтроки действительно нет английского терма. Записал задачу (https://bitbucket.org/EvilBeaver/1script/issue/137) Отмечу также, что в первую очередь разрабатываются объекты под русские термы. Это все-таки 1С :)
Цитата:
4. Не опознается метод Count() (Количество()) у массивов

Это не воспроизводится, см. скриншот

Цитата:
5. RunApp() глотает кавычки:
cmdLine =
"C:\Snegopat 20\fossil.exe" clone "http://snegopat.ru:9004" "C:\Snegopat 20\repo\core.fossil"

Так и должно быть. Кавычки определяют границы параметра, но в сам параметр не входят.


Вложения:
arr_count.png
arr_count.png [ 13.61 КБ | Просмотров: 14213 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 08 апр 2015, 08:22 
Не в сети

Зарегистрирован: 27 мар 2014, 15:01
Сообщения: 40
EvilBeaver писал(а):
Встроенный редактор - это не редактор а тестовая консоль.

Все же ожидается, что валидный код в ней будет работать.

EvilBeaver писал(а):
Тестовое приложение не предназначено для реальной работы. Для написания кода есть достаточное количество специализированных инструментов

Хм, пока все скриншоты с OneScript, в т.ч. для разработки я видел в рамках тестовой консоли. А какие специализированные инструменты, кроме Конфигуратора есть для OneScript?

EvilBeaver писал(а):
Цитата:
4. Не опознается метод Count() (Количество()) у массивов

Это не воспроизводится, см. скриншот

Возможно, это ошибка связана с п.3, см. скриншот.

EvilBeaver писал(а):
Цитата:
5. RunApp() глотает кавычки:

Так и должно быть. Кавычки определяют границы параметра, но в сам параметр не входят.

Не соглашусь. Из-за этой ошибки не получается запустить обновление снегопата в каталоге, путь к которому содержит пробелы, т.к. не получается экранировать пути. Строка запуска должна передаваться as is, ответственность за "левые" символы полностью лежит на разработчике скрипта. Сейчас получается, что если скопировать cmdLine в командную строку, то все запуститься, а если вызвать RunApp(cmdLine) то нет.

OneScript отличная вещь, из всех встреченных багов, пока лично для меня критичная за №5, т.к. влияет на функциональность решения, остальное издержки молодости продукта. Я в некоторой степени специально написал скрипт на английском диалекте языка, чтобы проверить работу движка. Результаты меня не удивили и не расстроили.


Вложения:
bug.png
bug.png [ 20.78 КБ | Просмотров: 14187 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 08 апр 2015, 09:51 
Не в сети

Зарегистрирован: 26 май 2014, 13:53
Сообщения: 83
В качестве инструмента разработки плагинов к Снегопату сам собой напрашивается Конфигуратор. Открываем текстовый файл, включаем в меню текст расширение "Встроенный язык". Снегопат начнет работать, как с модулем, выдавать подсказки и т.п.

Для разработки standalone скриптов я использую Notepad++. Как его приготовить, можно почитать здесь: http://infostart.ru/public/327581
Цитата:
Все же ожидается, что валидный код в ней будет работать

Я не совсем понял, все-таки, какой валидный код не работает в testapp? Если речь о английских термах в КоллецииАргументовКоманднойСтроки, то да, я вроде написал, что там не сделаны английские термы (вернее, уже сделаны, благодаря вашему сообщению https://bitbucket.org/EvilBeaver/1scrip ... 762871d8a1)
Кроме этого есть что-то, что не работает?

Теперь попробуем разобраться с кавычками и RunApp. Когда вы вводите в консоли командную строку, то параметры, содержащие пробелы экранируете кавычками.
При этом, сами символы кавычек не должны попасть в приложение, я правильно понял? т.е. если имеем ком. строку:
Код:
fossil.exe dosmth какой-то путь с пробелами
то мы должны экранировать путь кавычками и передать в RunApp следующее:
Код:
RunApp("fossil.exe dosmth ""какой-то путь с пробелами""");
правильно?

Так вот, само приложение должно получить на входе параметр без кавычек. Именно это и происходит. Путь с пробелами обернут в кавычки. Именно так вы делаете и при запуске приложения просто в консоли.
Или я чего-то не понимаю, тогда извиняюсь за недогадливость и прошу еще раз пояснить доходчивым примером, что не получается сделать?

P.S. кстати, забыл уточнить. Если речь идет о плагине к Снегопату, то там не будет объекта АргументыКоманднойСтроки. Под управлением Снегопата там совсем другое программное окружение. См. https://bitbucket.org/EvilBeaver/1script/wiki/snegopat


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 08 апр 2015, 10:47 
Не в сети

Зарегистрирован: 27 мар 2014, 15:01
Сообщения: 40
EvilBeaver писал(а):
В качестве инструмента разработки плагинов к Снегопату сам собой напрашивается Конфигуратор. Для разработки standalone скриптов я использую Notepad++.

Проблемы в написании кода как такового нет, а вот с отладкой? В конфигураторе ещё более менее можно оттестировать часть функционала. В моем случае

EvilBeaver писал(а):
Я не совсем понял, все-таки, какой валидный код не работает в testapp?

Например такой:
Код:
Array = New Array();
Stop = False;
For Each String In Array Do

   If Not String = "stop" Then
      Stop = True;
   EndIf;

EndDo;



EvilBeaver писал(а):
Теперь попробуем разобраться с кавычками и RunApp. Когда вы вводите в консоли командную строку, то параметры, содержащие пробелы экранируете кавычками.
При этом, сами символы кавычек не должны попасть в приложение, я правильно понял?

Это определяет разработчик стороннего приложения. В частности, если путь должен быть экранирован кавычками, то путь должен попадать вместе с кавычками.

EvilBeaver писал(а):
Код:
RunApp("fossil.exe dosmth ""какой-то путь с пробелами""");
правильно?

Да.

EvilBeaver писал(а):
Так вот, само приложение должно получить на входе параметр без кавычек. Именно это и происходит.

Не должно. Они должно получить параметр с кавычками. Т.е. для стороннего приложения параметр равен ["какой-то путь с пробелами"], а не [какой-то путь с пробелами].

EvilBeaver писал(а):
Или я чего-то не понимаю, тогда извиняюсь за недогадливость и прошу еще раз пояснить доходчивым примером, что не получается сделать?

Пример:
Код:
cmdLine =  """C:\Snegopat 20\fossil.exe"" clone http://snegopat.ru:9004 ""C:\Snegopat 20\repo\core.fossil""";
Message(cmdLine);
RunApp(cmdLine);


Если скопировать вывод message() в командную строку, то commandLine процесса будет равен ["C:\Snegopat 20\fossil.exe" clone http://snegopat.ru:9004 "C:\Snegopat 20\core.fossil"], а при вызове RunApp имеем ["C:\Snegopat 20\fossil.exe" clone http://snegopat.ru:9004 C:\Snegopat 20\core.fossil], и fossil, впрочем как и onescript, и много других приложений будет считать последний вариант как набор параметров [clone],[C:\Snegopat],[20\core.fossil], а не [clone],[C:\Snegopat 20\repo\core.fossil]

Пример для OneScript:
Код:
Сообщить("-Старт-");
Для каждого Параметр из АргументыКоманднойСтроки Цикл
   Сообщить(Параметр);
КонецЦикла;
Сообщить("-Конец-");

Сравните:
Код:
oscript.exe test.os раз два три
-Старт-
раз
два
три
-Конец-
oscript.exe test.os раз "два три"
-Старт-
раз
два три
-Конец-


Вложения:
bug.png
bug.png [ 3.36 КБ | Просмотров: 14169 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 08 апр 2015, 11:52 
Не в сети

Зарегистрирован: 26 май 2014, 13:53
Сообщения: 83
Да, похоже, это баг в парсере параметров, передаваемых RunApp. Спасибо.
Завел issue https://bitbucket.org/EvilBeaver/1script/issue/139

Можете на него подписаться, тогда придет вам уведомление, когда баг будет закрыт.
P.S. странно, что мы за почти год эксплуатации ни разу с ним не столкнулись :) Еще раз спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Get-Latest на OneScript
СообщениеДобавлено: 08 апр 2015, 12:30 
Не в сети

Зарегистрирован: 26 май 2014, 13:53
Сообщения: 83
Завел Gist для данного скрипта. Предлагаю дорабатывать в рамках данного gist, имхо, будет более продуктивно.
https://gist.github.com/EvilBeaver/286d ... /revisions


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB