MCDIS Config Templates Extension
Расширение для VS Code, обеспечивающее поддержку файлов конфигураций MCDIS: контракты, манифесты и infra.
🚀 Возможности
✨ Подсветка синтаксиса
- Кастомная подсветка ключевых полей для каждого типа файла
- Выделение типов контрактов, операций, протоколов
- Подсветка переменных шаблонизации (
{{VariableName}})
📝 Автодополнение (IntelliSense)
- Контракты:
- Автодополнение ключевых полей:
system, contracts, schemas
- Автодополнение полей системы:
number, name, date, description
- Автодополнение полей контракта:
type, name, description, base_url, operations и др.
- Автодополнение типов контрактов (
rest, oauth2, rabbitmq, kafka, grpc)
- Автодополнение HTTP методов (
GET, POST, PUT, DELETE, PATCH)
- Автодополнение протоколов (
https, amqp, grpc и др.)
- Манифесты:
- Автодополнение ключевых полей:
Settings
- Автодополнение полей настройки:
DataKey, DataValue, Description, Example, DataType
- Автодополнение типов данных (
string, integer, array[string])
- Автодополнение распространенных ключей (
MainHost, PostgresqlHost и др.)
- Infra:
- Автодополнение ключевых полей:
infrastructure, relations
- Автодополнение полей ресурса:
name, version, description
- Автодополнение полей связи:
from, to, type, port и др.
- Автодополнение типов протоколов (
HTTP, HTTPS, GRPC, TCP и др.)
- Автодополнение стандартных портов
🔍 Валидация структуры
- JSON Schema валидация для всех типов файлов
- Проверка обязательных полей
- Валидация форматов данных (даты, порты, типы)
💡 Подсказки при наведении (Hover)
- Контракты:
- Описания ключевых полей структуры (
system, contracts, schemas)
- Описания полей системы и контрактов
- Описания типов контрактов, операций и протоколов
- Манифесты:
- Описания ключевых полей (
Settings)
- Описания полей настройки (
DataKey, DataValue, DataType и др.)
- Описания распространенных ключей настроек
- Infra:
- Описания ключевых полей (
infrastructure, relations)
- Описания полей ресурсов и связей
- Описания типов протоколов
📋 Сниппеты
- Готовые шаблоны для быстрого создания структур
- Сниппеты для контрактов (REST, OAuth2, RabbitMQ)
- Сниппеты для манифестов (настройки, хосты, БД)
- Сниппеты для infra (ресурсы, связи между сервисами)
📦 Поддерживаемые файлы
Контракты
- Расширения:
.contracts.yaml, .contracts.yml
- Структура:
system, contracts, schemas
Манифесты
- Расширения:
.manifest.yaml, .manifest.yml
- Структура:
Settings (массив настроек)
Infra
- Расширения:
.infra.yaml, .infra.yml
- Структура:
infrastructure, relations
🛠 Установка
Установка из VS Code Marketplace
- Откройте VS Code
- Нажмите
Ctrl+Shift+X (или Cmd+Shift+X на Mac) для открытия панели расширений
- Найдите "MCDIS Config Templates"
- Нажмите Install
Установка из Nexus Repository
Если расширение опубликовано в Nexus:
- Через скрипт (Linux/Mac):
export NEXUS_URL="https://nexus.example.com"
export REPO_NAME="vscode-extensions"
export EXTENSION_NAME="mcdis-config-templates"
export VERSION="1.0.0"
./install-from-nexus.sh
- Вручную:
- Получите URL к VSIX файлу из Nexus
- В VS Code:
Ctrl+Shift+P → Extensions: Install from VSIX...
- Введите URL или скачайте файл локально
Локальная установка (для разработки)
Клонируйте репозиторий или скопируйте папку vscode-extension
Установите зависимости:
cd vscode-extension
npm install
- Скомпилируйте расширение:
npm run compile
- Откройте VS Code в папке расширения и нажмите
F5 для запуска в режиме разработки
Установка из VSIX файла
Если у вас уже есть файл .vsix (например, mcdis-config-templates-1.0.0.vsix):
Способ 1: Через интерфейс VS Code (рекомендуется)
- Откройте VS Code
- Нажмите
Ctrl+Shift+P (или Cmd+Shift+P на Mac)
- Введите и выберите:
Extensions: Install from VSIX...
- Выберите файл
.vsix
- Расширение установится автоматически
Способ 2: Через командную строку
code --install-extension mcdis-config-templates-1.0.0.vsix
Или с полным путем:
code --install-extension "C:\path\to\mcdis-config-templates-1.0.0.vsix"
Способ 3: Двойной клик
В некоторых системах двойной клик по .vsix файлу автоматически установит расширение.
Создание VSIX файла
Если нужно создать .vsix файл из исходников:
- Установите зависимости:
cd vscode-extension
npm install
- Скомпилируйте расширение:
npm run compile
- Создайте пакет:
npm run package
Это создаст файл mcdis-config-templates-1.0.0.vsix в текущей папке.
📖 Использование
Сниппеты
Начните вводить префикс сниппета и нажмите Tab:
Контракты:
contract-system - Заголовок системы контрактов
contract-rest - REST API контракт
contract-oauth2 - OAuth2 контракт
contract-rabbitmq - RabbitMQ контракт
schema - Схема данных
Манифесты:
manifest-header - Заголовок манифеста
setting - Запись настройки
setting-host - Настройка хоста
setting-db - Настройки базы данных
Infra:
infra-header - Заголовок инфраструктуры
infra-resource - Инфраструктурный ресурс
relation - Связь между сервисами
relation-http - HTTP/HTTPS связь
relation-db - Связь с базой данных
relation-mq - Связь с очередью сообщений
Автодополнение
Автодополнение работает автоматически:
На верхнем уровне:
- В пустой строке или после
- предложит ключевые поля структуры (system, contracts, schemas для контрактов; Settings для манифестов; infrastructure, relations для infra)
Внутри структур:
- При вводе
: после ключевых полей предложит соответствующие значения:
type: - предложит типы контрактов или протоколов
operation: - предложит HTTP методы
protocol: - предложит протоколы
DataType: - предложит типы данных
port: - предложит стандартные порты
- При вводе имени поля предложит доступные поля структуры (например, в
system: предложит number, name, date, description)
Валидация
Валидация происходит автоматически при сохранении файла. Ошибки отображаются в панели "Problems" (Ctrl+Shift+M).
Подсказки
Наведите курсор на любое ключевое слово (тип контракта, операцию, протокол) для получения описания.
📝 Примеры
Контракт (contracts.yaml)
system:
number: "MCDIS-CONTROL-001"
name: "mcdis-control-center"
date: "2025-08-28"
description: "Система управления пользователями"
contracts:
- type: "rest"
name: "users-api"
description: "API для управления пользователями"
base_url: "https://{{MainHost}}/api/v1"
operations:
- operation: "GET"
protocol: "https"
resource: "/users"
description: "Получить список пользователей"
auth: true
input: null
output: "UserList"
Манифест (manifest.yaml)
Settings:
- DataKey: MainHost
DataValue: ""
Description: "Основной хост приложения"
Example: "https://control-stage.imbalanced.tech"
DataType: string
Infra (infra.yaml)
infrastructure:
- name: mcdis-control-center-frontend-hub
description: "Основной веб-интерфейс"
relations:
- from: frontend
to: backend-service
type: HTTPS
port: 443
description: "API запросы"
🔧 Разработка
Структура проекта
vscode-extension/
├── src/
│ └── extension.ts # Основной код расширения
├── syntaxes/ # Грамматики для подсветки
│ ├── contracts.tmLanguage.json
│ ├── manifest.tmLanguage.json
│ └── infra.tmLanguage.json
├── schemas/ # JSON схемы для валидации
│ ├── contracts-schema.json
│ ├── manifest-schema.json
│ └── infra-schema.json
├── snippets/ # Сниппеты
│ ├── contracts.json
│ ├── manifest.json
│ └── infra.json
├── package.json
├── tsconfig.json
└── README.md
Команды
npm run compile - Компиляция TypeScript
npm run watch - Компиляция в режиме наблюдения
npm run vscode:prepublish - Подготовка к публикации
npm run package - Создание VSIX пакета (файл .vsix)
npm run publish - Публикация расширения в Marketplace
Отладка
- Откройте папку
vscode-extension в VS Code
- Нажмите
F5 для запуска нового окна VS Code с расширением
- В новом окне откройте файл с расширением
.contracts.yaml, .manifest.yaml или .infra.yaml
📄 Лицензия
MIT
🤝 Вклад
Приветствуются pull requests и issues!