docs: add detailed package-level comments to all TOOLS/ and provider/

TOOLS:
- yaml-generator: types (API↔YAML), client (proxy/REST + retry)
- resource-generator: types (3 resource kinds), loader (pipeline),
  writers (generated files), params (merge/CreateOnly/ForceNew)
- docs-generator, ops-generator — already documented

provider:
- main.go: entrypoint + build instructions
- core: API client (GetInstance, RunOperation, GetInstanceState)
- provider: provider registration (New, Resources, Schema)
- resources_core: shared CRUD, state refresh, params, validation
This commit is contained in:
“Naeel”
2026-07-05 10:24:43 +04:00
parent 5da22335ae
commit 46e847a3c1
10 changed files with 84 additions and 3 deletions
@@ -1,4 +1,13 @@
// Package loader — загрузка YAML-спеков и построение ресурсов.
// Package loader — загрузка YAML-спеков и построение GenResource/GenSubresource/GenAction.
//
// LoadSpecs — главная функция. Для каждого YAML:
// 1. Парсит операции (create/modify/delete/suspend/resume/...)
// 2. Классифицирует их на instance/subresource/action
// 3. Сливает параметры, вычисляет CreateOnly и ForceNew
// 4. Строит GenResource/GenSubresource/GenAction
// 5. Сортирует результат по имени сервиса
//
// ValidateSpec — fail-fast валидация (паника при неизвестном Kind).
package loader
import (
@@ -1,4 +1,11 @@
// Package params — слияние, фильтрация, анализ параметров и ForceNew.
//
// Основные операции:
// - Merge — объединяет параметры из нескольких операций по Code
// - ComputeCreateOnly — поля, которые есть в create, но отсутствуют в modify
// - BuildSubresourceForceNewCodes — поля, требующие пересоздания subresource
// - Analyze — определяет используемые типы (bool/int64/string) для импортов
// - AnalyzePlanModifiers — ForceNew-поля, требующие planmodifier.*.RequiresReplace()
package params
import (
@@ -1,4 +1,14 @@
// Package types — структуры данных для генератора Terraform-провайдера.
//
// Моделирует три вида ресурсов:
// - GenResource — основной CRUD инстанса (nubes_{service})
// - GenSubresource — подресурсы (nubes_{service}_{user}, ...)
// - GenAction — действия (почти не используется, redeploy встроен в GenResource.HasRedeploy)
//
// Правила обработки action'ов из ARCHITECTURE.md:
// - redeploy → HasRedeploy=true, поле git_revision в основном ресурсе
// - restart/recovery/reconcile → исключены (ручные, только UI)
// - всё остальное → отдельный GenAction
package types
// ─── Входные структуры (из YAML) ───────────────────────────────────────────
@@ -1,4 +1,12 @@
// Package writers — генерация Go-файлов ресурсов и registry.go.
//
// Генерирует три типа файлов в internal/resources_gen/:
// - {id}_{service}_resource.go — основной CRUD инстанса
// - {id}_{service}_{sub}_resource.go — подресурсы
// - {id}_{service}_{action}_action.go — action-ресурсы (редко)
// - registry.go — AllResources() со списком всех ресурсов
//
// Каждый файл компилируется через text/template и форматируется через gofmt.
package writers
import (