From b81e362e050c9bfa7657ce8a20cae513c8ac0cad Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Thu, 18 Jan 2024 15:46:38 +0100 Subject: [PATCH] Added --run-after to multi package build runs the named script after successfully building a package --- Cargo.toml | 2 +- src/cmds/build.rs | 13 ++++++++++--- src/main.rs | 18 +++++++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1fb6483..930b382 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "cabin" description = "Simple alpine package builder with dependency resolution using abuild" authors = [ "Jakob Meier " ] license = "GPL-3.0-or-later" -version = "0.1.0" +version = "0.1.1" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/src/cmds/build.rs b/src/cmds/build.rs index 3dd35ba..1109cfa 100644 --- a/src/cmds/build.rs +++ b/src/cmds/build.rs @@ -104,7 +104,7 @@ pub fn build(name: PackageName, db: Option, arch: Option, build } /// attempts to build every package from the list /// tries to autodetect the order in which the packages need to be build -pub fn build_multi(names: Vec, db: Option, arch: Option, verbose: bool) { +pub fn build_multi(names: Vec, db: Option, arch: Option, verbose: bool, run_after: Option) { let db = Database::from_file(db.unwrap_or(PathBuf::from("db.yml"))) .expect("Unable to open database"); @@ -115,13 +115,20 @@ pub fn build_multi(names: Vec, db: Option, arch: Option, arch: Option, verbose:bool) { +pub fn build_all(db: Option, arch: Option, verbose:bool, run_after: Option) { let dbpath = db.clone(); let db = Database::from_file(db.unwrap_or(PathBuf::from("db.yml"))) .expect("Unable to open database"); - build_multi(db.packages.keys().map(|s|s.to_string()).collect(), dbpath, arch, verbose); + build_multi(db.packages.keys().map(|s|s.to_string()).collect(), dbpath, arch, verbose, run_after); } diff --git a/src/main.rs b/src/main.rs index 8a97d33..5b1134f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -35,7 +35,11 @@ enum Commands { db: Option, /// allows the build log to be toggled on and off #[arg(short='v', default_value="false")] - verbose: bool + verbose: bool, + /// run command after building a package + /// calls $cmd $pkgname + #[arg(long)] + run_after: Option }, /// Builds multiple packages from a list BuildGroup { @@ -53,7 +57,11 @@ enum Commands { #[arg(short='v', default_value="false")] verbose: bool, /// list of packages to be build - packages: Vec + packages: Vec, + /// run command after building a package + /// calls $cmd $pkgname + #[arg(long)] + run_after: Option }, /// Builds the package Build { @@ -125,15 +133,15 @@ fn main() { Commands::List { db } => cmds::list(db), Commands::Info { package, db, show_depends, show_provides } => cmds::info(package, db, show_provides, show_depends), Commands::Build { package, db, arch, no_build_dependencies, verbose } => cmds::build(package, db, arch, !no_build_dependencies, verbose), - Commands::BuildGroup { packages, db, arch, verbose } => { + Commands::BuildGroup { packages, db, arch, verbose, run_after } => { if packages.len() == 0 { println!("Nothing do be done"); } else { - cmds::build_multi(packages, db, arch, verbose); + cmds::build_multi(packages, db, arch, verbose, run_after); } }, Commands::Tree { package, db, only_local } => cmds::tree(package, db, only_local), - Commands::BuildAll { arch, db, verbose } => cmds::build_all(db, arch, verbose), + Commands::BuildAll { arch, db, verbose, run_after } => cmds::build_all(db, arch, verbose, run_after), Commands::Search { query, db } => cmds::search(query, db) } } -- 2.38.5