Декларативное определение библиотеки на основе структуры проекта #203
Copy link
Copy link
Open
Description
Взято по аналогии со стандартами разработки Go (https://github.com/golang-standards/project-layout)
Реализовать декларативное описание библиотеки на основании структуры проекта. Например:
/cmd- определяет "ИсполняемыйФайл"./pkg(/public) - Классы и модули расположенные определяют публичные объекты аналогично "ОпределяетКласс"/"ОпределяетМодуль"/bin- регистрирует расположенные внутри аддины./internal(/private) - включает в состав пакета, но не публикует классы/модули/vendor- включает в состав поставляемые библиотеки (текущий аналогoscript-modules)/docs,/examples,/etc... - дополнительные файлы библиотеки (документация, примеры, другое)/tests- содержит тесты проекта. Тесты запускаются в едином с/public+/privateконтексте.
Для задания псевдонимов реализовать множественную аннотацию @Синоним/@Alias. Например:
/cmd/main.os - имя по умолчанию - создается cmd по имени библиотеки. Для
@Alias vrunner
@Alias runner
Или реализовать alias.json в папке с файлом:
{
"main.os": [ "vrunner", "runner" ]
}Аналогично, для публичных классов/модулей.
Это позволит:
- Упростить описание проекта, полностью убрав, или разместив декларации объектов максимально приближенно к их определению
- Сделает проекты более структурированными, что повысит их читаемость и сопровождаемость
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
nixel2007 commentedon Apr 22, 2022
надо отметить, что указание ОпределяетКласс и ОпределяетМодуль - полностью опциональное. Если модули и классы лежат по соглашению о структуре каталогов, то загрузчик библиотек из сам загрузит в правильном виде.
EvilBeaver commentedon Apr 25, 2022
Да, у нас и так в целом на основе структуры проекта загрузка ведется. Развивать понятно что можно и дальше. Надо проектировать каждый конкретный кейс: Цель, ЧтобыЧто. @yukon39 возьметесь?
yukon39 commentedon Apr 25, 2022
@EvilBeaver К предложенной структуре проекта есть предложения/замечания? Я в рамках ее попробую что-нибудь реализовать.
EvilBeaver commentedon Apr 26, 2022
Замечание одно - это слишком высокоуровневый набросок из которого непонятно есть к нему замечания или нет.
Хотелось бы понять что делает каждая папка, как ее обрабатывает opm, что с ней делает автор проекта и т.п. Как это стыкуется с packegdef... Короче сейчас слишком мало информации для понимания предложения