diff --git "a/features/\320\237\321\200\320\276\321\201\321\202\321\213\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" "b/features/\320\237\321\200\320\276\321\201\321\202\321\213\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature"
index 4838944..18ad110 100644
--- "a/features/\320\237\321\200\320\276\321\201\321\202\321\213\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature"
+++ "b/features/\320\237\321\200\320\276\321\201\321\202\321\213\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature"
@@ -14,7 +14,7 @@
Сценарий: Получение версии продукта
Когда Я выполняю команду "oscript" c параметрами "src/main.os version"
Тогда Я сообщаю вывод команды "oscript"
- И Вывод команды "oscript" содержит "1.0"
+ И Вывод команды "oscript" содержит "1.0.4"
И Вывод команды "oscript" не содержит "AutodocGen v"
И Код возврата команды "oscript" равен 0
@@ -22,7 +22,7 @@
Когда Я выполняю команду "oscript" c параметрами "src/main.os help"
Тогда Вывод команды "oscript" содержит
"""
- AutodocGen v1.0
+ AutodocGen v1.0.4
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
@@ -34,7 +34,7 @@
Когда Я выполняю команду "oscript" c параметрами "src/main.os"
Тогда Вывод команды "oscript" содержит
"""
- AutodocGen v1.0
+ AutodocGen v1.0.4
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
diff --git a/installlocalhost.bat b/installlocalhost.bat
index 8aab7ff..a42f111 100644
--- a/installlocalhost.bat
+++ b/installlocalhost.bat
@@ -1,6 +1,4 @@
@ECHO OFF
del "*.ospx"
-opm build . -mf ./packagedef -out .
-opm install -f autodocgen-1.0.ospx
-
-pause
\ No newline at end of file
+call opm build . -mf ./packagedef -out .
+call opm install -f ./autodocgen-1.0.4.ospx
diff --git a/packagedef b/packagedef
index f89fd08..4d40265 100644
--- a/packagedef
+++ b/packagedef
@@ -15,5 +15,4 @@
.ЗависитОт("1commands", "1.3.2")
.ВключитьФайл("src")
.ВключитьФайл("features")
- .ВключитьФайл("src/package-loader.os")
.ИсполняемыйФайл("src/main.os", ИмяПродукта);
diff --git a/pict/confluence1.png b/pict/confluence1.png
new file mode 100644
index 0000000..fefc6cc
Binary files /dev/null and b/pict/confluence1.png differ
diff --git a/pict/confluence2.png b/pict/confluence2.png
new file mode 100644
index 0000000..1979cf5
Binary files /dev/null and b/pict/confluence2.png differ
diff --git a/pict/confluence3.png b/pict/confluence3.png
new file mode 100644
index 0000000..b487538
Binary files /dev/null and b/pict/confluence3.png differ
diff --git a/pict/html1.PNG b/pict/html1.PNG
new file mode 100644
index 0000000..6b359d1
Binary files /dev/null and b/pict/html1.PNG differ
diff --git a/pict/html2.PNG b/pict/html2.PNG
new file mode 100644
index 0000000..dca563b
Binary files /dev/null and b/pict/html2.PNG differ
diff --git a/readme.md b/readme.md
index 380a869..43b5fe0 100644
--- a/readme.md
+++ b/readme.md
@@ -1,21 +1,21 @@
# AutodocGen
-Инструмент генерации документации на основании информации файлов исходных кодов конфигурации 1С:Предприятие.
+Инструмент генерации документации на основании файлов исходных кодов конфигурации 1С:Предприятие.
## Об инструменте
Инструмент позволяет
-- автоматически сформировать документацию на основании исходных файлов конфигурации 1С:Предприяти
+- автоматически сформировать документацию на основании исходных файлов конфигурации 1С:Предприятие
- выполнить проверку на возможность корректного разбора информации, выступающей исходными данными для документации
-- опубликовать сгенерированную документациию
+- опубликовать сгенерированную документацию
## Установка
-Процесс установки стандартен
+Процесс установки стандартен:
- либо `opm install autodocgen`
-- либо, если в opm приложения почему-то нет, то скачать архив, распаковать и выполнить (для windows) `installlocalhost.bat`
+- либо, если по разным причинам первый способ не подходит, то скачать архив из релизов, распаковать и выполнить (для windows) `installlocalhost.bat`
## Использование
@@ -23,10 +23,11 @@
Конфигурационный файл соответствует структуре единого конфигурационного файла, ниже приведен пример
+```json
{
"GLOBAL": {
"КаталогИсходныхФайлов": "src\\configuration",
- "version": "1.0"
+ "version": "1.0.4"
},
"AutodocGen":{
"НастройкиConluence": {
@@ -46,36 +47,55 @@
"ПоследнийОбработанныйКоммит": ""
}
}
+```
-Располагать конфигурационный файл стоит в корне репозитория под именем `v8config.json`
+Располагать конфигурационный файл нужно в корне репозитория под именем `v8config.json`.
## Поддерживаемые варианты генерации автодокументации
Как видно из пример конфигурационного файла, поддерживаются 2 формата (ключ `-format`)
-- `confluence` - генерирование страниц в указанном пространстве [confluence](https://ru.atlassian.com/software/confluence)
+- `confluence` - генерация страниц в указанном пространстве [confluence](https://ru.atlassian.com/software/confluence)
- `html` - генерация структуры каталогов в соответствии с подсистемами и файлов-страниц в каталогах.
Для добавления новых стоит воспользоваться шаблоном [src/Классы/ШаблонГенераторДокументации.os-template](src/Классы/ШаблонГенераторДокументации.os-template)
## Подготовка конфигурации
-Для генерирования документации, конфигурация должна соответствовать требованиям
+Для генерации документации конфигурация должна соответствовать требованиям:
- Все модули должны иметь определенную структуру областей (в соответствии с требованиями 1С)
- В документацию добавляются только экспортные методы, находящиеся в разделе `ПрограммныйИнтерфейс`
- Описание методов должно соответствовать требованиям оформления кода
- Поддерживаются общие модуи и модули менеджеров объектов
-- Все модули / объекты, которые попадают под правила автодокументирования должны располагаться в соответствующих подсистемах. Принятая структура:
+- Все модули / объекты, которые попадают под правила автодокументирования, должны располагаться в соответствующих подсистемах. Принятая структура:
```
Подсистемы конфигурации
|
- +-- КорневаяПодсистема (не выводится в интерфейс пользователя)
+ +-- МояКорневаяПодсистема (не выводится в интерфейс пользователя)
|
+-- Раздел
|
+-- Подсистема
+ |
+ +-- ОбъектМетаданных
+
+```
+
+## Примеры
+
+### В формате Confluence
+
+
+
+
+
+
+
+### В Формате HTML
+
+
-```
\ No newline at end of file
+
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270_confluence.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270_confluence.os"
index 1ab9fdc..cd601a1 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270_confluence.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270_confluence.os"
@@ -558,6 +558,11 @@
Для Каждого ОписаниеКонстанты Из МассивОписанийКонстант Цикл
РазборПодсистемы = СтрРазделить(ОписаниеКонстанты.Подсистема, ".");
+ Если РазборПодсистемы.Количество() < 2 Тогда
+
+ Продолжить;
+
+ КонецЕсли;
МассивПодсистем.Добавить(ОписаниеКонстанты.Подсистема);
@@ -619,6 +624,7 @@
СимволыЗамены.Добавить(Символ(8211), "–");
СимволыЗамены.Добавить(Символ(8212), "—");
СимволыЗамены.Добавить(Символы.ПС, "\n");
+ СимволыЗамены.Добавить(Символ(13), "\n");
СимволыЗамены.Добавить(Символы.Таб, " ");
Если ДляCDATA Тогда
@@ -719,4 +725,4 @@
Возврат Шаблоны;
-КонецФункции
\ No newline at end of file
+КонецФункции
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270_html.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270_html.os"
index 38e8419..766d804 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270_html.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\320\270_html.os"
@@ -38,91 +38,119 @@
СоздаваемыеРазделы.Колонки.Удалить("Содержимое");
ОшибкиГенерации = "";
ПарсерКонфигурации = ОбщегоНазначения.ПолучитьПарсерКонфигурации();
-
- Для Каждого Модуль Из НастройкиГенератора.ОписаниеКонфигурации.МодулиКонфигурации Цикл
-
- Если НЕ НастройкиГенератора.НастройкиАнализаИзменений.Анализировать
- ИЛИ НастройкиГенератора.НастройкиАнализаИзменений.ИзмененныеФайлы.Найти(НРЕГ(Модуль.ПутьКФайлу)) <> Неопределено Тогда
-
- ОбщегоНазначения.ПолучитьПарсерКонфигурации(ПарсерКонфигурации).ПрочитатьСодержимоеМодуля(Модуль);
-
- ТекстОшибок = "";
- СодержимоеСтраницы = СформироватьТекстСтраницыПоОписанию(Модуль, ТекстОшибок, Шаблоны);
+ СодержимоеСтраницыКонстант = "";
+
+ Если НастройкиГенератора.Свойство("ОписаниеКонфигурации") Тогда
+
+ Для Каждого Модуль Из НастройкиГенератора.ОписаниеКонфигурации.МодулиКонфигурации Цикл
- Если НЕ ПустаяСтрока(ТекстОшибок) Тогда
-
- ОшибкиГенерации = ОшибкиГенерации + ?(ПустаяСтрока(ОшибкиГенерации), "", Символы.ПС)
- + Модуль.ПутьКФайлу + ": " + ТекстОшибок;
-
- Продолжить;
-
- ИначеЕсли ПустаяСтрока(СодержимоеСтраницы) Тогда
+ Если НЕ НастройкиГенератора.НастройкиАнализаИзменений.Анализировать
+ ИЛИ НастройкиГенератора.НастройкиАнализаИзменений.ИзмененныеФайлы.Найти(НРЕГ(Модуль.ПутьКФайлу)) <> Неопределено Тогда
- // Нет никто
- Продолжить;
+ ОбщегоНазначения.ПолучитьПарсерКонфигурации(ПарсерКонфигурации).ПрочитатьСодержимоеМодуля(Модуль);
- Иначе
+ ТекстОшибок = "";
+ СодержимоеСтраницы = СформироватьТекстСтраницыПоОписанию(Модуль, ТекстОшибок, Шаблоны);
- ИмяСтраницы = ОбщегоНазначения.ПолучитьПарсерКонфигурации(ПарсерКонфигурации).ПолноеИмяОбъекта(Модуль, ЛОЖЬ);
- Если Модуль.Родитель.Подсистемы = Неопределено Тогда
+ Если НЕ ПустаяСтрока(ТекстОшибок) Тогда
ОшибкиГенерации = ОшибкиГенерации + ?(ПустаяСтрока(ОшибкиГенерации), "", Символы.ПС)
- + Модуль.ПутьКФайлу + ": не включен в состав подсистем";
+ + Модуль.ПутьКФайлу + ": " + ТекстОшибок;
+
Продолжить;
- КонецЕсли;
-
- СтруктураПодсистем = ПолучитьСтруктуруПодсистем(Модуль.Родитель.Подсистемы);
- Если ПустаяСтрока(СтруктураПодсистем.ИмяРаздела) Тогда
+ ИначеЕсли ПустаяСтрока(СодержимоеСтраницы) Тогда
- ОшибкиГенерации = ОшибкиГенерации + ?(ПустаяСтрока(ОшибкиГенерации), "", Символы.ПС)
- + Модуль.ПутьКФайлу + ": ошибочная структура подсистем";
+ // Нет никто
Продолжить;
- КонецЕсли;
-
- Раздел = СоздаваемыеРазделы.Найти(СтруктураПодсистем.ИмяРаздела, "ИмяСтраницы");
- Если Раздел = Неопределено Тогда
+ Иначе
- Раздел = СоздаваемыеРазделы.Добавить();
- Раздел.ИмяСтраницы = СтруктураПодсистем.ИмяРаздела;
+ ИмяСтраницы = ОбщегоНазначения.ПолучитьПарсерКонфигурации(ПарсерКонфигурации).ПолноеИмяОбъекта(Модуль, ЛОЖЬ);
+ Если Модуль.Родитель.Подсистемы = Неопределено Тогда
+
+ ОшибкиГенерации = ОшибкиГенерации + ?(ПустаяСтрока(ОшибкиГенерации), "", Символы.ПС)
+ + Модуль.ПутьКФайлу + ": не включен в состав подсистем";
+ Продолжить;
+
+ КонецЕсли;
- КонецЕсли;
-
- ИмяПодсистемы = "Подсистема " + СтруктураПодсистем.ИмяПодсистемы;
- Если СтруктураПодсистем.ИмяПодсистемы = "Общего назначения" Тогда
+ СтруктураПодсистем = ПолучитьСтруктуруПодсистем(Модуль.Родитель.Подсистемы);
+ Если ПустаяСтрока(СтруктураПодсистем.ИмяРаздела) Тогда
+
+ ОшибкиГенерации = ОшибкиГенерации + ?(ПустаяСтрока(ОшибкиГенерации), "", Символы.ПС)
+ + Модуль.ПутьКФайлу + ": ошибочная структура подсистем";
+ Продолжить;
+
+ КонецЕсли;
- ИмяПодсистемы = ИмяПодсистемы + " (" + НРег(СтруктураПодсистем.ИмяРаздела) + ")";
+ Раздел = СоздаваемыеРазделы.Найти(СтруктураПодсистем.ИмяРаздела, "ИмяСтраницы");
+ Если Раздел = Неопределено Тогда
+
+ Раздел = СоздаваемыеРазделы.Добавить();
+ Раздел.ИмяСтраницы = СтруктураПодсистем.ИмяРаздела;
+
+ КонецЕсли;
- КонецЕсли;
-
- Подсистема = СоздаваемыеРазделы.Найти(ИмяПодсистемы, "ИмяСтраницы");
- Если Подсистема = Неопределено Тогда
+ ИмяПодсистемы = "Подсистема " + СтруктураПодсистем.ИмяПодсистемы;
+ Если СтруктураПодсистем.ИмяПодсистемы = "Общего назначения" Тогда
+
+ ИмяПодсистемы = ИмяПодсистемы + " (" + НРег(СтруктураПодсистем.ИмяРаздела) + ")";
+
+ КонецЕсли;
+
+ Подсистема = СоздаваемыеРазделы.Найти(ИмяПодсистемы, "ИмяСтраницы");
+ Если Подсистема = Неопределено Тогда
+
+ Подсистема = СоздаваемыеРазделы.Добавить();
+ Подсистема.ИмяСтраницы = ИмяПодсистемы;
+ Подсистема.Родитель = Раздел;
+
+ КонецЕсли;
- Подсистема = СоздаваемыеРазделы.Добавить();
- Подсистема.ИмяСтраницы = ИмяПодсистемы;
- Подсистема.Родитель = Раздел;
+ Страница = СоздаваемыеСтраницы.Добавить();
+ Страница.ИмяСтраницы = "Программный интерфейс. " + ИмяСтраницы;
+ Страница.Родитель = Подсистема;
+ Страница.Содержимое = СодержимоеСтраницы;
- КонецЕсли;
-
- Страница = СоздаваемыеСтраницы.Добавить();
- Страница.ИмяСтраницы = "Программный интерфейс. " + ИмяСтраницы;
- Страница.Родитель = Подсистема;
- Страница.Содержимое = СодержимоеСтраницы;
+ КонецЕсли;
КонецЕсли;
+ КонецЦикла;
+
+ ОшибкиГенерацииКонстант = "";
+ СодержимоеСтраницыКонстант = СформироватьТекстСтраницыКонстант(НастройкиГенератора.ОписаниеКонстант, ОшибкиГенерацииКонстант, НастройкиГенератора.ПодсистемыКонфигурации);
+ Если НЕ ПустаяСтрока(ОшибкиГенерацииКонстант) Тогда
+
+ ОшибкиГенерации = ОшибкиГенерации + ?(ПустаяСтрока(ОшибкиГенерации), "", Символы.ПС) + ОшибкиГенерацииКонстант;
+ СодержимоеСтраницыКонстант = "";
+
КонецЕсли;
- КонецЦикла;
-
- ОшибкиГенерацииКонстант = "";
- СодержимоеСтраницыКонстант = СформироватьТекстСтраницыКонстант(НастройкиГенератора.ОписаниеКонстант, ОшибкиГенерацииКонстант, НастройкиГенератора.ПодсистемыКонфигурации);
- Если НЕ ПустаяСтрока(ОшибкиГенерацииКонстант) Тогда
+ Иначе
+
+ Модуль = НастройкиГенератора.ОписаниеМодуля;
+ ОбщегоНазначения.ПолучитьПарсерКонфигурации(ПарсерКонфигурации).ПрочитатьСодержимоеМодуля(Модуль);
+ ТекстОшибок = "";
+ СодержимоеСтраницы = СформироватьТекстСтраницыПоОписанию(Модуль, ТекстОшибок, Шаблоны);
+
+ Если НЕ ПустаяСтрока(ТекстОшибок) Тогда
+
+ ОшибкиГенерации = ОшибкиГенерации + ?(ПустаяСтрока(ОшибкиГенерации), "", Символы.ПС)
+ + Модуль.ПутьКФайлу + ": " + ТекстОшибок;
+
+ ИначеЕсли НЕ ПустаяСтрока(СодержимоеСтраницы) Тогда
+
+ Страница = СоздаваемыеСтраницы.Добавить();
+ Страница.ИмяСтраницы = Строка(Новый УникальныйИдентификатор);
+ ОписаниеРодителя = СоздаваемыеРазделы.Добавить();
+ ОписаниеРодителя.ИмяСтраницы = "autodoc";
+ Страница.Родитель = ОписаниеРодителя;
+ Страница.Содержимое = СодержимоеСтраницы;
+
+ КонецЕсли;
- ОшибкиГенерации = ОшибкиГенерации + ?(ПустаяСтрока(ОшибкиГенерации), "", Символы.ПС) + ОшибкиГенерацииКонстант;
- СодержимоеСтраницыКонстант = "";
-
КонецЕсли;
Возврат Новый Структура("СоздаваемыеСтраницы, СоздаваемыеРазделы, СодержимоеСтраницыКонстант, ОшибкиГенерации", СоздаваемыеСтраницы, СоздаваемыеРазделы, СодержимоеСтраницыКонстант, ОшибкиГенерации);
@@ -201,8 +229,7 @@
КонецЦикла;
- ТекстОшибок = "";
-
+ ТекстОшибок = "";
Если НЕ ПустаяСтрока(РезультатГенерации.СодержимоеСтраницыКонстант) Тогда
@@ -589,6 +616,7 @@
СимволыЗамены.Добавить(Символ(8211), "–");
СимволыЗамены.Добавить(Символ(8212), "—");
СимволыЗамены.Добавить(Символы.ПС, "
");
+ СимволыЗамены.Добавить(Символ(13), "
");
СимволыЗамены.Добавить(Символы.Таб, " ");
Если ДляCDATA Тогда
@@ -618,6 +646,11 @@
Для Каждого ОписаниеКонстанты Из МассивОписанийКонстант Цикл
РазборПодсистемы = СтрРазделить(ОписаниеКонстанты.Подсистема, ".");
+ Если РазборПодсистемы.Количество() < 2 Тогда
+
+ Продолжить;
+
+ КонецЕсли;
МассивПодсистем.Добавить(ОписаниеКонстанты.Подсистема);
@@ -667,4 +700,4 @@
Возврат МассивИменПодсистем;
-КонецФункции
\ No newline at end of file
+КонецФункции
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\267\320\261\320\276\321\200\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\2701\320\241.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\267\320\261\320\276\321\200\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\2701\320\241.os"
index 684c26c..ca918fc 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\267\320\261\320\276\321\200\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\2701\320\241.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\320\267\320\261\320\276\321\200\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\2701\320\241.os"
@@ -83,11 +83,25 @@
СтрокиКонстант = ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Фильтр);
МассивОписанийКонстант = Новый Массив;
- Для каждого Объект Из СтрокиКонстант Цикл
+ Для Каждого Объект Из СтрокиКонстант Цикл
+ Имя = Объект[0];
ОписаниеИзXML = ПолучитьОписаниеКонстанты(Объект[2]);
+ Подсистема = "";
+ ПодсистемаПредставление = "";
+ Если ТипЗнч(Объект[4]) = Тип("Массив") Тогда
+
+ Подсистема = Объект[4][0][1];
+ ПодсистемаПредставление = Объект[4][0][6];
+
+ КонецЕсли;
+
ОписаниеКонстанты = Новый Структура("Имя, Тип, Описание, Подсистема, ПодсистемаПредставление",
- Объект[0], ПреобразоватьТип(ОписаниеИзXML.ТипКонстанты), ОписаниеИзXML.ТекстОписания, Объект[4][0][1], Объект[4][0][6]);
+ Имя,
+ ПреобразоватьТип(ОписаниеИзXML.ТипКонстанты),
+ ОписаниеИзXML.ТекстОписания,
+ Подсистема,
+ ПодсистемаПредставление);
МассивОписанийКонстант.Добавить(ОписаниеКонстанты);
КонецЦикла;
@@ -429,6 +443,7 @@
Функция ПолучитьОписаниеКонстанты(ПутьКФайлу)
ТекстОписания = "";
+ ТипКонстанты = "";
ФайлXML = Новый ЧтениеXML();
ФайлXML.ОткрытьФайл(ПутьКФайлу);
@@ -463,7 +478,7 @@
КонецЦикла;
- РезультатПоиска = Новый Структура("ТипКонстанты, ТекстОписания", ТипКонстанты ,ТекстОписания );
+ РезультатПоиска = Новый Структура("ТипКонстанты, ТекстОписания", ТипКонстанты, ТекстОписания);
Возврат РезультатПоиска;
@@ -498,7 +513,6 @@
ПреобразованныйТип = ТипИзXML;
КонецЕсли;
-
Возврат ПреобразованныйТип;
КонецФункции
@@ -550,7 +564,6 @@
КлючСвойства = ЧтениеXML.Имя;
ЧтениеXML.Прочитать();
-
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда // вложенный элемент
Если ЧтениеXML.Имя = "v8:item" Тогда // надо найти элемент с именем v8:content
@@ -572,8 +585,9 @@
КонецЕсли;
+ СвойстваКонфигурации.Вставить(КлючСвойства, ЧтениеXML.Значение);
+
КонецЕсли;
- СвойстваКонфигурации.Вставить(КлючСвойства, ЧтениеXML.Значение);
КонецЕсли;
diff --git "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Version.os" "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Version.os"
index 1a131c0..54b3071 100644
--- "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Version.os"
+++ "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Version.os"
@@ -4,6 +4,20 @@
//
///////////////////////////////////////////////////////////////////////////////
+// Возвращает имя команды приложения
+Функция ИмяКоманды() Экспорт
+
+ Возврат "version";
+
+КонецФункции // ИмяКоманды
+
+// Возвращает описание исполняемой команды
+Функция ОписаниеКоманды() Экспорт
+
+ Возврат "Выводит версию приложения";
+
+КонецФункции // ОписаниеКоманды
+
Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
КонецПроцедуры // НастроитьКоманду
diff --git "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\241\321\202\321\200\320\260\320\275\320\270\321\206.os-" "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\241\321\202\321\200\320\260\320\275\320\270\321\206.os-"
deleted file mode 100644
index 32b2793..0000000
--- "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\241\321\202\321\200\320\260\320\275\320\270\321\206.os-"
+++ /dev/null
@@ -1,297 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-// Служебный модуль с реализацией работы команды
-//
-///////////////////////////////////////////////////////////////////////////////
-
-Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
-
- // Создание описания команды
- ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Проверяет наличие страниц в confluence и соответствующих им модулей конфигурации");
-
- // Добавление параметров команды
- Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ЛокальныйКаталогГит", "Файловый путь к локальному репозиторию GIT.");
- Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-delete", "Удаление ненужных страниц");
-
- // Добавление команды парсеру
- Парсер.ДобавитьКоманду(ОписаниеКоманды);
-
-КонецПроцедуры // ЗарегистрироватьКоманду
-
-// Выполняет логику команды
-//
-// Параметры:
-// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
-// ДополнительныеПараметры (необязательно) - Соответствие - дополнительные параметры
-//
-Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт
-
- КаталогРепозитория = ci41cОбщегоНазначения.КаталогРепозитория(ПараметрыКоманды, ДополнительныеПараметры);
- Если КаталогРепозитория = Неопределено Тогда
-
- Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры;
-
- КонецЕсли;
-
- НастройкиСтенда = ci41cОбщегоНазначения.ПрочитатьНастройкиСтенда(КаталогРепозитория, ДополнительныеПараметры);
- Если НастройкиСтенда = Неопределено Тогда
-
- Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры;
-
- КонецЕсли;
-
- Если НастройкиСтенда.Настройка("АвтоДокументирование\Выполнять") <> ИСТИНА Тогда
-
- ДополнительныеПараметры.Лог.Информация("Автодокументирование не используется");
- Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
-
- КонецЕсли;
-
- Пространство = НастройкиСтенда.Настройка("АвтоДокументирование\КодПространстваConfluence");
- Если НЕ ЗначениеЗаполнено(Пространство) Тогда
-
- ДополнительныеПараметры.Лог.Ошибка("Анализ документации невозможен, т.к. не указан код пространства confluence");
- Возврат МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения;
-
- КонецЕсли;
-
- Генератор = Новый ГенераторДокументации();
-
- КомандаGit = Новый КомандныйФайл();
- КомандаGit.ДобавитьКоманду(СтрШаблон("cd /d ""%1""", КаталогРепозитория));
- КомандаGit.ДобавитьКоманду("git pull origin");
-
- КодВозврата = КомандаGit.Исполнить();
- ВыводКоманды = КомандаGit.ПолучитьВывод();
-
- Если КодВозврата <> 0 Тогда
-
- ДополнительныеПараметры.Лог.Ошибка("git вернул код ошибки %1%2Вывод%3", КодВозврата, Символы.ПС, ВыводКоманды);
- Возврат МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения;
-
- КонецЕсли;
-
- КаталогИсходников = ОбъединитьПути(КаталогРепозитория, НастройкиСтенда.Настройка("КаталогИсходныхФайлов"));
-
- ОписаниеКонфигурации = Генератор.ПолучитьПарсерКонфигурации().ПрочитатьДеревоКонфигурации(КаталогИсходников);
- ОписаниеКонфигурации = Генератор.ПолучитьПарсерКонфигурации().ПрочитатьМодулиКонфигурации(КаталогИсходников, ОписаниеКонфигурации);
-
- СоздаваемыеСтраницы = Новый ТаблицаЗначений;
- СоздаваемыеСтраницы.Колонки.Добавить("ИмяСтраницы");
- СоздаваемыеСтраницы.Колонки.Добавить("Родитель");
- СоздаваемыеСтраницы.Колонки.Добавить("Идентификатор");
-
- СоздаваемыеРазделы = СоздаваемыеСтраницы.Скопировать();
- СоздаваемыеПодсистемы = СоздаваемыеСтраницы.Скопировать();
-
- УдаляемыеСтраницы = Новый ТаблицаЗначений;
- УдаляемыеСтраницы.Колонки.Добавить("ИмяСтраницы");
- УдаляемыеСтраницы.Колонки.Добавить("Идентификатор");
-
- ОшибкиОбновленияСтраниц = "";
-
- Для Каждого Модуль Из ОписаниеКонфигурации.МодулиКонфигурации Цикл
-
- Генератор.ПолучитьПарсерКонфигурации().ПрочитатьСодержимоеМодуля(Модуль);
-
- ТекстОшибок = "";
- СодержимоеСтраницы = Генератор.СформироватьТекстСтраницыПоОписанию(Модуль, ТекстОшибок, Генератор.ЗагрузитьШаблоны(НастройкиСтенда, ЛОЖЬ));
-
- Если НЕ ПустаяСтрока(ТекстОшибок) ИЛИ ПустаяСтрока(СодержимоеСтраницы) Тогда
-
- // Нет никто
- Продолжить;
-
- Иначе
-
- ИмяСтраницы = Генератор.ПолучитьПарсерКонфигурации().ПолноеИмяОбъекта(Модуль, ЛОЖЬ);
-
- СтруктураПодсистем = Генератор.ПолучитьСтруктуруПодсистем(Модуль.Родитель.Подсистемы);
- Если ПустаяСтрока(СтруктураПодсистем.ИмяРаздела) Тогда
-
- Продолжить;
-
- КонецЕсли;
-
- Раздел = СоздаваемыеРазделы.Найти(СтруктураПодсистем.ИмяРаздела, "ИмяСтраницы");
- Если Раздел = Неопределено Тогда
-
- Раздел = СоздаваемыеРазделы.Добавить();
- Раздел.ИмяСтраницы = СтруктураПодсистем.ИмяРаздела;
-
- КонецЕсли;
-
- ИмяПодсистемыБСП = "Подсистема " + СтруктураПодсистем.ИмяПодсистемы;
- Если СтруктураПодсистем.ИмяПодсистемы = "Общего назначения" Тогда
-
- ИмяПодсистемыБСП = ИмяПодсистемыБСП + " (" + НРег(СтруктураПодсистем.ИмяРаздела) + ")";
-
- КонецЕсли;
-
- Подсистема = СоздаваемыеПодсистемы.Найти(ИмяПодсистемыБСП, "ИмяСтраницы");
- Если Подсистема = Неопределено Тогда
-
- Подсистема = СоздаваемыеПодсистемы.Добавить();
- Подсистема.ИмяСтраницы = ИмяПодсистемыБСП;
- Подсистема.Родитель = Раздел;
-
- КонецЕсли;
-
- Страница = СоздаваемыеСтраницы.Добавить();
- Страница.ИмяСтраницы = "Программный интерфейс: " + ИмяСтраницы;
- Страница.Родитель = Подсистема;
-
- КонецЕсли;
-
- КонецЦикла;
-
- ПодключениеConfluence = Генератор.СоздатьПодключениеConfluence();
- ИдентификаторСтраницы = Confluence.НайтиСтраницуПоИмени(ПодключениеConfluence, Пространство, "Состав подсистем");
- Если ПустаяСтрока(ИдентификаторСтраницы) Тогда
-
- ОшибкиОбновленияСтраниц = ОшибкиОбновленияСтраниц + ?(ПустаяСтрока(ОшибкиОбновленияСтраниц), "", Символы.ПС) +
- "В пространстве отсутствует корневая страница документации 'Состав подсистем'";
-
- Иначе
-
- ДочерниеСтраницы = Confluence.ПодчиненныеСтраницыПоИдентификатору(ПодключениеConfluence, ИдентификаторСтраницы);
- Для Каждого ИмеющийсяРаздел Из ДочерниеСтраницы Цикл
-
- НайденныйРаздел = СоздаваемыеРазделы.Найти(ИмеющийсяРаздел.Наименование, "ИмяСтраницы");
- Если НайденныйРаздел = Неопределено Тогда
-
- ОшибкиОбновленияСтраниц = ОшибкиОбновленияСтраниц + ?(ПустаяСтрока(ОшибкиОбновленияСтраниц), "", Символы.ПС)
- + "Нужно удалить раздел '" + ИмеющийсяРаздел.Наименование + "' (" + ИмеющийсяРаздел.Идентификатор + ") и все подчиненные";
-
- УдаляемаяСтраница = УдаляемыеСтраницы.Добавить();
- УдаляемаяСтраница.ИмяСтраницы = ИмеющийсяРаздел.Наименование;
- УдаляемаяСтраница.Идентификатор = ИмеющийсяРаздел.Идентификатор;
-
- Иначе
-
- ДочерниеСтраницыРаздела = Confluence.ПодчиненныеСтраницыПоИдентификатору(
- ПодключениеConfluence,
- Confluence.НайтиСтраницуПоИмени(ПодключениеConfluence, Пространство, ИмеющийсяРаздел.Наименование));
- Для Каждого ИмеющаясяПодсистема Из ДочерниеСтраницыРаздела Цикл
-
- УдалитьПодсистему = ЛОЖЬ;
- ДочерниеСтраницыПодсистемы = Неопределено;
- НайденныеПодсистемыРаздела = СоздаваемыеПодсистемы.НайтиСтроки(Новый Структура("Родитель, ИмяСтраницы", НайденныйРаздел, ИмеющаясяПодсистема.Наименование));
- Если НайденныеПодсистемыРаздела.Количество() <> 1 Тогда
-
- ДочерниеСтраницыПодсистемы = Confluence.ПодчиненныеСтраницыПоИдентификатору(
- ПодключениеConfluence,
- Confluence.НайтиСтраницуПоИмени(ПодключениеConfluence, Пространство, ИмеющаясяПодсистема.Наименование));
-
- УдалитьПодсистему = ИСТИНА;
- Для Каждого ИмеющаясяСтраница Из ДочерниеСтраницыПодсистемы Цикл
-
- Если СтрНайти(ИмеющаясяСтраница.Наименование, "Программный интерфейс:") = 0 Тогда
-
- УдалитьПодсистему = ЛОЖЬ;
- Прервать;
-
- КонецЕсли;
-
- КонецЦикла;
-
- Если УдалитьПодсистему Тогда
-
- ОшибкиОбновленияСтраниц = ОшибкиОбновленияСтраниц + ?(ПустаяСтрока(ОшибкиОбновленияСтраниц), "", Символы.ПС)
- + "Нужно удалить подсистему '" + ИмеющаясяПодсистема.Наименование + "' (" + ИмеющаясяПодсистема.Идентификатор + ") и все подчиненные";
-
- УдаляемаяСтраница = УдаляемыеСтраницы.Добавить();
- УдаляемаяСтраница.ИмяСтраницы = ИмеющаясяПодсистема.Наименование;
- УдаляемаяСтраница.Идентификатор = ИмеющаясяПодсистема.Идентификатор;
-
- КонецЕсли;
-
- КонецЕсли;
-
- Если НЕ УдалитьПодсистему Тогда
-
- Если ДочерниеСтраницыПодсистемы = Неопределено Тогда
-
- ДочерниеСтраницыПодсистемы = Confluence.ПодчиненныеСтраницыПоИдентификатору(
- ПодключениеConfluence,
- Confluence.НайтиСтраницуПоИмени(ПодключениеConfluence, Пространство, ИмеющаясяПодсистема.Наименование));
- КонецЕсли;
-
- Для Каждого ИмеющаясяСтраница Из ДочерниеСтраницыПодсистемы Цикл
-
- Если НайденныеПодсистемыРаздела.Количество() Тогда
-
- НайденныеСтраницыПодсистемы = СоздаваемыеСтраницы.НайтиСтроки(Новый Структура("Родитель, ИмяСтраницы", НайденныеПодсистемыРаздела[0], ИмеющаясяСтраница.Наименование));
-
- Иначе
-
- НайденныеСтраницыПодсистемы = Новый Массив;
-
- КонецЕсли;
-
- Если НайденныеСтраницыПодсистемы.Количество() <> 1 Тогда
-
- Если СтрНайти(ИмеющаясяСтраница.Наименование, "Программный интерфейс:") > 0 Тогда
-
- ОшибкиОбновленияСтраниц = ОшибкиОбновленияСтраниц + ?(ПустаяСтрока(ОшибкиОбновленияСтраниц), "", Символы.ПС)
- + "Нужно удалить страницу '" + ИмеющаясяСтраница.Наименование + "' (" + ИмеющаясяСтраница.Идентификатор + ")";
-
- УдаляемаяСтраница = УдаляемыеСтраницы.Добавить();
- УдаляемаяСтраница.ИмяСтраницы = ИмеющаясяСтраница.Наименование;
- УдаляемаяСтраница.Идентификатор = ИмеющаясяСтраница.Идентификатор;
-
- КонецЕсли;
-
- КонецЕсли;
-
- КонецЦикла;
-
- КонецЕсли;
-
- КонецЦикла;
-
- КонецЕсли;
-
- КонецЦикла;
-
- КонецЕсли;
-
- Если Не ПустаяСтрока(ОшибкиОбновленияСтраниц) Тогда
-
- Если ПараметрыКоманды["-delete"] Тогда
-
- ОшибкиОбновленияСтраниц = "";
-
- Для Каждого Страница Из УдаляемыеСтраницы Цикл
-
- Попытка
-
- Confluence.УдалитьСтраницу(ПодключениеConfluence, Пространство, Страница.ИмяСтраницы, Страница.Идентификатор, ИСТИНА);
- ДополнительныеПараметры.Лог.Информация("Удалена страница '" + Страница.ИмяСтраницы + "' (" + Страница.Идентификатор + ") и подчиненные (при наличии)");
-
- Исключение
-
- ОшибкиОбновленияСтраниц = ОшибкиОбновленияСтраниц + ?(ПустаяСтрока(ОшибкиОбновленияСтраниц), "", Символы.ПС)
- + "Ошибка удаления страницы '" + Страница.ИмяСтраницы + "' (" + Страница.Идентификатор + "): " + ОписаниеОшибки();
-
- КонецПопытки;
-
- КонецЦикла;
-
- КонецЕсли;
-
- КонецЕсли;
-
- // При успешном выполнении возвращает код успеха
- Если ПустаяСтрока(ОшибкиОбновленияСтраниц) Тогда
-
- Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
-
- Иначе
-
- ДополнительныеПараметры.Лог.Ошибка("Имеются ненужные страницы: " + Символы.ПС + ОшибкиОбновленияСтраниц);
- Возврат МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения;
-
- КонецЕсли;
-
-КонецФункции // ВыполнитьКоманду
diff --git "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os" "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os"
index e00d787..2fcfde8 100644
--- "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os"
+++ "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os"
@@ -4,6 +4,20 @@
//
///////////////////////////////////////////////////////////////////////////////
+// Возвращает имя команды приложения
+Функция ИмяКоманды() Экспорт
+
+ Возврат "help";
+
+КонецФункции // ИмяКоманды
+
+// Возвращает описание исполняемой команды
+Функция ОписаниеКоманды() Экспорт
+
+ Возврат "Выводит справку по командам";
+
+КонецФункции // ОписаниеКоманды
+
Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Команда");
diff --git "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\321\216.os" "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\321\216.os"
index c60dd4d..6ca8e7f 100644
--- "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\321\216.os"
+++ "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\321\216.os"
@@ -25,6 +25,7 @@
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-format", "Формат генерации документации. Поддерживается confluence и html. Используется confluence по умолчанию");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-config", "Путь к конфигурационному файлу. По умолчанию ищет в каталоге исходных файлов");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-git", "Включает режим обработки изменений репозитория git");
+ Парсер.ДобавитьПараметрФлагКоманды(Команда, "-errno", "Выполняет публикацию документации даже при наличии ошибок");
КонецПроцедуры // НастроитьКоманду
@@ -43,9 +44,9 @@
НастройкиАнализаИзменений = ОбщегоНазначения.ПрочитатьНастройкиАнализаИзменений(НастройкиСтенда, КаталогИсходныхФайлов, ПараметрыКоманды, Приложение);
ПарсерКонфигурации = ОбщегоНазначения.ПолучитьПарсерКонфигурации();
-
- ТекущийКаталогИсходныхФайлов = ?(НастройкиАнализаИзменений.Анализировать, НастройкиАнализаИзменений.КаталогИсходныхФайлов, КаталогИсходныхФайлов);
-
+ ТекущийКаталогИсходныхФайлов = ОбъединитьПути(КаталогИсходныхФайлов, НастройкиСтенда.Настройка("КаталогИсходныхФайлов"));
+ Файл = Новый Файл(ТекущийКаталогИсходныхФайлов);
+ ТекущийКаталогИсходныхФайлов = Файл.ПолноеИмя;
ОписаниеКонфигурации = ОбщегоНазначения.ПолучитьПарсерКонфигурации(ПарсерКонфигурации).ПрочитатьДеревоКонфигурации(ТекущийКаталогИсходныхФайлов);
ОписаниеКонфигурации = ОбщегоНазначения.ПолучитьПарсерКонфигурации(ПарсерКонфигурации).ПрочитатьМодулиКонфигурации(ТекущийКаталогИсходныхФайлов, ОписаниеКонфигурации);
@@ -57,23 +58,32 @@
ГенераторДокументации = ОбщегоНазначения.ПолучитьГенераторДокументации(НастройкиСтенда, ПараметрыКоманды, Приложение);
РезультатГенерации = ГенераторДокументации.Сгенерировать(НастройкиГенератора);
- Если Не ПустаяСтрока(РезультатГенерации.ОшибкиГенерации) Тогда
+ ЕстьОшибкиГенерации = Не ПустаяСтрока(РезультатГенерации.ОшибкиГенерации);
+ ТекстОшибки = "";
+
+ Если ПараметрыКоманды["-errno"] ИЛИ НЕ ЕстьОшибкиГенерации Тогда
+
+ ОшибкиПубликации = ГенераторДокументации.Опубликовать(РезультатГенерации, НастройкиГенератора);
+ Если Не ПустаяСтрока(ОшибкиПубликации) Тогда
+
+ ТекстОшибки = СтрШаблон("Публикация документациии завершилась ошибкой: %1", ОшибкиПубликации);
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Если ЕстьОшибкиГенерации Тогда
- ТекстОшибки = СтрШаблон("Генерация документациии завершилась ошибкой: %1", РезультатГенерации.ОшибкиГенерации);
- Приложение.ЗавершитьРаботуПриложенияСОшибкой(ТекстОшибки);
- Возврат Приложение.РезультатыКоманд().ОшибкаВремениВыполнения;
+ ТекстОшибки = СтрШаблон("Генерация документациии завершилась ошибкой: %1", РезультатГенерации.ОшибкиГенерации) + Символы.ПС + ТекстОшибки;
КонецЕсли;
+
+ Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
- ОшибкиПубликации = ГенераторДокументации.Опубликовать(РезультатГенерации, НастройкиГенератора);
- Если Не ПустаяСтрока(ОшибкиПубликации) Тогда
-
- ТекстОшибки = СтрШаблон("Публикация документациии завершилась ошибкой: %1", ОшибкиПубликации);
Приложение.ЗавершитьРаботуПриложенияСОшибкой(ТекстОшибки);
- Возврат Приложение.РезультатыКоманд().ОшибкаВремениВыполнения;
КонецЕсли;
-
+
// При успешном выполнении возвращает код успеха
Возврат Приложение.РезультатыКоманд().Успех;
diff --git "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\321\216\320\237\320\276\320\244\320\260\320\271\320\273\321\203.os" "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\321\216\320\237\320\276\320\244\320\260\320\271\320\273\321\203.os"
new file mode 100644
index 0000000..800b5e3
--- /dev/null
+++ "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\321\213/\320\241\320\263\320\265\320\275\320\265\321\200\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\321\206\320\270\321\216\320\237\320\276\320\244\320\260\320\271\320\273\321\203.os"
@@ -0,0 +1,107 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Служебный модуль с реализацией работы команды
+//
+///////////////////////////////////////////////////////////////////////////////
+
+// Возвращает имя команды приложения
+Функция ИмяКоманды() Экспорт
+
+ Возврат "alone";
+
+КонецФункции // ИмяКоманды
+
+// Возвращает описание исполняемой команды
+Функция ОписаниеКоманды() Экспорт
+
+ Возврат "Выполняет генерацию документации указанного файла";
+
+КонецФункции // ОписаниеКоманды
+
+Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
+
+ // Добавление параметров команды
+ Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИсходныйФайл", "Исходный файл, для которого необходимо сгенерировать документацию");
+ Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-format", "Формат генерации документации. Поддерживается ТОЛЬКО html.");
+ Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-config", "Путь к конфигурационному файлу. По умолчанию ищет в каталоге с исходным файлом");
+ Парсер.ДобавитьПараметрФлагКоманды(Команда, "-errno", "Выполняет публикацию документации даже при наличии ошибок");
+
+КонецПроцедуры // НастроитьКоманду
+
+// Выполняет логику команды
+//
+// Параметры:
+// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
+// Приложение - Модуль - Модуль менеджера приложения
+//
+Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
+
+ НастройкиГенератора = Новый Структура;
+ ПараметрыКоманды["-format"] = "html";
+
+ ИсходныйФайл = ПараметрыКоманды["ИсходныйФайл"];
+ Если НЕ ЗначениеЗаполнено(ИсходныйФайл) Тогда
+
+ Приложение.ЗавершитьРаботуПриложенияСОшибкой("Не указан каталог исходных файлов");
+ Возврат Неопределено;
+
+ Иначе
+
+ Файл = Новый Файл(ИсходныйФайл);
+ Если Не Файл.Существует() ИЛИ Файл.ЭтоКаталог() Тогда
+
+ Приложение.ЗавершитьРаботуПриложенияСОшибкой(СтрШаблон("Исходный файл '%1' не существует или это каталог", ИсходныйФайл));
+ Возврат Неопределено;
+
+ КонецЕсли;
+
+ ИсходныйФайл = Файл.ПолноеИмя;
+
+ КонецЕсли;
+
+ Файл = Новый Файл(ИсходныйФайл);
+ КаталогИсходныхФайлов = Файл.Путь;
+
+ НастройкиСтенда = ОбщегоНазначения.ПрочитатьНастройкиСтенда(КаталогИсходныхФайлов, ПараметрыКоманды, Приложение);
+ НастройкиАнализаИзменений = ОбщегоНазначения.ПрочитатьНастройкиАнализаИзменений(НастройкиСтенда, КаталогИсходныхФайлов, ПараметрыКоманды, Приложение);
+
+ ПарсерКонфигурации = ОбщегоНазначения.ПолучитьПарсерКонфигурации();
+
+ ОписаниеМодуля = ОбщегоНазначения.ПолучитьПарсерКонфигурации(ПарсерКонфигурации).ПолучитьОписаниеМодуляПоИмениФайла(Файл);
+
+ НастройкиГенератора.Вставить("ОписаниеМодуля", ОписаниеМодуля);
+ НастройкиГенератора.Вставить("НастройкиАнализаИзменений", НастройкиАнализаИзменений);
+
+ ГенераторДокументации = ОбщегоНазначения.ПолучитьГенераторДокументации(НастройкиСтенда, ПараметрыКоманды, Приложение);
+ РезультатГенерации = ГенераторДокументации.Сгенерировать(НастройкиГенератора);
+
+ ЕстьОшибкиГенерации = Не ПустаяСтрока(РезультатГенерации.ОшибкиГенерации);
+ ТекстОшибки = "";
+
+ Если ПараметрыКоманды["-errno"] ИЛИ НЕ ЕстьОшибкиГенерации Тогда
+
+ ОшибкиПубликации = ГенераторДокументации.Опубликовать(РезультатГенерации, НастройкиГенератора);
+ Если Не ПустаяСтрока(ОшибкиПубликации) Тогда
+
+ ТекстОшибки = СтрШаблон("Публикация документациии завершилась ошибкой: %1", ОшибкиПубликации);
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Если ЕстьОшибкиГенерации Тогда
+
+ ТекстОшибки = СтрШаблон("Генерация документациии завершилась ошибкой: %1", РезультатГенерации.ОшибкиГенерации) + Символы.ПС + ТекстОшибки;
+
+ КонецЕсли;
+
+ Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
+
+ Приложение.ЗавершитьРаботуПриложенияСОшибкой(ТекстОшибки);
+
+ КонецЕсли;
+
+ // При успешном выполнении возвращает код успеха
+ Возврат Приложение.РезультатыКоманд().Успех;
+
+КонецФункции // ВыполнитьКоманду
diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217.os"
index 315426c..a575422 100644
--- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217.os"
+++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217.os"
@@ -58,6 +58,12 @@
НастройкиАнализаИзменений = Новый Структура();
НастройкиАнализаИзменений.Вставить("Анализировать", ПараметрыКоманды["-git"]);
+ Если НастройкиАнализаИзменений.Анализировать = Неопределено Тогда
+
+ НастройкиАнализаИзменений.Анализировать = Ложь;
+
+ КонецЕсли;
+
Если НЕ НастройкиАнализаИзменений.Анализировать Тогда
Возврат НастройкиАнализаИзменений;
@@ -95,8 +101,7 @@
НастройкиАнализаИзменений.Вставить("ИзмененныеФайлы", СоставЛога.ИзмененныеФайлы);
НастройкиАнализаИзменений.Вставить("ИдентификаторКоммита", СоставЛога.ИдентификаторКоммита);
- НастройкиАнализаИзменений.Вставить("КаталогИсходныхФайлов", ОбъединитьПути(КаталогИсходныхФайлов, НастройкиСтенда.Настройка("КаталогИсходныхФайлов")));
-
+
Возврат НастройкиАнализаИзменений;
КонецФункции
diff --git "a/src/\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\241\320\270\321\201\321\202\320\265\320\274\321\213.os" "b/src/\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\241\320\270\321\201\321\202\320\265\320\274\321\213.os"
index 75b4022..6d2612c 100644
--- "a/src/\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\241\320\270\321\201\321\202\320\265\320\274\321\213.os"
+++ "b/src/\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\241\320\270\321\201\321\202\320\265\320\274\321\213.os"
@@ -21,7 +21,7 @@
//
Функция ВерсияПродукта() Экспорт
- Возврат "1.0";
+ Возврат "1.0.4";
КонецФункции // ВерсияПродукта
@@ -44,11 +44,11 @@
// См. описание метода "УстановитьРаскладку" библиотеки logos
//
Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт
-
+
Возврат СтрШаблон("%1: %2 - %3", ТекущаяДата(), УровниЛога.НаименованиеУровня(Уровень), Сообщение);
-
-КонецФункции
+КонецФункции
+
// ИмяЛогаСистемы
// Возвращает идентификатор лога приложения
//
@@ -72,7 +72,7 @@
Функция ИмяКомандыВерсия() Экспорт
Возврат "version";
-
+
КонецФункции // ИмяКомандыВерсия
@@ -82,7 +82,7 @@
// Строка - имя команды
//
Функция ИмяКомандыПомощь() Экспорт
-
+
Возврат "help";
КонецФункции // ИмяКомандыПомощь()
@@ -107,21 +107,9 @@
// Приложение - Модуль - Модуль менеджера приложения
Процедура НастроитьКомандыПриложения(Знач Приложение) Экспорт
- Приложение.ДобавитьКоманду(ИмяКомандыПомощь(), "КомандаСправкаПоПараметрам", "Выводит справку по командам");
- Приложение.ДобавитьКоманду(ИмяКомандыВерсия(), "КомандаVersion", "Выводит версию приложения");
- ФайлыКоманд = НайтиФайлы(ОбъединитьПути(ТекущийКаталог(), "src", "Команды"), "*.os");
+ ФайлыКоманд = НайтиФайлы(ОбъединитьПути(СтартовыйСценарий().Каталог, "Команды"), "*.os");
Для Каждого ФайлКоманды Из ФайлыКоманд Цикл
-
- // именовать команды "Команда" в соответствующем каталоге - тавтология
- // оставим для стандартных команд пока
- Если СтрНачинаетсяС(ФайлКоманды.ИмяБезРасширения, "Команда") Тогда
-
- Продолжить;
-
- КонецЕсли;
-
- Приложение.ДобавитьКомандуПриложения(ФайлКоманды.ИмяБезРасширения);
-
+ Приложение.ДобавитьКомандуПриложения(ФайлКоманды.ИмяБезРасширения);
КонецЦикла;
-
+
КонецПроцедуры // ПриРегистрацииКомандПриложения