Skip to content

Commit ad7347d

Browse files
committed
Добавил плагин robocopy
1 parent 435db5b commit ad7347d

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

src/Классы/roboCopy.os

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
2+
#Использовать logos
3+
#Использовать tempfiles
4+
5+
Перем ВерсияПлагина;
6+
Перем Лог;
7+
Перем КомандыПлагина;
8+
9+
10+
#Область Интерфейс_плагина
11+
12+
// Возвращает версию плагина
13+
//
14+
// Возвращаемое значение:
15+
// Строка - текущая версия плагина
16+
//
17+
Функция Версия() Экспорт
18+
Возврат "1.0.0";
19+
КонецФункции
20+
21+
// Возвращает приоритет выполнения плагина
22+
//
23+
// Возвращаемое значение:
24+
// Число - приоритет выполнения плагина
25+
//
26+
Функция Приоритет() Экспорт
27+
Возврат 0;
28+
КонецФункции
29+
30+
// Возвращает описание плагина
31+
//
32+
// Возвращаемое значение:
33+
// Строка - описание функциональности плагина
34+
//
35+
Функция Описание() Экспорт
36+
Возврат "(Windows-only) Плагин заменяет механизм переноса исходников из временного каталога в рабочий на robocopy, чтобы избежать ошибок с длиной пути к файлу";
37+
КонецФункции
38+
39+
// Возвращает подробную справку к плагину
40+
//
41+
// Возвращаемое значение:
42+
// Строка - подробная справка для плагина
43+
//
44+
Функция Справка() Экспорт
45+
Возврат "Справка плагина";
46+
КонецФункции
47+
48+
// Возвращает имя плагина
49+
//
50+
// Возвращаемое значение:
51+
// Строка - имя плагина при подключении
52+
//
53+
Функция Имя() Экспорт
54+
Возврат "roboCopy";
55+
КонецФункции
56+
57+
// Возвращает имя лога плагина
58+
//
59+
// Возвращаемое значение:
60+
// Строка - имя лога плагина
61+
//
62+
Функция ИмяЛога() Экспорт
63+
Возврат "oscript.lib.gitsync.plugins.roboCopy";
64+
КонецФункции
65+
66+
#КонецОбласти
67+
68+
#Область Подписки_на_события
69+
70+
Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации, Парсер) Экспорт
71+
72+
Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды);
73+
74+
Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда
75+
Возврат;
76+
КонецЕсли;
77+
78+
КонецПроцедуры
79+
80+
Процедура ПриПолученииПараметров(ПараметрыКоманды, ДополнительныеПараметры) Экспорт
81+
82+
КонецПроцедуры
83+
84+
Процедура ПриОчисткеКаталогаРабочейКопии(КаталогРабочейКопии, СоответствиеИменФайловДляПропуска, СтандартнаяОбработка) Экспорт
85+
86+
СтандартнаяОбработка = Ложь;
87+
Лог.Отладка("Удаляем файлы из каталога рабочей копии");
88+
ВременныйКаталог = ПолучитьИмяВременногоФайла();
89+
СоздатьКаталог(ВременныйКаталог);
90+
Для Каждого ИмяФайлаДляПропуска Из СоответствиеИменФайловДляПропуска Цикл
91+
Файл = Новый Файл(ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаДляПропуска.Ключ));
92+
НовыйФайл = Новый Файл(ОбъединитьПути(ВременныйКаталог, ИмяФайлаДляПропуска.Ключ));
93+
Если Файл.Существует() Тогда
94+
КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя);
95+
КонецЕсли;
96+
КонецЦикла;
97+
Команда = Новый Команда();
98+
Команда.УстановитьКоманду("robocopy");
99+
Команда.ДобавитьПараметр(ВременныйКаталог);
100+
Команда.ДобавитьПараметр(КаталогРабочейКопии);
101+
Команда.ДобавитьПараметр("/PURGE");
102+
Команда.Исполнить();
103+
Попытка
104+
УдалитьФайлы(ВременныйКаталог);
105+
Исключение
106+
КонецПопытки;
107+
КонецПроцедуры
108+
109+
Процедура ПриПеремещенииВКаталогРабочейКопии(КаталогРабочейКопии, КаталогВыгрузки, СтандартнаяОбработка) Экспорт
110+
111+
Лог.Отладка("Переношу исходники из %1 в %2", КаталогВыгрузки, КаталогРабочейКопии);
112+
113+
СтандартнаяОбработка = Ложь;
114+
115+
Команда = Новый Команда();
116+
Команда.УстановитьКоманду("robocopy");
117+
Команда.ДобавитьПараметр(КаталогВыгрузки);
118+
Команда.ДобавитьПараметр(КаталогРабочейКопии);
119+
Команда.ДобавитьПараметр("/E");
120+
Команда.Исполнить();
121+
122+
КонецПроцедуры
123+
124+
#КонецОбласти
125+
126+
Процедура Инициализация()
127+
128+
ВерсияПлагина = "1.0.0";
129+
Лог = Логирование.ПолучитьЛог(ИмяЛога());
130+
КомандыПлагина = Новый Массив;
131+
КомандыПлагина.Добавить("sync");
132+
133+
КонецПроцедуры
134+
135+
Инициализация();

0 commit comments

Comments
 (0)