Compare commits

..

2 commits

Author SHA1 Message Date
Austin Schaefer
d1fd272fbb Fix rustfmt formatting in icon.rs
Some checks failed
CI / ci (push) Failing after 42s
CI / ci (pull_request) Failing after 5s
Reorders imports and reflows a long binding so the new CI's
format-check job passes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-29 12:12:57 +02:00
Austin Schaefer
4b751dc246 Add Forgejo Actions CI workflow
Runs cargo fmt/clippy/test/audit via the existing cargo-make ci task on every push and pull request.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-29 12:03:01 +02:00
2 changed files with 40 additions and 4 deletions

35
.forgejo/workflows/ci.yml Normal file
View file

@ -0,0 +1,35 @@
name: CI
on:
push:
pull_request:
jobs:
ci:
runs-on: docker
container: rust:latest
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 toolchain components
run: rustup component add clippy rustfmt
- 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

View file

@ -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<String> {
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<String> {
fn data_dirs() -> Vec<PathBuf> {
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
}