diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml new file mode 100644 index 0000000..eb6b277 --- /dev/null +++ b/.forgejo/workflows/ci.yml @@ -0,0 +1,37 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + +jobs: + ci: + runs-on: docker + steps: + - uses: actions/checkout@v4 + + - name: Cache cargo + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/bin + target + key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-cargo- + + - name: Install Rust toolchain + run: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal --component clippy --component rustfmt + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + + - name: Install cargo-make and cargo-audit + run: | + for crate in cargo-make cargo-audit; do + command -v "$crate" >/dev/null 2>&1 || cargo install "$crate" + done + + - name: Run CI checks + run: cargo make ci diff --git a/src/icon.rs b/src/icon.rs index 02fd7d9..424922c 100644 --- a/src/icon.rs +++ b/src/icon.rs @@ -1,5 +1,6 @@ use freedesktop_icons::lookup; use std::path::PathBuf; +use std::{env, fs}; const ICON_SIZE: u16 = 32; @@ -47,7 +48,7 @@ fn desktop_file_icon_name(desktop_entry: &str) -> Option { let path = dir .join("applications") .join(format!("{desktop_entry}.desktop")); - if let Ok(contents) = std::fs::read_to_string(&path) + if let Ok(contents) = fs::read_to_string(&path) && let Some(icon) = parse_icon_key(&contents) { return Some(icon); @@ -58,11 +59,11 @@ fn desktop_file_icon_name(desktop_entry: &str) -> Option { fn data_dirs() -> Vec { let mut dirs = vec![]; - if let Some(home) = std::env::var_os("HOME") { + if let Some(home) = env::var_os("HOME") { dirs.push(PathBuf::from(home).join(".local/share")); } - let xdg_data_dirs = std::env::var("XDG_DATA_DIRS") - .unwrap_or_else(|_| "/usr/local/share:/usr/share".to_string()); + let xdg_data_dirs = + env::var("XDG_DATA_DIRS").unwrap_or_else(|_| "/usr/local/share:/usr/share".to_string()); dirs.extend(xdg_data_dirs.split(':').map(PathBuf::from)); dirs }