diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 6b00832e5ee4b3219f464cd22ca61be0d5479cb1..e388fdd06bd22ec0d292b76d8a58d4ae6f8af438 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -27,7 +27,7 @@ fn remove_all(path: &Path) -> Result<(), String> { } fn create_dir(dir: &Path) -> Result<(), String> { - fs::create_dir(&dir).map_err(|err| format!( + fs::create_dir(dir).map_err(|err| format!( "failed to create '{}': {}\n{:?}", dir.display(), err, @@ -70,7 +70,7 @@ fn modified_dir_inner<F: FnMut(&DirEntry) -> bool>(dir: &Path, filter: F) -> io: } fn modified_dir(dir: &Path) -> Result<SystemTime, String> { - modified_dir_inner(&dir, |_| true).map_err(|err| format!( + modified_dir_inner(dir, |_| true).map_err(|err| format!( "failed to get modified time of '{}': {}\n{:#?}", dir.display(), err, @@ -79,7 +79,7 @@ fn modified_dir(dir: &Path) -> Result<SystemTime, String> { } fn modified_dir_ignore_git(dir: &Path) -> Result<SystemTime, String> { - modified_dir_inner(&dir, |entry| { + modified_dir_inner(dir, |entry| { entry.file_name().to_str().map(|s| s != ".git").unwrap_or(true) }).map_err(|err| format!( "failed to get modified time of '{}': {}\n{:#?}", @@ -172,9 +172,9 @@ fn fetch(recipe_dir: &Path, source: &Option<SourceRecipe>) -> Result<PathBuf, St // Clone the repository to source.tmp let mut command = Command::new("git"); - command.arg("clone").arg("--recursive").arg(&git); + command.arg("clone").arg("--recursive").arg(git); if let Some(branch) = branch { - command.arg("--branch").arg(&branch); + command.arg("--branch").arg(branch); } command.arg(&source_dir_tmp); run_command(command)?; @@ -194,7 +194,7 @@ fn fetch(recipe_dir: &Path, source: &Option<SourceRecipe>) -> Result<PathBuf, St // Reset origin let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); - command.arg("remote").arg("set-url").arg("origin").arg(&git); + command.arg("remote").arg("set-url").arg("origin").arg(git); run_command(command)?; // Fetch origin @@ -204,7 +204,7 @@ fn fetch(recipe_dir: &Path, source: &Option<SourceRecipe>) -> Result<PathBuf, St run_command(command)?; } - if let Some(upstream) = upstream { + if let Some(_upstream) = upstream { //TODO: set upstream URL // git remote set-url upstream "$GIT_UPSTREAM" &> /dev/null || // git remote add upstream "$GIT_UPSTREAM" @@ -215,7 +215,7 @@ fn fetch(recipe_dir: &Path, source: &Option<SourceRecipe>) -> Result<PathBuf, St // Check out specified revision let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); - command.arg("checkout").arg(&rev); + command.arg("checkout").arg(rev); run_command(command)?; } else { //TODO: complicated stuff to check and reset branch to origin @@ -259,7 +259,7 @@ fi"#); let source_tar_tmp = recipe_dir.join("source.tar.tmp"); let mut command = Command::new("wget"); - command.arg(&tar); + command.arg(tar); command.arg("-O").arg(&source_tar_tmp); run_command(command)?; @@ -328,7 +328,7 @@ fi"#); // Apply patches for patch_name in patches { - let patch_file = recipe_dir.join(&patch_name); + let patch_file = recipe_dir.join(patch_name); if ! patch_file.is_file() { return Err(format!( "failed to find patch file '{}'", @@ -376,16 +376,14 @@ fi"#); } fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildRecipe) -> Result<PathBuf, String> { - let source_modified = modified_dir_ignore_git(&source_dir)?; + let source_modified = modified_dir_ignore_git(source_dir)?; let sysroot_dir = target_dir.join("sysroot"); // Rebuild sysroot if source is newer //TODO: rebuild on recipe changes - if sysroot_dir.is_dir() { - if modified_dir(&sysroot_dir)? < source_modified { - eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), sysroot_dir.display()); - remove_all(&sysroot_dir)?; - } + if sysroot_dir.is_dir() && modified_dir(&sysroot_dir)? < source_modified { + eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), sysroot_dir.display()); + remove_all(&sysroot_dir)?; } if ! sysroot_dir.is_dir() { // Create sysroot.tmp @@ -427,12 +425,11 @@ fn build(recipe_dir: &Path, source_dir: &Path, target_dir: &Path, build: &BuildR let stage_dir = target_dir.join("stage"); // Rebuild stage if source is newer //TODO: rebuild on recipe changes - if stage_dir.is_dir() { - if modified_dir(&stage_dir)? < source_modified { - eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), stage_dir.display()); - remove_all(&stage_dir)?; - } + if stage_dir.is_dir() && modified_dir(&stage_dir)? < source_modified { + eprintln!("DEBUG: '{}' newer than '{}'", source_dir.display(), stage_dir.display()); + remove_all(&stage_dir)?; } + if ! stage_dir.is_dir() { // Create stage.tmp let stage_dir_tmp = target_dir.join("stage.tmp"); @@ -593,7 +590,7 @@ done Ok(stage_dir) } -fn package(recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, package: &PackageRecipe) -> Result<PathBuf, String> { +fn package(_recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, _package: &PackageRecipe) -> Result<PathBuf, String> { //TODO: metadata like dependencies, name, and version let secret_path = "build/id_ed25519.toml"; @@ -603,11 +600,11 @@ fn package(recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, package: &Pac create_dir(Path::new("build"))?; } let (public_key, secret_key) = pkgar_keys::SecretKeyFile::new(); - public_key.save(&public_path).map_err(|err| format!( + public_key.save(public_path).map_err(|err| format!( "failed to save pkgar public key: {:?}", err ))?; - secret_key.save(&secret_path).map_err(|err| format!( + secret_key.save(secret_path).map_err(|err| format!( "failed to save pkgar secret key: {:?}", err ))?; @@ -617,7 +614,7 @@ fn package(recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, package: &Pac // Rebuild package if stage is newer //TODO: rebuild on recipe changes if package_file.is_file() { - let stage_modified = modified_dir(&stage_dir)?; + let stage_modified = modified_dir(stage_dir)?; if modified(&package_file)? < stage_modified { eprintln!("DEBUG: '{}' newer than '{}'", stage_dir.display(), package_file.display()); remove_all(&package_file)?; @@ -638,7 +635,7 @@ fn package(recipe_dir: &Path, stage_dir: &Path, target_dir: &Path, package: &Pac } fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), String> { - let source_dir = fetch(&recipe_dir, &recipe.source).map_err(|err| format!( + let source_dir = fetch(recipe_dir, &recipe.source).map_err(|err| format!( "failed to fetch: {}", err ))?; @@ -654,12 +651,12 @@ fn cook(recipe_dir: &Path, recipe: &Recipe, fetch_only: bool) -> Result<(), Stri create_dir(&target_dir)?; } - let stage_dir = build(&recipe_dir, &source_dir, &target_dir, &recipe.build).map_err(|err| format!( + let stage_dir = build(recipe_dir, &source_dir, &target_dir, &recipe.build).map_err(|err| format!( "failed to build: {}", err ))?; - let package_file = package(&recipe_dir, &stage_dir, &target_dir, &recipe.package).map_err(|err| format!( + let _package_file = package(recipe_dir, &stage_dir, &target_dir, &recipe.package).map_err(|err| format!( "failed to package: {}", err ))?; diff --git a/src/bin/list_recipes.rs b/src/bin/list_recipes.rs index da3171e1e4e79a6d4cb3e85846c64f07a8e9b06c..759dbc9ec3b992064fbd472dc95ac2e18f044876 100644 --- a/src/bin/list_recipes.rs +++ b/src/bin/list_recipes.rs @@ -4,16 +4,21 @@ use std::process::exit; // use clap::Parser; fn main() { - let result = list_recipes( Path::new("recipes")); - if result.is_err() { - eprintln!("{}", result.err().unwrap()); - exit(2); - } else if result.as_ref().unwrap().is_empty() { - eprintln!("recipes not found"); - exit(1); - } else { - result.unwrap().iter().for_each(|recipe| println!("{}", recipe)); - exit(0); + + match result { + Ok(result) => { + if result.is_empty() { + eprintln!("recipes not found"); + exit(1); + } else { + result.iter().for_each(|recipe| println!("{recipe}")); + exit(0); + } + } + Err(error) => { + eprintln!("{error}"); + exit(2); + } } } diff --git a/src/progress_bar.rs b/src/progress_bar.rs index c02b939d3b481363483776a2d5f310318637b232..75eceb4752217a710c6e16abb79dcf67dd8d8a3b 100644 --- a/src/progress_bar.rs +++ b/src/progress_bar.rs @@ -10,8 +10,8 @@ pub struct ProgressBarRead<'p, 'r, P: Write + 'p, R: Read + 'r> { impl<'p, 'r, P: Write, R: Read> ProgressBarRead<'p, 'r, P, R> { pub fn new(pb: &'p mut ProgressBar<P>, r: &'r mut R) -> ProgressBarRead<'p, 'r, P, R> { ProgressBarRead { - pb: pb, - r: r + pb, + r } } } @@ -30,10 +30,10 @@ pub struct ProgressBarWrite<'p, 'w, P: Write + 'p, W: Write + 'w> { } impl<'p, 'w, P: Write, W: Write> ProgressBarWrite<'p, 'w, P, W> { - pub fn new(pb: &'p mut ProgressBar<P>, w: &'w mut W) -> ProgressBarWrite<'p, 'w, P, W> { + pub fn _new(pb: &'p mut ProgressBar<P>, w: &'w mut W) -> ProgressBarWrite<'p, 'w, P, W> { ProgressBarWrite { - pb: pb, - w: w + pb, + w } } }