mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-29 05:41:46 +02:00
65 lines
2.2 KiB
Rust
65 lines
2.2 KiB
Rust
use crate::cli::{EnvironmentArgs, EnvironmentCommands};
|
|
use crate::commands::confirm::confirm_delete;
|
|
use crate::context::CliContext;
|
|
use yaak_models::models::Environment;
|
|
use yaak_models::util::UpdateSource;
|
|
|
|
pub fn run(ctx: &CliContext, args: EnvironmentArgs) {
|
|
match args.command {
|
|
EnvironmentCommands::List { workspace_id } => list(ctx, &workspace_id),
|
|
EnvironmentCommands::Show { environment_id } => show(ctx, &environment_id),
|
|
EnvironmentCommands::Create { workspace_id, name } => create(ctx, workspace_id, name),
|
|
EnvironmentCommands::Delete { environment_id, yes } => delete(ctx, &environment_id, yes),
|
|
}
|
|
}
|
|
|
|
fn list(ctx: &CliContext, workspace_id: &str) {
|
|
let environments =
|
|
ctx.db().list_environments_ensure_base(workspace_id).expect("Failed to list environments");
|
|
|
|
if environments.is_empty() {
|
|
println!("No environments found in workspace {}", workspace_id);
|
|
} else {
|
|
for environment in environments {
|
|
println!("{} - {} ({})", environment.id, environment.name, environment.parent_model);
|
|
}
|
|
}
|
|
}
|
|
|
|
fn show(ctx: &CliContext, environment_id: &str) {
|
|
let environment = ctx.db().get_environment(environment_id).expect("Failed to get environment");
|
|
let output =
|
|
serde_json::to_string_pretty(&environment).expect("Failed to serialize environment");
|
|
println!("{output}");
|
|
}
|
|
|
|
fn create(ctx: &CliContext, workspace_id: String, name: String) {
|
|
let environment = Environment {
|
|
workspace_id,
|
|
name,
|
|
parent_model: "environment".to_string(),
|
|
..Default::default()
|
|
};
|
|
|
|
let created = ctx
|
|
.db()
|
|
.upsert_environment(&environment, &UpdateSource::Sync)
|
|
.expect("Failed to create environment");
|
|
|
|
println!("Created environment: {}", created.id);
|
|
}
|
|
|
|
fn delete(ctx: &CliContext, environment_id: &str, yes: bool) {
|
|
if !yes && !confirm_delete("environment", environment_id) {
|
|
println!("Aborted");
|
|
return;
|
|
}
|
|
|
|
let deleted = ctx
|
|
.db()
|
|
.delete_environment_by_id(environment_id, &UpdateSource::Sync)
|
|
.expect("Failed to delete environment");
|
|
|
|
println!("Deleted environment: {}", deleted.id);
|
|
}
|