diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index cd57261..ff3f0c2 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -6,7 +6,7 @@ on: env: DL_DIR: /srv/breadway-dl - ECOSYSTEM_DIR: /home/breadway/Projects/bread-ecosystem + ECOSYSTEM_DIR: /tmp/bread-ecosystem-ci PATH: /home/breadway/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin jobs: @@ -45,12 +45,8 @@ jobs: - name: ensure bread-ecosystem working-directory: /tmp run: | - if [[ -d "${ECOSYSTEM_DIR}/.git" ]]; then - git -C "${ECOSYSTEM_DIR}" pull --ff-only - else - mkdir -p "$(dirname "${ECOSYSTEM_DIR}")" - git clone https://github.com/Breadway/bread-ecosystem.git "${ECOSYSTEM_DIR}" - fi + rm -rf "${ECOSYSTEM_DIR}" + git clone https://github.com/Breadway/bread-ecosystem.git "${ECOSYSTEM_DIR}" - name: regenerate index.json working-directory: /tmp diff --git a/src/main.rs b/src/main.rs index 38d3fc6..7616f31 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,19 +4,23 @@ use std::process; use clap::{Parser, Subcommand}; #[derive(Parser)] -#[command(name = "breadpaper", about = "Wallpaper manager for the bread desktop")] +#[command( + name = "breadpaper", + version, + about = "Wallpaper manager for the bread desktop" +)] struct Cli { + /// Image file to set as wallpaper (shorthand for `set`) + path: Option, + #[command(subcommand)] - command: Command, + command: Option, } #[derive(Subcommand)] enum Command { /// Set wallpaper, generate pywal palette, and reload bread themes - Set { - /// Path to the image file - path: PathBuf, - }, + Set { path: PathBuf }, /// Print the current wallpaper path Get, } @@ -24,9 +28,11 @@ enum Command { fn main() { let cli = Cli::parse(); - let result = match cli.command { - Command::Set { path } => breadpaper::set(&path), - Command::Get => breadpaper::get().map(|p| println!("{}", p.display())), + let result = match (cli.command, cli.path) { + (Some(Command::Set { path }), _) | (None, Some(path)) => breadpaper::set(&path), + (Some(Command::Get), _) | (None, None) => { + breadpaper::get().map(|p| println!("{}", p.display())) + } }; if let Err(e) = result { diff --git a/src/wallpaper.rs b/src/wallpaper.rs index 4655308..f59fae1 100644 --- a/src/wallpaper.rs +++ b/src/wallpaper.rs @@ -5,13 +5,13 @@ use anyhow::{Context, Result, bail}; pub fn apply(path: &Path) -> Result<()> { let status = Command::new("awww") - .arg("set") + .arg("img") .arg(path) .status() .context("failed to run awww — is awww-daemon running?")?; if !status.success() { - bail!("awww set exited with {}", status); + bail!("awww img exited with {}", status); } Ok(()) }