Axion Платформа Скачать
Documentation · Engine · 02

Встраивание

Как добавить Axion Engine в свой Rust-проект и начать управлять приложениями.

02 Встраивание

Axion Engine поставляется как Rust-crate axion-engine. Его можно подключить в свой проект, создать экземпляр и управлять приложениями программно — без CLI и без оболочки.

2.1Зависимость

Добавьте crate в Cargo.toml:

[dependencies]
axion-engine = { git = "https://github.com/axion-project/axion" }

Все подсистемы (capabilities, permissions, package, workspace, storage, secrets, ipc, protocol, runtime) подтягиваются автоматически.

2.2Инициализация

Создайте экземпляр Engine через EngineOptions:

use axion_engine::{AxionEngine, EngineOptions};
use std::path::Path;

let options = EngineOptions::new(Path::new("/home/user/.axion"));
let engine = AxionEngine::init(options)?;

EngineOptions::new(data_dir) принимает корневой каталог данных — сюда Engine положит установленные пакеты, политику permissions, секреты и состояние workspace. Если каталога нет, он будет создан.

2.3Управление пакетами

Engine предоставляет методы для полного цикла установки:

// Установка из байтов .axn
let app = engine.install(&axn_bytes)?;

// Установка из файла
let app = engine.install_file(Path::new("my-app.axn"))?;

// Обновление (проверяет capabilities; требует consent при расширении прав)
let diff = engine.update(&pkg, true)?;

// Удаление
engine.uninstall("my_app")?;

// Список установленных приложений
let apps = engine.list_apps()?;
Обновления. Если новая версия запрашивает дополнительные capabilities, метод update() с consent: false вернёт ошибку. Пользователь должен явно подтвердить расширение прав.

2.4Запуск и управление

// Запуск приложения — возвращает UUID сессии
let run_id = engine.launch("my_app")?;

// Получение текущего состояния
let state = engine.lifecycle_of(run_id);  // Some(Running)

// Приостановка и возобновление
engine.suspend(run_id)?;
engine.resume(run_id)?;

// Остановка
engine.stop(run_id)?;

Метод engine.running() возвращает список всех запущенных сессий с их идентификаторами и текущими состояниями.

2.5Workspace

Workspace определяет каталог проекта, с которым работает приложение:

// Открыть workspace по пути
engine.open_workspace(Path::new("/home/user/project"))?;

// Получить текущий workspace
if let Some(ws) = engine.workspace() {
    println!("root: {}", ws.root);
    println!("writable: {}", ws.writable);
    if let Some(git) = &ws.git {
        println!("branch: {}", git.branch);
    }
}
Настройте Engine под себя
Конфигурация