Логотип Fusion Framework от Cipher UnitFusion

Команды

Окружения, fusion.<env>.json и fusion command

Окружения

Каждое окружение — это файл в корне проекта с именем fusion.<env>.json.

Новые проекты начинают с трёх окружений:

ФайлОкружение
fusion.dev.jsondev (по умолчанию)
fusion.stage.jsonstage
fusion.prod.jsonprod

Добавьте ещё одно, создав файл — например fusion.test.json становится окружением test. Дополнительная регистрация не нужна.

Форма файла окружения

{
  "env": "dev",
  "config": {
    "debug": true,
    "host": "127.0.0.1",
    "port": 8080,
    "secret_key": "change-me"
  },
  "commands": {
    "run": "python main.py"
  }
}
  • config — настройки приложения, которые читает core/settings (и Fusion Framework во время выполнения)
  • commands — shell-команды, которые вы запускаете через fusion command <name>

Swagger (опционально)

В новых проектах также есть блок swagger внутри config (включён в dev, обычно выключен в stage / prod). Отредактируйте его, чтобы управлять UI документации, OpenAPI info и схемами auth:

{
  "env": "dev",
  "config": {
    "host": "127.0.0.1",
    "port": 8080,
    "swagger": {
      "enabled": true,
      "path": "/swagger",
      "title": "Fusion API Docs",
      "info": {
        "title": "Fusion API",
        "version": "1.0.0",
        "description": "API documentation generated by fusion-framework"
      },
      "servers": [{ "url": "/", "description": "Current host" }],
      "auth": {
        "persistAuthorization": true,
        "schemes": {
          "BearerAuth": {
            "type": "http",
            "scheme": "bearer",
            "bearerFormat": "JWT"
          },
          "ApiKeyAuth": {
            "type": "apiKey",
            "in": "header",
            "name": "X-API-Key"
          }
        },
        "global": [],
        "oauth": {
          "clientId": "",
          "appName": "Fusion API",
          "usePkceWithAuthorizationCodeGrant": true
        }
      },
      "navbar": {
        "enabled": true,
        "showUrlInput": true
      },
      "ui": {
        "deepLinking": true,
        "docExpansion": "list",
        "filter": true,
        "tryItOutEnabled": true
      }
    }
  },
  "commands": {
    "run": "python main.py"
  }
}

Полезные ключи:

КлючНазначение
swagger.enabledВключить или выключить Swagger UI
swagger.pathПуть UI (по умолчанию /swagger)
auth.schemes / auth.globalОпределения безопасности OpenAPI
auth.oauthПередаётся в Swagger UI initOAuth
navbar.enabledПоказать верхнюю панель Swagger
swagger.uiСоответствует конфигурации Swagger UI

Запуск команд

Команды — это всё, что вы объявили в commands. Запустите по имени:

fusion command run
fusion command run:dev
fusion command run --stage
fusion command run:stage
fusion command run --prod
fusion command run --env test

Пример: запуск sample API

После fusion init и pip install fusion-framework:

fusion command run:dev

Это выполняет python main.py с FUSION_ENV=dev. С конфигурацией по умолчанию вы получите:

Fusion собирает OpenAPI/Swagger-документацию из ваших route-модулей (включая стартовый модуль products). Через Swagger UI можно вызывать эндпоинты, смотреть схемы и пробовать auth — отдельная настройка docs не нужна.

Без флага или суффикса :env окружение берётся из FUSION_ENV, если задан, иначе dev.

Список команд, объявленных для окружения:

fusion command --stage

Fusion выполняет shell-строку из корня проекта (sh -c на Linux/macOS, cmd /C на Windows) и выставляет FUSION_ENV, чтобы settings загрузили нужный файл. Код выхода процесса пробрасывается — удобно для скриптов и CI.

Пользовательские команды

Добавьте любую нужную запись:

{
  "env": "stage",
  "config": { "port": 1010 },
  "commands": {
    "run": "docker compose up",
    "stop": "docker compose down"
  }
}
fusion command stop --stage

Пользовательские окружения

Создайте fusion.test.json, затем:

fusion command run --test
# or
fusion command run --env test

Установка пакета фреймворка

После scaffolding установите runtime-пакет языка для проекта:

pip install fusion-framework

Руководства по языкам: TypeScript / Node.js и C#.

На этой странице