Implement Pallet Remove (#26)
closes #17 Reviewed-on: http://192.168.1.227:3000/sfrembling/pallet/pulls/26 Co-authored-by: godsfryingpan <sfrembling@gmail.com> Co-committed-by: godsfryingpan <sfrembling@gmail.com>
This commit was merged in pull request #26.
This commit is contained in:
44
src/app.rs
44
src/app.rs
@@ -56,7 +56,7 @@ enum Subcommand {
|
||||
},
|
||||
/// List available build modes
|
||||
List,
|
||||
/// Add a new package to the project (throguh pkg-config)
|
||||
/// Add a new package to the project (through pkg-config)
|
||||
Add {
|
||||
/// The package to be added
|
||||
package: String,
|
||||
@@ -69,6 +69,11 @@ enum Subcommand {
|
||||
#[arg(long, short)]
|
||||
args: Option<Vec<String>>,
|
||||
},
|
||||
/// Removes a package from the project (through pkg-config)
|
||||
Remove {
|
||||
/// The package to remove
|
||||
package: String,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(clap::Subcommand)]
|
||||
@@ -201,10 +206,47 @@ impl App {
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
Subcommand::Remove { package } => {
|
||||
if let Err(e) = remove(&package) {
|
||||
eprintln!("Error removing package {package} from project: {e}");
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn remove(package: &str) -> std::io::Result<()> {
|
||||
let mut conf = get_config().ok_or(std::io::Error::new(
|
||||
std::io::ErrorKind::NotFound,
|
||||
"no Pallet.toml found in local directory",
|
||||
))?;
|
||||
|
||||
let deps = conf.dependencies.get_or_insert_with(Vec::new);
|
||||
|
||||
if let Some(index) = deps.iter().position(|dep| dep == package) {
|
||||
deps.remove(index);
|
||||
} else {
|
||||
println!(
|
||||
" {} package {package} not found in Pallet.toml, no change made",
|
||||
"Warning".yellow().bold()
|
||||
);
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
std::fs::write(
|
||||
"Pallet.toml",
|
||||
toml::to_string_pretty(&conf).expect("valid TOML"),
|
||||
)?;
|
||||
|
||||
println!(
|
||||
" {} removed package {package}",
|
||||
"Successfully".green().bold()
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn watch(mode: &Option<String>, args: Option<Vec<String>>) -> std::io::Result<()> {
|
||||
use std::io::Write;
|
||||
use std::sync::Arc;
|
||||
|
||||
Reference in New Issue
Block a user