From cbaeebd79951c08511f6acb58ebcbb481dcc5ef9 Mon Sep 17 00:00:00 2001
From: Anton Titovets <bayselonarrend@gmail.com>
Date: Tue, 15 Oct 2024 09:29:55 +0300
Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D1=80=D0=B0=D0=B1?=
 =?UTF-8?q?=D0=BE=D1=82=D0=BA=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D1=80?=
 =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=B8=D0=BC?=
 =?UTF-8?q?=D0=B5=D1=80=D0=BE=D0=B2=20CLI?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ci/os/docs_main.os                   | 141 +++++++++++++--------------
 docs/docusaurus/docusaurus.config.js |   2 +-
 service/templates/doc_en.md          |   7 +-
 service/templates/doc_ru.md          |   5 -
 4 files changed, 72 insertions(+), 83 deletions(-)

diff --git a/ci/os/docs_main.os b/ci/os/docs_main.os
index 1e8dbba90e..4068aa8d50 100644
--- a/ci/os/docs_main.os
+++ b/ci/os/docs_main.os
@@ -47,7 +47,7 @@
 		КаталогЛогов        = "./docs/" + Язык + "/results/";
 		КаталогПримеров     = "./docs/" + Язык + "/examples/";
 		КаталогЗначений     = "./docs/" + Язык + "/data/";
-		КаталогCLI          = "./docs/" + Язык + "/cli/";
+		КаталогCLI          = "./docs/" + Язык + "/cli/NEW_CLI/";
 		СписокОбластей      = Новый СписокЗначений();
 		ТекущаяОбласть      = "";
 		СчетчикОбласти      = 0;
@@ -163,78 +163,22 @@
 
 	ТаблицаПараметров = "";
 	Вызов1С           = ПолучитьВызов1С(СтруктураМетода["ИмяМодуля"], СтруктураМетода["ИмяМетода"]);
-
-	ПутьCLI  = КаталогCLI + ИмяМодуляБезПрефикса + "/" + СтруктураМетода["ИмяМетода"] + ".txt";
-	ФайлCLI  = Новый Файл(ПутьCLI);
-	ВызовCLI = "";
-
-	Если Не ФайлCLI.Существует() Тогда
-		
-		КаталогТекущиегоCLI  = КаталогCLI + ИмяМодуляБезПрефикса;
-		ФайлКаталога = Новый Файл(КаталогТекущиегоCLI);
-
-		Если Не ФайлКаталога.Существует() Тогда
-			СоздатьКаталог(КаталогТекущиегоCLI);
+	ВызовCLI          = ПолучитьВызовCLI(ИмяМодуляБезПрефикса, СтруктураМетода);
+	
+	Для каждого ПараметрМетода Из СтруктураМетода["Параметры"] Цикл
+			
+		Если Не ЗначениеЗаполнено(ПараметрМетода.Опция) Или Не СтруктураМетода["ЕстьCLI"] Тогда
+			Сообщить("Метод не имеет опции: " + СтруктураМетода["Заголовок"]);
+			Возврат;
 		КонецЕсли;
 
-		ВызовCLI = "oint " + СтруктураМетода["Команда"] + " " + СтруктураМетода["ИмяМетода"];
-
-		Для каждого ПараметрМетода Из СтруктураМетода["Параметры"] Цикл
-			
-			Если Не ЗначениеЗаполнено(ПараметрМетода.Опция) Или Не СтруктураМетода["ЕстьCLI"] Тогда
-				Сообщить("Метод не имеет опции: " + СтруктураМетода["Заголовок"]);
-				Возврат;
-			КонецЕсли;
-
-			ТаблицаПараметров = ТаблицаПараметров + "  | " 
-				+ ПараметрМетода.Имя + " | "
-				+ ПараметрМетода.Опция + " | "
-				+ ПараметрМетода.Типы  + " | "
-				+ ПараметрМетода.Описание + " |"
-				+ Символы.ПС;
-
-			ВызовCLI = ВызовCLI + " " + ПараметрМетода.Опция + " ";
-			ВызовCLI = ВызовCLI + ОпределитьЗначениеОпции(ПараметрМетода.Опция, СтруктураЗначений[ПараметрМетода.Имя]);
-
-		КонецЦикла;
-	
-		ВызовCLI = СокрЛП(ВызовCLI);
-		ТекстCLI = Новый ТекстовыйДокумент();
-		ТекстCLI.УстановитьТекст(ВызовCLI);
-		ТекстCLI.Записать(ПутьCLI);
-		
-	Иначе
-
-		Для каждого ПараметрМетода Из СтруктураМетода["Параметры"] Цикл
-			
-			Если Не ЗначениеЗаполнено(ПараметрМетода.Опция) Или Не СтруктураМетода["ЕстьCLI"] Тогда
-				Сообщить("Метод не имеет опции: " + СтруктураМетода["Заголовок"]);
-				Возврат;
-			КонецЕсли;
-
-			ТаблицаПараметров = ТаблицаПараметров + "  | " 
-				+ ПараметрМетода.Имя + " | "
-				+ ПараметрМетода.Опция + " | "
-				+ ПараметрМетода.Типы  + " | "
-				+ ПараметрМетода.Описание + " |"
-				+ Символы.ПС;
-		КонецЦикла;
-
-		ТекстCLI = Новый ТекстовыйДокумент();
-		ТекстCLI.Прочитать(ПутьCLI);
-
-		Для Н = 1 По ТекстCLI.КоличествоСтрок() Цикл
-			ТекущаяСтрока = СокрЛП(ТекстCLI.ПолучитьСтроку(Н));
-			Если ЗначениеЗаполнено(ТекущаяСтрока) Тогда
-				ВызовCLI = ВызовCLI + "  " + ТекущаяСтрока + Символы.ПС;
-			КонецЕсли;
-		КонецЦикла;
-
-		Если ЗначениеЗаполнено(ВызовCLI) Тогда
-			ВызовCLI = Лев(ВызовCLI, СтрДлина(ВызовCLI) - 1);
-		КонецЕсли;
-	
-	КонецЕсли;
+		ТаблицаПараметров = ТаблицаПараметров + "  | " 
+			+ ПараметрМетода.Имя + " | "
+			+ ПараметрМетода.Опция + " | "
+			+ ПараметрМетода.Типы  + " | "
+			+ ПараметрМетода.Описание + " |"
+			+ Символы.ПС;
+	КонецЦикла;
 
 	Макет = СтрЗаменить(Макет, "@Вызов1С"          , Вызов1С);
 	Макет = СтрЗаменить(Макет, "@ВызовCLI"         , ВызовCLI);
