MCDIS Config Templates Extension
Расширение для VS Code, обеспечивающее поддержку файлов конфигураций MCDIS: контракты, манифесты и infra.
🚀 Возможности
✨ Подсветка синтаксиса
- Кастомная подсветка ключевых полей для каждого типа файла
- Выделение типов контрактов, операций, протоколов
- Подсветка переменных шаблонизации (
{{VariableName}})
📝 Автодополнение (IntelliSense)
- Автодополнение типов контрактов (
rest, oauth2, rabbitmq, kafka, grpc)
- Автодополнение HTTP методов (
GET, POST, PUT, DELETE, PATCH)
- Автодополнение протоколов (
https, amqp, grpc и др.)
- Автодополнение типов данных для манифестов
- Автодополнение типов протоколов для infra
🔍 Валидация структуры
- JSON Schema валидация для всех типов файлов
- Проверка обязательных полей
- Валидация форматов данных (даты, порты, типы)
💡 Подсказки при наведении (Hover)
- Описания типов контрактов
- Описания операций и протоколов
- Описания настроек манифеста
- Описания типов протоколов infra
📋 Сниппеты
- Готовые шаблоны для быстрого создания структур
- Сниппеты для контрактов (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="0.1.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 для запуска в режиме разработки
Установка из папки
- Скомпилируйте расширение:
cd vscode-extension
npm install
npm run compile
- В VS Code:
- Нажмите
Ctrl+Shift+P (или Cmd+Shift+P на Mac)
- Выберите
Extensions: Install from VSIX...
- Или используйте команду:
code --install-extension vscode-extension
📖 Использование
Сниппеты
Начните вводить префикс сниппета и нажмите 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 - Связь с очередью сообщений
Автодополнение
Автодополнение работает автоматически при вводе : после ключевых полей:
type: - предложит типы контрактов или протоколов
operation: - предложит HTTP методы
protocol: - предложит протоколы
DataType: - предложит типы данных
Валидация
Валидация происходит автоматически при сохранении файла. Ошибки отображаются в панели "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 - Подготовка к публикации
Отладка
- Откройте папку
vscode-extension в VS Code
- Нажмите
F5 для запуска нового окна VS Code с расширением
- В новом окне откройте файл с расширением
.contracts.yaml, .manifest.yaml или .infra.yaml
📄 Лицензия
MIT
🤝 Вклад
Приветствуются pull requests и issues!