From ad7347d93704cf50cbd56bda7fc488ffbf01ba2c Mon Sep 17 00:00:00 2001 From: boris stoyanov Date: Tue, 22 Dec 2020 17:39:49 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=BB=D0=B0=D0=B3=D0=B8=D0=BD=20robocopy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roboCopy.os" | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/roboCopy.os" diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/roboCopy.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/roboCopy.os" new file mode 100644 index 0000000..6c73161 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/roboCopy.os" @@ -0,0 +1,135 @@ + +#Использовать logos +#Использовать tempfiles + +Перем ВерсияПлагина; +Перем Лог; +Перем КомандыПлагина; + + +#Область Интерфейс_плагина + +// Возвращает версию плагина +// +// Возвращаемое значение: +// Строка - текущая версия плагина +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает приоритет выполнения плагина +// +// Возвращаемое значение: +// Число - приоритет выполнения плагина +// +Функция Приоритет() Экспорт + Возврат 0; +КонецФункции + +// Возвращает описание плагина +// +// Возвращаемое значение: +// Строка - описание функциональности плагина +// +Функция Описание() Экспорт + Возврат "(Windows-only) Плагин заменяет механизм переноса исходников из временного каталога в рабочий на robocopy, чтобы избежать ошибок с длиной пути к файлу"; +КонецФункции + +// Возвращает подробную справку к плагину +// +// Возвращаемое значение: +// Строка - подробная справка для плагина +// +Функция Справка() Экспорт + Возврат "Справка плагина"; +КонецФункции + +// Возвращает имя плагина +// +// Возвращаемое значение: +// Строка - имя плагина при подключении +// +Функция Имя() Экспорт + Возврат "roboCopy"; +КонецФункции + +// Возвращает имя лога плагина +// +// Возвращаемое значение: +// Строка - имя лога плагина +// +Функция ИмяЛога() Экспорт + Возврат "oscript.lib.gitsync.plugins.roboCopy"; +КонецФункции + +#КонецОбласти + +#Область Подписки_на_события + +Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации, Парсер) Экспорт + + Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды); + + Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда + Возврат; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриПолученииПараметров(ПараметрыКоманды, ДополнительныеПараметры) Экспорт + +КонецПроцедуры + +Процедура ПриОчисткеКаталогаРабочейКопии(КаталогРабочейКопии, СоответствиеИменФайловДляПропуска, СтандартнаяОбработка) Экспорт + + СтандартнаяОбработка = Ложь; + Лог.Отладка("Удаляем файлы из каталога рабочей копии"); + ВременныйКаталог = ПолучитьИмяВременногоФайла(); + СоздатьКаталог(ВременныйКаталог); + Для Каждого ИмяФайлаДляПропуска Из СоответствиеИменФайловДляПропуска Цикл + Файл = Новый Файл(ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаДляПропуска.Ключ)); + НовыйФайл = Новый Файл(ОбъединитьПути(ВременныйКаталог, ИмяФайлаДляПропуска.Ключ)); + Если Файл.Существует() Тогда + КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя); + КонецЕсли; + КонецЦикла; + Команда = Новый Команда(); + Команда.УстановитьКоманду("robocopy"); + Команда.ДобавитьПараметр(ВременныйКаталог); + Команда.ДобавитьПараметр(КаталогРабочейКопии); + Команда.ДобавитьПараметр("/PURGE"); + Команда.Исполнить(); + Попытка + УдалитьФайлы(ВременныйКаталог); + Исключение + КонецПопытки; +КонецПроцедуры + +Процедура ПриПеремещенииВКаталогРабочейКопии(КаталогРабочейКопии, КаталогВыгрузки, СтандартнаяОбработка) Экспорт + + Лог.Отладка("Переношу исходники из %1 в %2", КаталогВыгрузки, КаталогРабочейКопии); + + СтандартнаяОбработка = Ложь; + + Команда = Новый Команда(); + Команда.УстановитьКоманду("robocopy"); + Команда.ДобавитьПараметр(КаталогВыгрузки); + Команда.ДобавитьПараметр(КаталогРабочейКопии); + Команда.ДобавитьПараметр("/E"); + Команда.Исполнить(); + +КонецПроцедуры + +#КонецОбласти + +Процедура Инициализация() + + ВерсияПлагина = "1.0.0"; + Лог = Логирование.ПолучитьЛог(ИмяЛога()); + КомандыПлагина = Новый Массив; + КомандыПлагина.Добавить("sync"); + +КонецПроцедуры + +Инициализация();