-
Notifications
You must be signed in to change notification settings - Fork 4
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
Добавил возможность запуска командных файлов на язке PowerShell и др. #2
Changes from 4 commits
87d4736
fa9ceb7
fcc8fb1
8f7cc82
4617e7a
da6b8fa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,7 @@ | |
#Использовать "../.." | ||
|
||
Перем БДД; //контекст фреймворка 1bdd | ||
Перем ЭтоWindows; | ||
|
||
// Метод выдает список шагов, реализованных в данном файле-шагов | ||
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт | ||
|
@@ -10,11 +11,13 @@ | |
ВсеШаги = Новый Массив; | ||
|
||
ВсеШаги.Добавить("ЯСоздаюКомандныйФайл"); | ||
ВсеШаги.Добавить("ЯСоздаюКомандныйФайлPowerShell"); | ||
ВсеШаги.Добавить("ЯДобавляюСтрокуВКомандныйФайл"); | ||
ВсеШаги.Добавить("ЯСообщаюСодержимоеКомандногоФайла"); | ||
ВсеШаги.Добавить("ЯВыполняюКомандныйФайл"); | ||
ВсеШаги.Добавить("ВыводКомандногоФайлаСодержит"); | ||
ВсеШаги.Добавить("КодВозвратаКомандногоФайлаРавен"); | ||
ВсеШаги.Добавить("ЯУстанавливаюПриложениеЗапуска"); | ||
|
||
Возврат ВсеШаги; | ||
КонецФункции | ||
|
@@ -33,32 +36,54 @@ | |
|
||
//Я создаю командный файл | ||
Процедура ЯСоздаюКомандныйФайл() Экспорт | ||
КомандныйФайл = Новый КомандныйФайл; | ||
КомандныйФайл.Создать(); | ||
БДД.СохранитьВКонтекст("КомандныйФайл", КомандныйФайл); | ||
СоздатьФайл(); | ||
КонецПроцедуры | ||
|
||
//Я создаю командный файл PowerShell "" ".ps1" | ||
Процедура ЯСоздаюКомандныйФайлPowerShell(Знач Путь="", Знач Расширение="") Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
СоздатьФайл(Путь,Расширение); | ||
КонецПроцедуры | ||
|
||
//я добавляю строку "echo командный файл" в командный файл | ||
Процедура ЯДобавляюСтрокуВКомандныйФайл(Знач СтрокаКоманды) Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
КомандныйФайл = БДД.ПолучитьИзКонтекста("КомандныйФайл"); | ||
|
||
КомандныйФайл.ДобавитьКоманду(СтрокаКоманды); | ||
КонецПроцедуры | ||
|
||
//Я выполняю командный файл | ||
Процедура ЯВыполняюКомандныйФайл() Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
КомандныйФайл = БДД.ПолучитьИзКонтекста("КомандныйФайл"); | ||
|
||
КомандныйФайл.Исполнить(); | ||
КонецПроцедуры | ||
|
||
//Я сообщаю содержимое файла "ИмяФайла" | ||
Процедура ЯСообщаюСодержимоеФайла(Знач ИмяФайла) Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
ВывестиТекстФайла(ИмяФайла); | ||
КонецПроцедуры | ||
|
||
//Я сообщаю содержимое командного файла | ||
Процедура ЯСообщаюСодержимоеКомандногоФайла() Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Шаг |
||
Возврат; | ||
КонецЕсли; | ||
КомандныйФайл = БДД.ПолучитьИзКонтекста("КомандныйФайл"); | ||
|
||
ТекстФайла = КомандныйФайл.ПолучитьТекстФайла(); | ||
|
@@ -67,6 +92,10 @@ | |
|
||
//Вывод командного файла содержит "командный файл" | ||
Процедура ВыводКомандногоФайлаСодержит(Знач ОжидаемыйВыводКоманды) Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Шаг |
||
Возврат; | ||
КонецЕсли; | ||
|
||
КомандныйФайл = БДД.ПолучитьИзКонтекста("КомандныйФайл"); | ||
|
||
ВыводКоманды = КомандныйФайл.ПолучитьВывод(); | ||
|
@@ -75,27 +104,69 @@ | |
|
||
//Код возврата командного файла равен 0 | ||
Процедура КодВозвратаКомандногоФайлаРавен(Знач ОжидаемыйКодВозврата) Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 commentThe reason will be displayed to describe this comment to others. Learn more. Да, но в сценарии с PowerShell в линуксе никого файла на этом шаге нет. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. В линуксе можно создать файл с расширением ps1, т.к. расширение ни на что не влияет. |
||
Возврат; | ||
КонецЕсли; | ||
|
||
КомандныйФайл = БДД.ПолучитьИзКонтекста("КомандныйФайл"); | ||
|
||
Ожидаем.Что(КомандныйФайл.ПолучитьКодВозврата(), "Код возврата").Равно(ОжидаемыйКодВозврата); | ||
КонецПроцедуры | ||
|
||
//Я устанавливаю приложение запуска "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" | ||
Процедура ЯУстанавливаюПриложениеЗапуска(Знач ПутьПриложения="") Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
КомандныйФайл = БДД.ПолучитьИзКонтекста("КомандныйФайл"); | ||
Если КомандныйФайл=Неопределено Тогда | ||
КомандныйФайл = Новый КомандныйФайл; | ||
КонецЕсли; | ||
КомандныйФайл.УстановитьПриложение(ПутьПриложения); | ||
БДД.СохранитьВКонтекст("КомандныйФайл", КомандныйФайл); | ||
КонецПроцедуры | ||
|
||
|
||
Процедура ВывестиТекстФайла(Знач ИмяФайла, Знач Кодировка = Неопределено) | ||
|
||
Файл = Новый Файл(ИмяФайла); | ||
Если НЕ Файл.Существует() Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
Если Кодировка = Неопределено Тогда | ||
Кодировка = "utf-8"; | ||
КонецЕсли; | ||
|
||
ЧТ = Новый ЧтениеТекста(ИмяФайла, Кодировка); | ||
СтрокаФайла = ЧТ.Прочитать(); | ||
ЧТ.Закрыть(); | ||
|
||
Сообщить(СтрокаФайла); | ||
|
||
КонецПроцедуры | ||
|
||
Процедура СоздатьФайл(Знач Путь="", Знач Расширение="") | ||
КомандныйФайл = БДД.ПолучитьИзКонтекста("КомандныйФайл"); | ||
Если КомандныйФайл=Неопределено Тогда | ||
КомандныйФайл = Новый КомандныйФайл; | ||
КонецЕсли; | ||
|
||
КомандныйФайл.Создать(Путь,Расширение); | ||
БДД.СохранитьВКонтекст("КомандныйФайл", КомандныйФайл); | ||
КонецПроцедуры | ||
|
||
Функция ПропускаюШагВЛинукс() | ||
Если НЕ ЗначениеЗаполнено(ЭтоWindows) Тогда | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Проверка Предлагаю исправить на Сделай это последнее исправления и я принимаю пулл-реквест! |
||
СистемнаяИнформация = Новый СистемнаяИнформация; | ||
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; | ||
КонецЕсли; | ||
|
||
Если НЕ ЭтоWindows Тогда | ||
БДД.ВыполнитьШаг("Пропускаю шаг в Linux"); | ||
КонецЕсли; | ||
|
||
Возврат НЕ ЭтоWindows; | ||
|
||
КонецФункции // ЭтоWindows() |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,16 @@ | |
Контекст: Отключение отладки в логах | ||
Допустим Я выключаю отладку лога с именем "oscript.lib.commands" | ||
|
||
Сценарий: Выполнение простого командного файла | ||
Сценарий: Выполнение командного файла PowerShell | ||
Когда Я устанавливаю приложение запуска "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 commentThe 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 commentThe 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 commentThe reason will be displayed to describe this comment to others. Learn more. В консоле добавляется сообщение "Пропускаю шаг в Linux". |
||
И Я создаю командный файл PowerShell "" ".ps1" | ||
И Я добавляю строку "Write-Host PowerShell" в командный файл | ||
И Я сообщаю содержимое командного файла | ||
И Я выполняю командный файл | ||
Тогда Вывод командного файла содержит "PowerShell" | ||
И Код возврата командного файла равен 0 | ||
|
||
Сценарий: Выполнение командного файла | ||
Когда Я создаю командный файл | ||
И Я добавляю строку "echo command file" в командный файл | ||
И Я сообщаю содержимое командного файла | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,6 +7,7 @@ | |
Перем ПутьКоманды; | ||
Перем Команда; | ||
Перем ТекстФайла; | ||
Перем Приложение; | ||
|
||
Перем ЭтоWindows; | ||
Перем Лог; | ||
|
@@ -22,6 +23,20 @@ | |
Возврат "oscript.lib.commands"; | ||
КонецФункции | ||
|
||
// Установить путь к приложению. | ||
// | ||
// Параметры: | ||
// ПутьПриложения - Путь приложения (Строка) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Предлагаю добавить пример задания приложения в описание метода |
||
// Например для запуска скриптов PowerShell | ||
// Для 64bit PowerShell если стоит 64 битная система или 32bit PowerShell, если стоит 32 битная система | ||
// "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" | ||
// Для 32bit PowerShell на 64 битных системах находится в папке: | ||
// "C:\Windows\syswow64\Windowspowershell\v1.0\powershell.exe" | ||
// | ||
Процедура УстановитьПриложение(Знач ПутьПриложения) Экспорт | ||
Приложение = ПутьПриложения; | ||
КонецПроцедуры // УстановитьПриложение() | ||
|
||
// Получить путь командного файла | ||
// | ||
// Возвращаемое значение: | ||
|
@@ -75,14 +90,19 @@ | |
// Параметры: | ||
// Путь - Строка - путь создаваемого файла. Необязательное значение. | ||
// Если не задан, создается временный файл в каталоге временных файлов | ||
// Расширение - Строка - расширение исполняемого командного файла. | ||
// Если не задано, подставляется ".bat" для Windows или ".sh" для Linux. | ||
// | ||
// Возвращаемое значение: | ||
// Строка - Путь созданного файла | ||
// | ||
Функция Создать(Знач Путь = "") Экспорт | ||
Функция Создать(Знач Путь = "", Знач Расширение="") Экспорт | ||
|
||
Если ПустаяСтрока(Расширение) Тогда | ||
Расширение = ?(ЭтоWindows, ".bat", ".sh"); | ||
КонецЕсли; | ||
Если ПустаяСтрока(Путь) Тогда | ||
ПутьКоманды = ВременныеФайлы.НовоеИмяФайла(?(ЭтоWindows, ".bat", ".sh")); | ||
ПутьКоманды = ВременныеФайлы.НовоеИмяФайла(Расширение); | ||
Лог.Отладка("КомандныйФайл: задаю временный путь командного файла <%1>.", ПутьКоманды); | ||
Иначе | ||
ПутьКоманды = Путь; | ||
|
@@ -125,7 +145,9 @@ | |
Команда.УстановитьКодировкуВывода(КодировкаВывода); | ||
Команда.ПоказыватьВыводНемедленно(НемедленнныйВывод); | ||
|
||
Если ЭтоWindows Тогда | ||
Если ЗначениеЗаполнено(Приложение) Тогда | ||
СтрокаЗапуска = """%1"""; | ||
ИначеЕсли ЭтоWindows Тогда | ||
Приложение = "cmd.exe"; | ||
СтрокаЗапуска = "/C ""%1"""; | ||
Иначе | ||
|
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.
Шаг
Я сообщаю содержимое файла "ИмяФайла"
является универсальным.В него не нужно вставлять проверку на линукс, т.к. этот шаг должен работать в линукс