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