diff --git a/.gitignore b/.gitignore index 493b55f..9a69835 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ debian/* flatpak/ .flatpak-builder/ assets/locale/ +build-aux/Makefile diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f6ffd79..1bdc7f8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,6 +39,18 @@ You can check for warnings with just check ``` +You can install the `.Devel` flatpak with + +```sh +just install-flatpak +``` + +You can install the regular flatpak with + +```sh +just release=true install-flatpak +``` + And you can update the translation messages with ```sh diff --git a/README.md b/README.md index b3d3d3c..27c8607 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ # Clapgrep -One app to search through all your files, powered by ripgrep. +One app to search through all your files + + + + ## Description diff --git a/assets/de.leopoldluley.Clapgrep.Devel.desktop b/assets/de.leopoldluley.Clapgrep.Devel.desktop new file mode 100644 index 0000000..0714826 --- /dev/null +++ b/assets/de.leopoldluley.Clapgrep.Devel.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Clapgrep Devel +Comment=One app to search through all your files, powered by ripgrep +Exec=clapgrep %u +Terminal=false +Type=Application +StartupNotify=true +Icon=de.leopoldluley.Clapgrep.Devel +Categories=Utility;FileTools; +Keywords=grep;ripgrep;search;pdf; +MimeType=inode/directory; diff --git a/assets/icons/hicolor/scalable/apps/de.leopoldluley.Clapgrep.Devel.svg b/assets/icons/hicolor/scalable/apps/de.leopoldluley.Clapgrep.Devel.svg new file mode 100644 index 0000000..d226f3e --- /dev/null +++ b/assets/icons/hicolor/scalable/apps/de.leopoldluley.Clapgrep.Devel.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build-aux/de.leopoldluley.Clapgrep.Devel.json b/build-aux/de.leopoldluley.Clapgrep.Devel.json new file mode 100644 index 0000000..7924f18 --- /dev/null +++ b/build-aux/de.leopoldluley.Clapgrep.Devel.json @@ -0,0 +1,68 @@ +{ + "$schema": "https://raw.githubusercontent.com/flatpak/flatpak-builder/1.4.4/data/flatpak-manifest.schema.json", + "id": "de.leopoldluley.Clapgrep.Devel", + "runtime": "org.gnome.Platform", + "runtime-version": "46", + "sdk": "org.gnome.Sdk", + "sdk-extensions": [ + "org.freedesktop.Sdk.Extension.rust-stable" + ], + "command": "clapgrep", + "finish-args": [ + "--share=ipc", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri", + "--filesystem=host:ro" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig", + "/man", + "/share/doc", + "/share/gtk-doc", + "/share/man", + "/share/pkgconfig", + "*.la", + "*.a" + ], + "build-options": { + "append-path": "/usr/lib/sdk/rust-stable/bin" + }, + "modules": [ + { + "name": "blueprint-compiler", + "buildsystem": "meson", + "cleanup": [ + "*" + ], + "sources": [ + { + "type": "git", + "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler", + "tag": "v0.14.0" + } + ] + }, + { + "name": "clapgrep", + "buildsystem": "simple", + "build-options": { + "env": { + "CARGO_HOME": "/run/build/clapgrep/cargo", + "APP_ID": "de.leopoldluley.Clapgrep.Devel" + } + }, + "build-commands": [ + "make --file=build-aux/Makefile" + ], + "sources": [ + { + "type": "dir", + "path": ".." + }, + "./cargo-sources.json" + ] + } + ] +} diff --git a/build-aux/de.leopoldluley.Clapgrep.json b/build-aux/de.leopoldluley.Clapgrep.json index 93dc3ac..7fe1292 100644 --- a/build-aux/de.leopoldluley.Clapgrep.json +++ b/build-aux/de.leopoldluley.Clapgrep.json @@ -49,7 +49,8 @@ "buildsystem": "simple", "build-options": { "env": { - "CARGO_HOME": "/run/build/clapgrep/cargo" + "CARGO_HOME": "/run/build/clapgrep/cargo", + "APP_ID": "de.leopoldluley.Clapgrep" } }, "build-commands": [ diff --git a/build-aux/fun.sh b/build-aux/fun.sh index 9ef0118..c2f91a2 100755 --- a/build-aux/fun.sh +++ b/build-aux/fun.sh @@ -1,3 +1,6 @@ #!/usr/bin/env sh -flatpak-builder --run $(dirname $0)/../flatpak $(dirname $0)/de.leopoldluley.Clapgrep.json env CARGO_HOME=/run/build/clapgrep/cargo "$@" +flatpak-builder --run \ + $(dirname $0)/../flatpak \ + $(dirname $0)/de.leopoldluley.Clapgrep.json \ + env CARGO_HOME=/run/build/clapgrep/cargo APP_ID=$APP_ID "$@" diff --git a/gnome/src/main.rs b/gnome/src/main.rs index 5c9cec6..7fcf1f0 100644 --- a/gnome/src/main.rs +++ b/gnome/src/main.rs @@ -12,7 +12,7 @@ mod search_model; mod search_result; mod search_window; -const APP_ID: &str = "de.leopoldluley.Clapgrep"; +const APP_ID: &str = env!("APP_ID"); fn setup_gettext() { let mut text_domain = gettextrs::TextDomain::new(APP_ID); diff --git a/justfile b/justfile index 439864d..5339406 100644 --- a/justfile +++ b/justfile @@ -1,20 +1,24 @@ -name := 'clapgrep' -appid := 'de.leopoldluley.Clapgrep' -frontend := 'clapgrep-gnome' +release := 'false' + +appid := if release == 'true' { 'de.leopoldluley.Clapgrep' } else { 'de.leopoldluley.Clapgrep.Devel' } +bin-target := if release == 'true' { 'release' } else { 'debug' } +release-flag := if release == 'true' { '--release' } else { '' } + +export APP_ID := appid rootdir := '' prefix := '/usr' base-dir := absolute_path(clean(rootdir / prefix)) -bin-src := 'target' / 'release' / frontend -bin-dst := base-dir / 'bin' / name +bin-src := 'target' / bin-target / 'clapgrep-gnome' +bin-dst := base-dir / 'bin' / 'clapgrep' desktop := appid + '.desktop' desktop-src := 'assets' / desktop desktop-dst := base-dir / 'share' / 'applications' / desktop -metainfo := appid + '.metainfo.xml' +metainfo := 'de.leopoldluley.Clapgrep.metainfo.xml' metainfo-src := 'assets' / metainfo metainfo-dst := base-dir / 'share' / 'metainfo' / metainfo @@ -27,19 +31,23 @@ icon-svg-dst := icons-dst / 'scalable' / 'apps' / appid + '.svg' po-src := 'assets' / 'locale' po-dst := base-dir / 'share' / 'locale' +default: + just --list + clean: cargo clean build *args: build-translations - cargo build --package {{frontend}} {{args}} + cargo build --package clapgrep-gnome {{args}} {{release-flag}} -check *args: +check *args: build cargo clippy --all-features {{args}} -run *args: build-translations - env RUST_BACKTRACE=full cargo run --package {{frontend}} {{args}} +run *args: build + env RUST_BACKTRACE=full cargo run --package clapgrep-gnome {{args}} ci: setup-flatpak-repos + echo "skip:" > build-aux/Makefile flatpak-builder --keep-build-dirs --disable-updates --build-only --ccache --force-clean flatpak build-aux/{{appid}}.json echo Check formatting: ./build-aux/fun.sh cargo fmt --all -- --check --verbose @@ -48,7 +56,7 @@ ci: setup-flatpak-repos echo Check code with Clippy: ./build-aux/fun.sh cargo clippy --workspace --all-targets --all-features -- -D warnings -install: +install: build mkdir -p {{po-dst}} install -Dm0755 {{bin-src}} {{bin-dst}} install -Dm0755 {{desktop-src}} {{desktop-dst}} @@ -56,18 +64,17 @@ install: install -Dm0755 {{icon-svg-src}} {{icon-svg-dst}} cp -r {{po-src}} {{po-dst}} -make-makefile: - echo "# This file was generated by 'just make-makefile'" > build-aux/Makefile - echo ".PHONY: all" >> build-aux/Makefile - echo "all:" >> build-aux/Makefile - just -n build --release 2>&1 | sed 's/^/\t/' | sed 's/\$/$$/g' >> build-aux/Makefile - just -n --set prefix /app install 2>&1 | sed 's/^/\t/' >> build-aux/Makefile +make-makefile target='build-aux/Makefile': + echo "# This file was generated by 'just make-makefile'" > {{target}} + echo ".PHONY: install" >> {{target}} + echo "install:" >> {{target}} + just -n release={{release}} prefix=/app install 2>&1 | sed 's/^/\t/' | sed 's/\$/$$/g' >> {{target}} -prepare-flatpak: make-makefile +make-cargo-sources: python3 build-aux/flatpak-cargo-generator.py ./Cargo.lock -o build-aux/cargo-sources.json -install-flatpak: setup-flatpak-repos - flatpak-builder flatpak-build gnome/de.leopoldluley.Clapgrep.json --force-clean --install --user +install-flatpak: setup-flatpak-repos make-makefile make-cargo-sources + flatpak-builder flatpak-build build-aux/{{appid}}.json --force-clean --install --user setup-flatpak-repos: flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo diff --git a/build-aux/Makefile b/makefile similarity index 90% rename from build-aux/Makefile rename to makefile index c0a20a3..914c7bf 100644 --- a/build-aux/Makefile +++ b/makefile @@ -1,8 +1,8 @@ # This file was generated by 'just make-makefile' -.PHONY: all -all: +.PHONY: install +install: cat po/LINGUAS | while read lang; do mkdir -p assets/locale/$$lang/LC_MESSAGES; msgfmt -o assets/locale/$$lang/LC_MESSAGES/de.leopoldluley.Clapgrep.mo po/$$lang.po; done - cargo build --package clapgrep-gnome --release + cargo build --package clapgrep-gnome --release mkdir -p /app/share/locale install -Dm0755 target/release/clapgrep-gnome /app/bin/clapgrep install -Dm0755 assets/de.leopoldluley.Clapgrep.desktop /app/share/applications/de.leopoldluley.Clapgrep.desktop