From 64ef17c5cc895749dc98bb7147e1e9e77933d4ba Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Fri, 2 Dec 2016 16:44:21 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=B4=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/testpackage/folder/src.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testpackage/folder/src.os b/tests/testpackage/folder/src.os index 97e836d..511c8cd 100644 --- a/tests/testpackage/folder/src.os +++ b/tests/testpackage/folder/src.os @@ -1 +1 @@ -// \ No newline at end of file +// заглушка \ No newline at end of file From 6793b43c4d3615eea7d1193fda9b39623d72e192 Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Fri, 2 Dec 2016 16:50:59 +0300 Subject: [PATCH 2/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=85=D0=B0=D0=BD=D0=B8=D0=B7?= =?UTF-8?q?=D0=BC=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D0=B4=D0=B2=D0=B8?= =?UTF-8?q?=D0=B6=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 1 + ...20\260\320\272\320\265\321\202\320\260.os" | 79 +++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/packagedef b/packagedef index 9c0e8ee..657d7ae 100644 --- a/packagedef +++ b/packagedef @@ -3,6 +3,7 @@ .Версия("0.5.1") .ЗависитОт("logos") .ЗависитОт("cmdline") + .ЗависитОт("strings") .ЗависитОт("tempfiles") .ВключитьФайл("src") .ВключитьФайл("tests") diff --git "a/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" index 79bfb86..79c9cc9 100644 --- "a/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -1,5 +1,6 @@ #Использовать logos #Использовать tempfiles +#Использовать strings Перем Лог; Перем мВременныйКаталогУстановки; @@ -29,6 +30,7 @@ ПутьУстановки = НайтиСоздатьКаталогУстановки(ИмяПакета); Лог.Информация("Устанавливаю пакет " + ИмяПакета); + ПроверитьВерсиюСреды(Метаданные); Если мЗависимостиВРаботе[ИмяПакета] = "ВРаботе" Тогда ВызватьИсключение "Циклическая зависимость по пакету " + ИмяПакета; КонецЕсли; @@ -59,6 +61,28 @@ КонецПроцедуры +Процедура ПроверитьВерсиюСреды(Манифест) + + ИмяПакета = Манифест.Свойства().Имя; + ТребуемаяВерсияСреды = Манифест.Свойства().ВерсияСреды; + СистемнаяИнформация = Новый СистемнаяИнформация; + ВерсияСреды = СистемнаяИнформация.Версия; + Если СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда + ТекстСообщения = СтрШаблон( + "Ошибка установки пакета <%1>: Обнаружена устаревшая версия движка OneScript. + |Требуемая версия: %2 + |Текущая версия: %3 + |Обновите OneScript перед установкой пакета", + ИмяПакета, + ТребуемаяВерсияСреды, + ВерсияСреды + ); + + ВызватьИсключение ТекстСообщения; + КонецЕсли; + +КонецПроцедуры + Процедура УстановитьПакетыПоОписаниюПакета() Экспорт ПутьКМанифесту = ОбъединитьПути(ТекущийКаталог(), Константы.ИмяФайлаСпецификацииПакета); @@ -72,6 +96,8 @@ Контекст = Новый Структура("Описание", Описание); ЗагрузитьСценарий(ПутьКМанифесту, Контекст); + ПроверитьВерсиюСреды(Описание); + РазрешитьЗависимостиПакета(Описание); КонецПроцедуры @@ -240,6 +266,59 @@ КонецФункции +// Compare two version strings. +// +// Parameters +// VersionString1 – String – version number like MM.{m|mm}.RR.BB +// VersionString2 – String – the second version number +// +// Return value: +// Number – greater 0, if VersionString1 > VersionString2; 0, if versions are equal. +Function СравнитьВерсии(Val VersionString1, Val VersionString2) Export + + String1 = ?(IsBlankString(VersionString1), "0.0.0.0", VersionString1); + String2 = ?(IsBlankString(VersionString2), "0.0.0.0", VersionString2); + + AdduceToUniformVersionFormat(String1, String2); + + Version1 = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(String1, "."); + Version2 = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(String2, "."); + + Result = 0; + For Digit = 0 To Version1.UBound() Do + Result = Number(Version1[Digit]) - Number(Version2[Digit]); + If Result <> 0 Then + Return Result; + EndIf; // Result <> 0 + EndDo; // Digit = 0 To Version1.UBound() + Return Result; + +КонецФункции + +Procedure AdduceToUniformVersionFormat(VersionString1, VersionString2) Export + + Version1Array = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(VersionString1, "."); + Version2Array = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(VersionString2, "."); + + Diff = Version2Array.Count() - Version1Array.Count(); + + If Diff = 0 Then + Return; + EndIf; // Diff = 0 + + Suffix = ""; + For index = 1 To Max(Diff, -Diff) Do + Suffix = Suffix + ".0"; + EndDo; // index = 1 To Max(Diff, -Diff) + + If Diff > 0 Then + VersionString1 = VersionString1 + Suffix; + Else + VersionString2 = VersionString2 + Suffix; + EndIf; + +EndProcedure + Функция КаталогСистемныхБиблиотек() СистемныеБиблиотеки = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system")); From c0d05fc174c1732d01df5f3300cce2565c1111c2 Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Fri, 2 Dec 2016 17:36:56 +0300 Subject: [PATCH 3/5] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D1=8F=20?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8,=20=D0=B5=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=BE=D0=BD=D0=B0=20=D0=BE=D1=82=D1=81=D1=83=D1=82?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D1=83=D0=B5=D1=82=20=D0=B2=20=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=84=D0=B5=D1=81=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\320\237\320\260\320\272\320\265\321\202\320\260.os" | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git "a/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" index 79c9cc9..d893561 100644 --- "a/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -63,8 +63,13 @@ Процедура ПроверитьВерсиюСреды(Манифест) - ИмяПакета = Манифест.Свойства().Имя; - ТребуемаяВерсияСреды = Манифест.Свойства().ВерсияСреды; + Свойства = Манифест.Свойства(); + Если НЕ Свойства.Свойство("ВерсияСреды") Тогда + Возврат; + КонецЕсли; + + ИмяПакета = Свойства.Имя; + ТребуемаяВерсияСреды = Свойства.ВерсияСреды; СистемнаяИнформация = Новый СистемнаяИнформация; ВерсияСреды = СистемнаяИнформация.Версия; Если СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда From 0887b92fe403e3f94f0751fca2e4f8159f2327fd Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Fri, 2 Dec 2016 17:38:04 +0300 Subject: [PATCH 4/5] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B4=D1=83=D0=B1=D0=BB=D0=B8=D1=80=D1=83=D1=8E=D1=89=D0=B0?= =?UTF-8?q?=D1=8F=D1=81=D1=8F=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5=20=D1=81=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D1=8F=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\260\320\272\320\265\321\202\320\260.os" | 55 +------------------ 1 file changed, 1 insertion(+), 54 deletions(-) diff --git "a/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" index d893561..12bfa24 100644 --- "a/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -72,7 +72,7 @@ ТребуемаяВерсияСреды = Свойства.ВерсияСреды; СистемнаяИнформация = Новый СистемнаяИнформация; ВерсияСреды = СистемнаяИнформация.Версия; - Если СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда + Если РаботаСВерсиями.СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда ТекстСообщения = СтрШаблон( "Ошибка установки пакета <%1>: Обнаружена устаревшая версия движка OneScript. |Требуемая версия: %2 @@ -271,59 +271,6 @@ КонецФункции -// Compare two version strings. -// -// Parameters -// VersionString1 – String – version number like MM.{m|mm}.RR.BB -// VersionString2 – String – the second version number -// -// Return value: -// Number – greater 0, if VersionString1 > VersionString2; 0, if versions are equal. -Function СравнитьВерсии(Val VersionString1, Val VersionString2) Export - - String1 = ?(IsBlankString(VersionString1), "0.0.0.0", VersionString1); - String2 = ?(IsBlankString(VersionString2), "0.0.0.0", VersionString2); - - AdduceToUniformVersionFormat(String1, String2); - - Version1 = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(String1, "."); - Version2 = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(String2, "."); - - Result = 0; - For Digit = 0 To Version1.UBound() Do - Result = Number(Version1[Digit]) - Number(Version2[Digit]); - If Result <> 0 Then - Return Result; - EndIf; // Result <> 0 - EndDo; // Digit = 0 To Version1.UBound() - Return Result; - -КонецФункции - -Procedure AdduceToUniformVersionFormat(VersionString1, VersionString2) Export - - Version1Array = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(VersionString1, "."); - Version2Array = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(VersionString2, "."); - - Diff = Version2Array.Count() - Version1Array.Count(); - - If Diff = 0 Then - Return; - EndIf; // Diff = 0 - - Suffix = ""; - For index = 1 To Max(Diff, -Diff) Do - Suffix = Suffix + ".0"; - EndDo; // index = 1 To Max(Diff, -Diff) - - If Diff > 0 Then - VersionString1 = VersionString1 + Suffix; - Else - VersionString2 = VersionString2 + Suffix; - EndIf; - -EndProcedure - Функция КаталогСистемныхБиблиотек() СистемныеБиблиотеки = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system")); From 87eb7bfddad4eafe9fabbc05387d07cc2ddb36f4 Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Fri, 2 Dec 2016 17:40:06 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BE=D1=82=20string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 1 - ...2\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" | 1 - 2 files changed, 2 deletions(-) diff --git a/packagedef b/packagedef index 657d7ae..9c0e8ee 100644 --- a/packagedef +++ b/packagedef @@ -3,7 +3,6 @@ .Версия("0.5.1") .ЗависитОт("logos") .ЗависитОт("cmdline") - .ЗависитОт("strings") .ЗависитОт("tempfiles") .ВключитьФайл("src") .ВключитьФайл("tests") diff --git "a/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" index 12bfa24..80e016d 100644 --- "a/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/\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\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -1,6 +1,5 @@ #Использовать logos #Использовать tempfiles -#Использовать strings Перем Лог; Перем мВременныйКаталогУстановки;