diff --git a/.travis.yml b/.travis.yml index c824eca..e6f1fde 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,18 +2,24 @@ sudo: required dist: trusty +git: + depth: 1 + addons: - sonarqube: true + sonarcloud: true + apt: + sources: + - sourceline: 'deb http://download.mono-project.com/repo/ubuntu trusty main' + key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF' + packages: + - mono-complete + - dos2unix jdk: - - oraclejdk8 + - openjdk11 before_install: - - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF - - echo "deb http://download.mono-project.com/repo/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/mono-official.list - - sudo apt-get update - - sudo apt-get install mono-complete mono-devel dos2unix - - wget -O os.deb http://oscript.io/downloads/night-build/deb + - wget -O os.deb http://oscript.io/downloads/1_0_21/deb - sudo dpkg -i os.deb; sudo apt install -f - oscript diff --git a/1bdd.patch b/1bdd.patch index 966b6b6..b8a30ea 100644 --- a/1bdd.patch +++ b/1bdd.patch @@ -1,11 +1,11 @@ ---- "oscript_modules/1bdd/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" 2018-02-12 23:10:32.803504300 +0300 -+++ "oscript_modules/1bdd/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.1.os" 2018-02-12 23:40:38.614734300 +0300 -@@ -14,7 +14,7 @@ - ВсеШаги.Добавить("ЯОчищаюПараметрыКомандыВКонтексте"); - ВсеШаги.Добавить("ЯВключаюОтладкуЛогаСИменем"); +--- "oscript_modules/1bdd/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.old.os" 2020-01-16 11:41:08.899021100 +0300 ++++ "oscript_modules/1bdd/features/lib/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264.os" 2020-01-16 11:40:25.112937900 +0300 +@@ -16,7 +16,7 @@ ВсеШаги.Добавить("ЯВыключаюОтладкуЛогаСИменем"); + ВсеШаги.Добавить("ЯВключаюПолнуюОтладкуЛоговПакетовOnescript"); + ВсеШаги.Добавить("ЯВыключаюПолнуюОтладкуЛоговПакетовOnescript"); - ВсеШаги.Добавить("ЯВыполняюКоманду"); + // ВсеШаги.Добавить("ЯВыполняюКоманду"); - ВсеШаги.Добавить("ВыводКомандыСодержит"); - ВсеШаги.Добавить("КодВозвратаКомандыРавен"); - ВсеШаги.Добавить("ЯВыполняюКомандуCПараметрами"); + ВсеШаги.Добавить("ЯВижуВКонсолиВывод"); + ВсеШаги.Добавить("КодВозвратаРавен"); + ВсеШаги.Добавить("ЯВыполняюКомандуСПараметрами"); diff --git a/LICENSE b/LICENSE index 17a97a7..f3a9d45 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,6 @@ BSD 3-Clause License +Copyright (c) 2020, Nikita Gryzlov Copyright (c) 2018, SilverBulleters, LLC All rights reserved. diff --git a/README.md b/README.md index 576ae54..be760ae 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,6 @@ ovm - утилита, предназначенная для установки, * Скачать `ovm.exe` со страницы [страницы релизов GitHub](https://github.com/silverbulleters/ovm/releases) * По желанию прописать путь к ovm.exe в переменной окружения `PATH` -Если на машине установлен OneScript из msi и/или путь к установленному OneScript прописан в `PATH`, то перед началом использования `ovm` необходимо один раз в консоли с административными правами выполнить команду `ovm migrate`, после чего **перезапустить консоль**. - ### Linux * Скачать `ovm.exe` со страницы [страницы релизов GitHub](https://github.com/silverbulleters/ovm/releases) @@ -40,9 +38,11 @@ mono path/to/ovm.exe "$@" Для каждого из терминалов активация ovm выглядит по-разному. После выполнения первичной активации в большинстве случаев необходимо переоткрыть текущий терминал (это надо сделать один раз). Для перечисленных ниже терминалов действия по активации происходят **автоматически**. + + ### cmd (Windows) -При выполнении команды `ovm migrate` (только при наличии системной установки OneScript): +При первичной активации версии OneScript при наличии системной установки OneScript: создается запись в реестре по адресу `HKCU\Software\Microsoft\Command Processor\Autorun` следующего содержания: @@ -52,7 +52,7 @@ set PATH=%OVM_OSCRIPTBIN%;%PATH% ### powershell (Windows) -При выполнении команды `ovm migrate` (только при наличии системной установки OneScript): +При первичной активации версии OneScript при наличии системной установки OneScript: создается файл (либо добавляется в существующий) по адресу `%USERPROFILE%\Documents\WindowsPowerShell\profile.ps1` со следующим содержанием: @@ -86,6 +86,8 @@ export $HOME/.local/share/ovm/current/bin:$PATH Для `ConEmu` активация производится через `Settings` -> `Startup` -> `Environment`. В метод установки PATH необходимо добавить путь к %OVM_OSCRIPTBIN% перед текущим `%PATH%`. Например, `set PATH=%OVM_OSCRIPTBIN%;%PATH%` +Современные версии `Cmder` для Windows автоматически подхватывают переменные среды и переопределение автозапуска в реестре (см. Активация в cmd) + ## Использование ovm - утилита командной строки, основанная на библиотеке [cli](https://github.com/khorevaa/cli). Утилита содержит несколько команд с различными аргументами и опциями. Каждая команда имеет длинное имя и короткий алиас. Каждый аргумент или опция могут быть установлены из переменных окружения либо указаны непосредственно в командной строке. Более подробно - в справке по библиотеке [cli](https://github.com/khorevaa/cli). @@ -186,7 +188,6 @@ C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe list, ls Вывести список установленных и/или доступных версий OneScript run, r Запустить исполняемый файл в окружении указанной версии OneScript which, w Вывести путь к установленной версии OneScript - migrate Поместить установленный системный OneScript под контроль ovm. Только для Windows Для вывода справки по доступным командам наберите: ovm КОМАНДА --help ``` diff --git a/sonar-project.properties b/sonar-project.properties index c2288b7..2dcfebc 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,6 +1,5 @@ # must be unique in a given SonarQube instance sonar.projectKey=ovm -sonar.organization=silverbulleters # this is the name displayed in the SonarQube UI sonar.projectName=OneScript Version Manager diff --git a/src/cmd/ovm.os b/src/cmd/ovm.os index 0f0922d..68cdae2 100644 --- a/src/cmd/ovm.os +++ b/src/cmd/ovm.os @@ -56,11 +56,6 @@ "Вывести путь к установленной версии OneScript", Новый КомандаWhich() ); - КонсольноеПриложение.ДобавитьКоманду( - "migrate", - "Поместить установленный системный OneScript под контроль ovm. Только для Windows", - Новый КомандаMigrate() - ); КонсольноеПриложение.УстановитьОсновноеДействие(ЭтотОбъект); КонсольноеПриложение.Запустить(АргументыКоманднойСтроки); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Migrate.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Migrate.os" deleted file mode 100644 index 975c4ba..0000000 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Migrate.os" +++ /dev/null @@ -1,12 +0,0 @@ -// Обработчик выполнения команды -// -// Параметры: -// КомандаПриложения - КомандаПриложения - Выполняемая команда -// -Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт - - АктиваторOneScript = Новый АктиваторOneScript(); - - АктиваторOneScript.ВыполнитьМиграцию(); - -КонецПроцедуры diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Run.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Run.os" index 5057e98..d86e495 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Run.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Run.os" @@ -55,6 +55,7 @@ УстановитьПеременнуюСреды("PATH", ПеременнаяPATH, РасположениеПеременнойСреды.Процесс); Команда = Новый Команда; + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); Команда.УстановитьКоманду(Приложение); Команда.ДобавитьПараметры(Аргументы); Команда.ПоказыватьВыводНемедленно(Истина); diff --git "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index aba6ee6..8f7efca 100644 --- "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -13,6 +13,6 @@ // Строка - Строковое представление версии // Функция Версия() Экспорт - Версия = "1.0.0-RC9"; + Версия = "1.0.0-RC13"; Возврат Версия; КонецФункции diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" index bc86684..33657b4 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" @@ -1,3 +1,4 @@ +#Использовать 1commands #Использовать fs Перем СистемнаяИнформация; @@ -36,86 +37,6 @@ КонецПроцедуры -// Выполнение необходимых операций для начала использования ovm в случае, если OneScript ранее был установлен -// с добавлением в PATH. -// Только для Windows. -// -Процедура ВыполнитьМиграцию() Экспорт - - Лог.Информация("Выполнение миграции системного OneScript"); - - Если ЭтоWindows Тогда - - Лог.Отладка("Определяю путь к дефолтному oscript"); - - Команда = Новый Команда; - Команда.УстановитьКоманду("where"); - Команда.ДобавитьПараметр("oscript"); - Команда.УстановитьПравильныйКодВозврата(0); - - Команда.Исполнить(); - - ВыводКоманды = Команда.ПолучитьВывод(); - Лог.Отладка(ВыводКоманды); - - ПутьКСистемномуOneScript = СтрПолучитьСтроку(ВыводКоманды, 1); - Лог.Отладка("Путь к системному OneScript: %1", ПутьКСистемномуOneScript); - - Если СтрНайти(ПутьКСистемномуOneScript, "ovm") > 0 Тогда - Лог.Информация("OneScript уже под контролем ovm"); - Возврат; - КонецЕсли; - - ПутьКBinСистемногоOscript = Новый Файл(ПутьКСистемномуOneScript).Путь; - - Лог.Отладка("Установка переменных среды на уровне системы"); - - ПеременнаяPATH = ПолучитьПеременнуюСреды("PATH", РасположениеПеременнойСреды.Машина); - УстановитьПеременнуюСреды("PATH", "%OVM_OSCRIPTBIN%;" + ПеременнаяPATH, РасположениеПеременнойСреды.Машина); - УстановитьПеременнуюСреды("OVM_OSCRIPTBIN", ПутьКBinСистемногоOscript, РасположениеПеременнойСреды.Машина); - - Лог.Отладка("Добавление ovm в автозапуск cmd"); - - ТекстВычислениеPATH = "set PATH=%OVM_OSCRIPTBIN%;%PATH%"; - - СтрокаЗапуска = СтрШаблон( - "REG ADD ""HKCU\Software\Microsoft\Command Processor"" /v Autorun /t REG_SZ /f /d ""%1""", - ТекстВычислениеPATH - ); - - Лог.Отладка("Строка запуска - |%1", СтрЗаменить(СтрокаЗапуска, "%", "%%")); - - Команда = Новый Команда; - Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); - Команда.УстановитьСтрокуЗапуска(СтрокаЗапуска); - Команда.УстановитьПравильныйКодВозврата(0); - - Команда.Исполнить(); - - ВыводКоманды = Команда.ПолучитьВывод(); - Лог.Отладка(ВыводКоманды); - - Лог.Отладка("Добавление ovm в автозапуск powershell"); - - ПутьКФайлу = ОбъединитьПути( - СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), - "Documents", - "WindowsPowerShell", - "profile.ps1" - ); - - ТекстВычислениеPATH = "set PATH=$OVM_OSCRIPTBIN;$PATH"; - ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстВычислениеPATH, ПутьКФайлу); - - Иначе - Сообщение = "На *nix системах выполнение команды migrate не требуется."; - Лог.Информация(Сообщение); - Возврат; - КонецЕсли; - -КонецПроцедуры - Процедура СоздатьСимЛинкНаКаталог(Знач Ссылка, Знач ПутьНазначения) ПутьКСсылке = Новый Файл(Ссылка).ПолноеИмя; @@ -171,17 +92,22 @@ Лог.Отладка("Добавляю каталог %1 в PATH", ПутьККаталогуBin); - ПеременнаяPATH = ПолучитьПеременнуюСреды("PATH", РасположениеПеременнойСреды.Пользователь); Если ЭтоWindows Тогда + ПеременнаяPATH = ПолучитьПеременнуюСредыИзРеестра("PATH", РасположениеПеременнойСреды.Пользователь); ИскомоеЗначение = "%OVM_OSCRIPTBIN%"; Иначе + ПеременнаяPATH = ПолучитьПеременнуюСреды("PATH", РасположениеПеременнойСреды.Пользователь); ПутьКаталогуHOME = ПолучитьПеременнуюСреды("HOME"); Если НЕ ПустаяСтрока(ПутьКаталогуHOME) Тогда ПутьККаталогуBin = СтрЗаменить(ПутьККаталогуBin, ПутьКаталогуHOME, "$HOME"); КонецЕсли; ИскомоеЗначение = ПутьККаталогуBin; КонецЕсли; - + + Если ЭтоWindows Тогда + СоздатьПереопределенияPATHДляКомандногоПроцессора_Windows(); + КонецЕсли; + Если СтрНайти(ПеременнаяPATH, ИскомоеЗначение) <> 0 Тогда Лог.Отладка("PATH уже содержит путь к каталогу"); Возврат; @@ -189,28 +115,15 @@ Если ЭтоWindows Тогда Лог.Отладка("Установка переменных среды на уровне пользователя"); - УстановитьПеременнуюСреды("OVM_OSCRIPTBIN", ПутьККаталогуBin, РасположениеПеременнойСреды.Пользователь); - УстановитьПеременнуюСреды("PATH", "%OVM_OSCRIPTBIN%;" + ПеременнаяPATH, РасположениеПеременнойСреды.Пользователь); + ЗначениеПеременнойСреды = "%OVM_OSCRIPTBIN%;" + ПеременнаяPATH; + УстановитьПеременнуюСредыВРеестре("PATH", "REG_EXPAND_SZ", ЗначениеПеременнойСреды, + РасположениеПеременнойСреды.Пользователь); + УстановитьПеременнуюСредыСОповещением("OVM_OSCRIPTBIN", ПутьККаталогуBin, + РасположениеПеременнойСреды.Пользователь); Иначе - Лог.Отладка("Добавление каталога в PATH для shell"); - ТекстФайлаПрофиля = "export PATH=""" + ПутьККаталогуBin + ":$PATH"" - |export OSCRIPTBIN=""" + ПутьККаталогуBin + """"; - - ПутьКФайлу = ОбъединитьПути( - СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), - ".profile" - ); - - ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу); - - ПутьКФайлу = ОбъединитьПути( - СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), - ".bashrc" - ); - - ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу); + СоздатьПереопределенияPATHДляКомандногоПроцессора_Unix(ПутьККаталогуBin); КонецЕсли; - + КонецПроцедуры Процедура ДобавитьТекстВНовыйИлиИмеющийсяФайл(Знач ДобавляемыйТекст, Знач ПутьКФайлу) @@ -260,6 +173,71 @@ КонецПроцедуры +Процедура СоздатьПереопределенияPATHДляКомандногоПроцессора_Windows() + + Если НЕ ИспользуетсяСистемныйOneScript() Тогда + Лог.Отладка("Системный OneScript не найден"); + Возврат; + КонецЕсли; + + Лог.Отладка("Добавление ovm в автозапуск cmd"); + + ТекстВычислениеPATH = "set PATH=%OVM_OSCRIPTBIN%;%PATH%"; + + СтрокаЗапуска = СтрШаблон( + "REG ADD ""HKCU\Software\Microsoft\Command Processor"" /v Autorun /t REG_SZ /f /d ""%1""", + ТекстВычислениеPATH + ); + + Лог.Отладка("Строка запуска + |%1", СтрЗаменить(СтрокаЗапуска, "%", "%%")); + + Команда = Новый Команда; + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); + Команда.УстановитьСтрокуЗапуска(СтрокаЗапуска); + Команда.УстановитьПравильныйКодВозврата(0); + + Команда.Исполнить(); + + ВыводКоманды = Команда.ПолучитьВывод(); + Лог.Отладка(ВыводКоманды); + + Лог.Отладка("Добавление ovm в автозапуск powershell"); + + ПутьКФайлу = ОбъединитьПути( + СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), + "Documents", + "WindowsPowerShell", + "profile.ps1" + ); + + ТекстВычислениеPATH = "set PATH=$OVM_OSCRIPTBIN;$PATH"; + ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстВычислениеPATH, ПутьКФайлу); + +КонецПроцедуры + +Процедура СоздатьПереопределенияPATHДляКомандногоПроцессора_Unix(Знач ПутьККаталогуBin) + + Лог.Отладка("Добавление каталога в PATH для shell"); + ТекстФайлаПрофиля = "export PATH=""" + ПутьККаталогуBin + ":$PATH"" + |export OSCRIPTBIN=""" + ПутьККаталогуBin + """"; + + ПутьКФайлу = ОбъединитьПути( + СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), + ".profile" + ); + + ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу); + + ПутьКФайлу = ОбъединитьПути( + СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), + ".bashrc" + ); + + ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу); + +КонецПроцедуры + Процедура ПроверитьНаличиеИспользуемойВерсии(Знач ИспользуемаяВерсия, Знач ВыполнятьУстановкуПриНеобходимости) Если ВерсииOneScript.ВерсияУстановлена(ИспользуемаяВерсия) Тогда @@ -275,6 +253,162 @@ КонецПроцедуры +Процедура УстановитьПеременнуюСредыВРеестре( + Знач ИмяПеременнойСреды, + Знач ТипПеременнойСреды, + Знач ЗначениеПеременнойСреды, + Знач _РасположениеПеременнойСреды + ) + + Если _РасположениеПеременнойСреды = РасположениеПеременнойСреды.Машина Тогда + РазделПеременнойСреды = """HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"""; + Иначе + // РасположениеПеременнойСреды.Пользователь; + РазделПеременнойСреды = "HKCU\Environment"; + КонецЕсли; + + Команда = Новый Команда(); + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); + + Команда.УстановитьКоманду("reg.exe"); + + Команда.ДобавитьПараметр("add"); + + Команда.ДобавитьПараметр(РазделПеременнойСреды); + + Команда.ДобавитьПараметр("/v"); + Команда.ДобавитьПараметр(ИмяПеременнойСреды); + + Команда.ДобавитьПараметр("/f"); + + Команда.ДобавитьПараметр("/t"); + Команда.ДобавитьПараметр(ТипПеременнойСреды); + + Команда.ДобавитьПараметр("/d"); + Команда.ДобавитьПараметр(Команда.ОбернутьВКавычки(ЗначениеПеременнойСреды)); + + КодВозврата = Команда.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВыводКоманды = Команда.ПолучитьВывод(); + + ВызватьИсключение СтрШаблон( + "Ошибка установки значения переменной %1. + |Код возврата: %2 + |Текст ошибки: %3", + ИмяПеременнойСреды, + КодВозврата, + ВыводКоманды + ); + КонецЕсли; + +КонецПроцедуры + +Функция ПолучитьПеременнуюСредыИзРеестра( + Знач ИмяПеременнойСреды, + Знач _РасположениеПеременнойСреды + ) + + Если _РасположениеПеременнойСреды = РасположениеПеременнойСреды.Машина Тогда + РазделПеременнойСреды = """HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"""; + Иначе + // РасположениеПеременнойСреды.Пользователь; + РазделПеременнойСреды = "HKCU\Environment"; + КонецЕсли; + + Команда = Новый Команда(); + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); + + Команда.УстановитьКоманду("reg.exe"); + + Команда.ДобавитьПараметр("query"); + + Команда.ДобавитьПараметр(РазделПеременнойСреды); + + Команда.ДобавитьПараметр("/v"); + Команда.ДобавитьПараметр(ИмяПеременнойСреды); + + КодВозврата = Команда.Исполнить(); + ВыводКоманды = Команда.ПолучитьВывод(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение СтрШаблон( + "Ошибка получения значения переменной %1. + |Код возврата: %2 + |Текст ошибки: %3", + ИмяПеременнойСреды, + КодВозврата, + ВыводКоманды + ); + КонецЕсли; + + НомерСтрокиСДанными = 2; + СтрокаСДанными = СтрЗаменить(СтрПолучитьСтроку(ВыводКоманды, НомерСтрокиСДанными), " ", Символы.ПС); + + НомерСтрокиСоЗначением = 4; + ЗначениеПеременной = СтрПолучитьСтроку(СтрокаСДанными, НомерСтрокиСоЗначением); + + Возврат ЗначениеПеременной; + +КонецФункции + +Процедура УстановитьПеременнуюСредыСОповещением( + Знач ИмяПеременнойСреды, + Знач ЗначениеПеременнойСреды, + Знач _РасположениеПеременнойСреды + ) + + Команда = Новый Команда(); + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); + + Команда.УстановитьКоманду("setx.exe"); + + Если _РасположениеПеременнойСреды = РасположениеПеременнойСреды.Машина Тогда + Команда.ДобавитьПараметр("/m"); + КонецЕсли; + + Команда.ДобавитьПараметр(ИмяПеременнойСреды); + Команда.ДобавитьПараметр(Команда.ОбернутьВКавычки(ЗначениеПеременнойСреды)); + + КодВозврата = Команда.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВыводКоманды = Команда.ПолучитьВывод(); + + ВызватьИсключение СтрШаблон( + "Ошибка установки переменной среды %1. + |Код возврата: %2 + |Текст ошибки: %3", + ИмяПеременнойСреды, + КодВозврата, + ВыводКоманды + ); + КонецЕсли; + +КонецПроцедуры + +Функция ИспользуетсяСистемныйOneScript() + Лог.Отладка("Определяю путь к дефолтному oscript"); + + Команда = Новый Команда; + Команда.УстановитьКоманду("where"); + Команда.ДобавитьПараметр("oscript"); + Команда.УстановитьПравильныйКодВозврата(0); + + Команда.Исполнить(); + + ВыводКоманды = Команда.ПолучитьВывод(); + Лог.Отладка(ВыводКоманды); + + ПутьКДефолтномуOneScript = СтрПолучитьСтроку(ВыводКоманды, 1); + Лог.Отладка("Путь к дефолтному OneScript: %1", ПутьКДефолтномуOneScript); + + Результат = СтрНайти(ПутьКДефолтномуOneScript, ПолучитьРазделительПути() + "ovm" + ПолучитьРазделительПути()) = 0; + + Возврат Результат; + +КонецФункции + СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; Лог = ПараметрыOVM.ПолучитьЛог(); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index 0732d4b..16f5c04 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -14,7 +14,11 @@ // ВерсияКУстановке // ОчищатьКаталогУстановки - Булево - Необходимость очистки каталога, в который устанавливается версия. // -Процедура УстановитьOneScript(Знач ВерсияКУстановке, Знач АлиасВерсии = "", Знач ОчищатьКаталогУстановки = Истина) Экспорт +Процедура УстановитьOneScript( + Знач ВерсияКУстановке, + Знач АлиасВерсии = "", + Знач ОчищатьКаталогУстановки = Истина +) Экспорт Лог.Информация("Установка OneScript %1...", ВерсияКУстановке); @@ -57,8 +61,18 @@ ПутьКСохраняемомуФайлу = ВременныеФайлы.НовоеИмяФайла("zip"); + АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); + Таймаут = 10; + Соединение = Новый HTTPСоединение( + АдресСайтаОСкрипт, + , + , + , + , + Таймаут + ); + Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке); - Соединение = Новый HTTPСоединение(ПараметрыOVM.АдресСайтаОСкрипт()); Запрос = Новый HTTPЗапрос(Ресурс); Лог.Отладка("Сервер: %1. Ресурс: %2", Соединение.Сервер, Ресурс); diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index 8c1c343..b3e5d87 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -118,8 +118,16 @@ АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); - Соединение = Новый HTTPСоединение(АдресСайтаОСкрипт); - Запрос = Новый HTTPЗапрос("downloads/archive"); + Таймаут = 10; + Соединение = Новый HTTPСоединение( + АдресСайтаОСкрипт, + , + , + , + , + Таймаут + ); + Запрос = Новый HTTPЗапрос("downloads"); Ответ = Соединение.Получить(Запрос); HTTP_OK = 200; diff --git a/travis.sh b/travis.sh index cbb1b15..223a1e5 100755 --- a/travis.sh +++ b/travis.sh @@ -8,7 +8,7 @@ version=${temp##*|} if [ "$TRAVIS_BRANCH" == "develop" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then sonar-scanner \ - -Dsonar.host.url=https://opensonar.silverbulleters.org \ + -Dsonar.host.url=https://sonar.openbsl.ru \ -Dsonar.login=$SONAR_TOKEN \ -Dsonar.projectVersion=$version\ -Dsonar.scanner.skip=false