Sebekerga / native_api_1c

Crate for simple implementation of Component for Native API 1C:Enterprise written in rust
https://crates.io/crates/native_api_1c
62 stars 13 forks source link

Tracking. Add cargo-generate #7

Open Sebekerga opened 11 months ago

Toveal commented 11 months ago
  1. В шаблон carg-generate предлагаю внести возможность выбора между несколькими вариантами шаблона внешней компоненты. По умолчанию выбирается этот шаблон, т.к. в большинстве случаев он покрывает все нужды. Другой шаблон например этот Т.к. иногда требуется более точечный контроль над установкой параметров параметров ВК и вызовом процедур/функций
  2. Использовать post hook в cargo-generate для создания структуры проекта вроде
    src/
    addin_object_1/
    ├── mod.rs
    ├── addin.rs
    addin_object_2/
    ├── mod.rs
    ├── addin.rs
    lib.rs

    и дать пользователю возможность ввода нескольких имен объектов компоненты с использованием Regex в cargo-generate. Так мы сможем точно задать формат ввода имен чтобы на основе ввода пользователя создать нужный шаблон

  3. Добавление инструментов для выбора (cross, serde, insta, diesel и т.п.)
  4. Опционально добавлять конфигурацию отладки для Vs Code
  5. Конфигурацию cargo-make для сбора и упаковки проекта исходя из его названия и таргетов билда
Toveal commented 11 months ago

Сделал шаблон с созданием нескольких объектов ВК, посмотреть можно с помощью команды

cargo generate -g https://github.com/Toveal/native-api-1c-template/ -b dev

Так же возникли трудности. cargo generate не дает возможности создать каталог

Sebekerga commented 11 months ago

Глянул шаблоны - отлично вышло. К слову, ядро этого проекта, по сути, поддерживает точно такую же схему определения компоненты, как и библиотека от tuplecats, и я думаю, что хочу убрать генерацию функций GetClassObject и т.д. внутри макроса derive, добавив отдельный макрос, куда просто передается список компонент, и на его основе уже генерируются эти функции. Поэтому я думаю, будет иметь место трейтий вариант для генерации - simple + complex. Но это надо сначала сделать :)