feat: Show error if no clusters are found in repo

This commit is contained in:
2026-03-31 05:17:14 +02:00
parent e4d39de2f0
commit a7578a6b16
3 changed files with 21 additions and 4 deletions
Generated
+1
View File
@@ -290,6 +290,7 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"serde_yaml", "serde_yaml",
"thiserror 2.0.18",
"walkdir", "walkdir",
] ]
+1
View File
@@ -23,4 +23,5 @@ semver = { version = "1.0.27", features = ["serde"] }
serde = { version = "1.0.228", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] }
serde_json = { workspace = true } serde_json = { workspace = true }
serde_yaml = "0.9.34" serde_yaml = "0.9.34"
thiserror = "2.0.18"
walkdir = "2.5.0" walkdir = "2.5.0"
+19 -4
View File
@@ -6,15 +6,26 @@ use crete::cluster::get_clusters;
use crete::environment::PathEnvironment; use crete::environment::PathEnvironment;
use crete::set_repo_path; use crete::set_repo_path;
use minijinja::context; use minijinja::context;
use thiserror::Error;
use crate::cli::{Cli, Commands, GlobalOpts}; use crate::cli::{Cli, Commands, GlobalOpts};
fn generate(opts: &GlobalOpts) { #[derive(Debug, Error)]
enum Error {
#[error("No clusters where found")]
NoClustersFound,
}
fn generate(opts: &GlobalOpts) -> Result<(), Error> {
set_repo_path(&opts.repo); set_repo_path(&opts.repo);
let patch_env = PathEnvironment::new_patches(); let patch_env = PathEnvironment::new_patches();
let clusters = get_clusters(&patch_env); let clusters = get_clusters(&patch_env);
if clusters.is_empty() {
return Err(Error::NoClustersFound);
}
let path = opts.repo.join("rendered"); let path = opts.repo.join("rendered");
if path.exists() { if path.exists() {
std::fs::remove_dir_all(&path).unwrap(); std::fs::remove_dir_all(&path).unwrap();
@@ -34,18 +45,22 @@ fn generate(opts: &GlobalOpts) {
std::fs::write(path.join(template_name), content).unwrap(); std::fs::write(path.join(template_name), content).unwrap();
} }
Ok(())
} }
fn main() { fn main() -> Result<(), Error> {
let cli = Cli::parse(); let cli = Cli::parse();
match cli.command { match cli.command {
Commands::Generate => generate(&cli.global_opts), Commands::Generate => generate(&cli.global_opts)?,
Commands::ShellCompletions => generate_complete( Commands::ShellCompletions => generate_complete(
Shell::from_env().unwrap_or(Shell::Bash), Shell::from_env().unwrap_or(Shell::Bash),
&mut Cli::command(), &mut Cli::command(),
"crete", "crete",
&mut std::io::stdout(), &mut std::io::stdout(),
), ),
} };
Ok(())
} }