@@ -568,6 +512,61 @@
 
 КонецФункции
 
+Функция ПолучитьВызовCLI(СтруктураМетода)
+
+	ПутьCLI  = КаталогCLI + СтруктураМетода["Команда"];;
+	ФайлCLI  = Новый Файл(ПутьCLI);
+	ВызовCLI = "";
+
+	Если Не ФайлCLI.Существует() Тогда
+		
+		Возврат "";
+		
+	Иначе
+
+		СоответствиеПодсветки = Новый Соответствие();
+		СоответствиеПодсветки.Вставить("bat"   , "batch");
+		СоответствиеПодсветки.Вставить("bash"  , "sh");
+		СоответствиеПодсветки.Вставить("single", "powershell");
+
+		СоответствиеЗаголовков = Новый Соответствие();
+		СоответствиеЗаголовков.Вставить("bat"   , "CMD/Bat");
+		СоответствиеЗаголовков.Вставить("bash"  , "Bash");
+		СоответствиеЗаголовков.Вставить("single", "*");
+
+		ФайлыВызова = НайтиФайлы(ПутьCLI, "*.txt");
+		ПолныйТекст = "
+		| <Tabs>";
+
+		ШаблонПримера = "  
+		|    <TabItem value=""%1"" label=""%2"" default>
+    	|        ```%3
+		|
+		|        ```
+  		|    </TabItem>";
+
+		Для Каждого ФайлВызова Из ФайлыВызова Цикл
+
+			ТекущийПуть = ФайлВызова.ПолноеИмя;
+			ДанныеФайла = Новый ДвоичныеДанные(ТекущийПуть);
+			ДанныеФайла = ПолучитьСтрокуИзДвоичныхДанных(ДанныеФайла);
+
+			Ключ      = ФайлВызова.ИмяБезРасширения;
+			Подсветка = СоответствиеПодсветки[Ключ];
+			Заголовок = СоответствиеЗаголовков[Ключ];
+
+			ПолныйТекст = ПолныйТекст + Символы.ПС + СтрШаблон(ШаблонПримера, Ключ, Заголовок, Подсветка);
+
+		КонецЦикла;
+
+		ПолныйТекст = ПолныйТекст + Символы.ПС + "</Tabs>";
+		
+		Возврат ПолныйТекст;
+	
+	КонецЕсли;
+
+КонецФункции
+
 Функция ОпределитьЗначениеОпции(Опция, Значение = "")
 
 	Если ЗначениеЗаполнено(Значение) Тогда
diff --git a/docs/docusaurus/docusaurus.config.js b/docs/docusaurus/docusaurus.config.js
index 383dce392e..62d5643a21 100644
--- a/docs/docusaurus/docusaurus.config.js
+++ b/docs/docusaurus/docusaurus.config.js
@@ -156,7 +156,7 @@ window.yaContextCb.push(() => {
       prism: {
         theme: prismThemes.github,
         darkTheme: prismThemes.github,
-		additionalLanguages: ['powershell','json','bsl']
+		additionalLanguages: ['powershell','json','bsl','batch','sh']
       },
     }),
 };
diff --git a/service/templates/doc_en.md b/service/templates/doc_en.md
index e19cbcf82c..c5f7c1546b 100644
--- a/service/templates/doc_en.md
+++ b/service/templates/doc_en.md
@@ -23,14 +23,9 @@ sidebar_position: @Счетчик
 ```bsl title="Code example"
 @Вызов1С
 ```
-
-
-
-```sh title="CLI command example"
-    
+ 
 @ВызовCLI
 
-```
 
 ```json title="Result"
 @Результат
diff --git a/service/templates/doc_ru.md b/service/templates/doc_ru.md
index 525920727b..7d957a17fa 100644
--- a/service/templates/doc_ru.md
+++ b/service/templates/doc_ru.md
@@ -23,14 +23,9 @@ sidebar_position: @Счетчик
 ```bsl title="Пример кода"
 @Вызов1С
 ```
-
-
-
-```sh title="Пример команды CLI"
     
 @ВызовCLI
 
-```
 
 ```json title="Результат"
 @Результат