Coder Social home page Coder Social logo

artbear / 1commands Goto Github PK

View Code? Open in Web Editor NEW
17.0 9.0 13.0 191 KB

Библиотека для упрощения работы c запуском различных приложений и командных файлов (cmd, bat, bash) из oscript.

License: Other

1C Enterprise 82.45% Gherkin 17.55%
oscript

1commands's People

Contributors

arkuznetsov avatar artbear avatar evilbeaver avatar khorevaa avatar nixel2007 avatar pumbaeo avatar witales avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

1commands's Issues

Мгновенный вывод команды

   @nixel2007

Охохо... logos дает лишний префикс перед строкой. Да еще и только в отладочном режиме :(
Нельзя просто взять и прочитать вывод команды - он будет искажен :(
@artbear
artbear 2 days ago Owner
Предложения?
@nixel2007
nixel2007 2 days ago Collaborator
Либо Сообщить() либо поменять раскладку у logos - чтобы без уровня выводилось. и переделать на Информация, наверное. А лучше дать возможность управлять уровнем лога - т.е. выводить не в основной/не только в основной лог 1commands, а в отдельный и дать апи по управлению уровнем наверх.
@artbear
artbear 2 days ago Owner
Либо Сообщить()
Не всегда нужно выводить в консоль вывод, ИМХО это должен решать клиент-разработчик, а не Команда.
дать апи по управлению уровнем наверх.
Поясни
@nixel2007
nixel2007 2 days ago Collaborator
предоставить у класса Команда свойство/метод разрешения непосредственного вывода в лог
предоставить у класса Команда метод УстановитьУровеньЛогаВыводаКоманды()
Пример работы приложения:
Команда = Новый Команда();
Команда.УстановитьЧтоТамНадоУстановить();
Команда.ВыводитьСообщенияКомандыВЛог(Истина);
Команда.УстановитьУровеньЛогаВыводаКоманды(УровниЛога.Информация);
@nixel2007
nixel2007 2 days ago Collaborator
при этом у лога вывода команды и у лога самой команды разные инстансы Логирования.
1commands пишет в lib.oscript.1commands, а непосредственный вывод в какой-нибудь "lib.oscript.1commands.exec"
@artbear
artbear 23 hours ago Owner
А не слишком ли усложняем ?
Предлагаю создать новый ишуз и там продолжить обсуждение.

Уменьшить мусорные логи

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

получается, что лог замусорен результатами выхлопа процесса и сложно определять - это тот же запуск процесса просто 3 раза повторен, или был другой запуск процесса.

Например отладочное сообщение "в цикле - " ничего не говорит пользователю. Это чисто разработческий костыль на момент, когда не было отладчика.

Прием массива параметров команды командного файла

Часто параметры очередной команды Командного файла собираются предварительно в массив параметров.
Например,

ПараметрыКоманды = Новый Массив;
 ПараметрыКоманды.Добавить("git status");
 ПараметрыКоманды.Добавить("-b");
 ПараметрыКоманды.Добавить("-s");

Удобно добавить метод ДобавитьПараметры(Знач МассивПараметров)

Было бы удобно добавлять подобный набор параметров в методе ДобавитьКоманду(Знач Команда)
В итоге этот метод будет принимать один из 2х видов параметров
+ Строка - уже собранная строка параметров команды
+ Массив - массив параметров команды. которые нужно собрать в одну строку`

И станет удобнее пользоваться классом "КомандныйФайл"
Например, в gitsync

Режим с правильными кодом возврата и неправильными кодами возврата.

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

API:

  • УстановитьПравильныйКодВозврата(Знач КодВозврата);
  • УстановитьДиапазонПравильныхКодовВозврата(Знач МинимальныйКодВозврата, Знач МаксимальныйКодВозврата);

Реализовать модуль Команды для выполнения наиболее популярных наборов команд

Реализовать модуль Команды для выполнения наиболее популярных наборов команд
Например, в vanessa-runner и других приходится использовать/дублировать метод

Функция ИсполнитьКоманду(Знач СтрокаВыполнения) Экспорт
  
  Команда = Новый Команда;
  Команда.ПоказыватьВыводНемедленно(Истина);
  
  Команда.УстановитьПравильныйКодВозврата(0);

  Лог.Информация(СтрокаВыполнения);
  Команда.УстановитьСтрокуЗапуска(СтрокаВыполнения);
  Команда.Исполнить();

КонецФункции

Указание таймаута выполнения команды

API: УстановитьТаймаут(Знач Секунд);

При превышении таймаута должно выбрасываться исключение с накопленным выводом команды и описанием проблемы таймаута

Метод для установки и сброса параметров

// Установить новые параметры команды.
// Может использовать для очистки параметров. Для этого нужно передать пустую строку
//
//  Параметры:
//   Строка - параметы в одной строке 
//
Процедура УстановитьПараметры(Знач СтрокаПараметров) Экспорт

Ошибка Внешнее исключение (System.ArgumentException): Item has already been added. Key in dictionary: ‘HOME’ Key being added: ‘home’}

Приезжает ошибка от разных пользователей

Например,

С какого-то времени, точно уже не помню, 
коммит через SourceTree выдает ошибку, если в репо установлен precommit1c:
ИНФОРМАЦИЯ - Проверка необходимости выгрузки файла 
c:\testgit\MIS_TEMPLATES.epf в каталог c:\testgit\src, корень c:\testgit
ОШИБКА - {Модуль C:\OneScript\lib\1commands\src\Команда.os / 
Ошибка в строке: 310 / Внешнее исключение (System.ArgumentException): 
Item has already been added. Key in dictionary: ‘HOME’ Key being added: ‘home’}

Появилась в последнем релизе
виноват вызов ПеременныеСреды() при создании процесса.

Если КодировкаВывода = Неопределено Тогда
	Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, 
		ПерехватыватьПотоки, ПерехватыватьПотоки, , ПеременныеСреды());
Иначе
	Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, 
		ПерехватыватьПотоки, ПерехватыватьПотоки, КодировкаВывода, ПеременныеСреды());		
КонецЕсли;    

Единственный способ обхода - вернуться к предыдущему релизу :(

/cc @dmpas @EvilBeaver исправьте в движке, реально отравляет жизнь.

Зависание при выполнени

Дано: limux
Запуск: команды gitsync для хранилища
Зависание на 5 версии.
Видимо переполнение потока вывода т.к. выполнении тоже команды в консоле не приводит к зависанию

Получение вывода команды, у которой есть отдельный лог-файл

Например, это удобно при запуске GUI-утилиты, которая может отработать и вывести свои сообщения в собственный лог-файл.
Например, так можно получить лог от Конфигуратора 1С.

Нужны 2 метода для классов "Команда" и "КомандныйФайл" :

  • Процедура УстановитьПутьЛогаКоманды(ПутьЛога)
  • Функция ПолучитьЛогКоманды()

Починить удаленное поведение Выполнение команды с пробелами

@khorevaa Да, с твоим исправлением https://github.com/artbear/1commands/pull/39/files#r272368503

стал падать специально сделанный сценарий

Сценарий: Выполнение команды с пробелами
    Допустим Я создаю временный каталог и сохраняю его в контекст
    И Я устанавливаю временный каталог как рабочий каталог
    И Я установил рабочий каталог как текущий каталог

    Когда Я выполняю команду 'echo echo 456 > "Мой командный файл.cmd"' через командный процессор системы
    Когда Я выполняю команду '"Мой командный файл.cmd" "78 9"' через командный процессор системы
    И Вывод команды '"Мой командный файл.cmd" "78 9"' содержит "456"
ОписаниеОшибкиВыполнения У шага <Вывод команды '"Мой командный файл.cmd" "78 9"' содержит "456">
{Модуль C:\Program Files (x86)\OneScript\lib\asserts\src\bdd-asserts.os / Ошибка в строке: 336
/ [Failed] Ожидали, что проверяемое значение ("Мой" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
) СОДЕРЖИТ (456).

Проверишь? что скажешь?

это я все готовлюсь к релизу :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.