From 73d6196e7a7d91cf35e7026f3e13d22fc6d8e2a0 Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Sat, 30 May 2026 11:16:19 +0200 Subject: [PATCH] Adding devbox and compile xgettext on Mac Devbox is a nice shell-configuration tool which replaces your PATH to point to nix-installed packages: https://www.jetify.com/docs/devbox/installing-devbox This allows to have a well-defined developer environment. This also changes the Makefile to compile xgettext, because the download of the binary only works for Linux. --- .gitattributes | 1 + Makefile | 14 +-- devbox.json | 28 ++++++ devbox.lock | 265 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 301 insertions(+), 7 deletions(-) create mode 100644 .gitattributes create mode 100644 devbox.json create mode 100644 devbox.lock diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..ace818d4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +devbox.lock binary linguist-generated=true diff --git a/Makefile b/Makefile index be3dc7bf..aba3daef 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ABRA := ./cmd/abra -XGETTEXT := ./bin/xgettext-go +XGETTEXT := xgettext-go COMMIT := $(shell git rev-list -1 HEAD) GOPATH := $(shell go env GOPATH) GOVERSION := 1.26 @@ -62,8 +62,8 @@ update-po: done .PHONY: update-pot -update-pot: $(XGETTEXT) - @${XGETTEXT} \ +update-pot: xgettext-go + @$(XGETTEXT) \ -o pkg/i18n/locales/$(DOMAIN).pot \ --keyword=i18n.G \ --keyword-ctx=i18n.GC \ @@ -71,10 +71,10 @@ update-pot: $(XGETTEXT) --add-comments-tag="translators" \ $$(find . -name "*.go" -not -path "*vendor*" | sort) -${XGETTEXT}: - @mkdir -p ./bin && \ - wget -O ./bin/xgettext-go https://git.coopcloud.tech/toolshed/xgettext-go/raw/branch/main/xgettext-go && \ - chmod +x ./bin/xgettext-go +.PHONY: xgettext-go +xgettext-go: + @command -v $(XGETTEXT) >/dev/null 2>&1 || \ + go install git.coopcloud.tech/toolshed/xgettext-go@latest .PHONY: update-pot-po-metadata update-pot-po-metadata: diff --git a/devbox.json b/devbox.json new file mode 100644 index 00000000..11436e8f --- /dev/null +++ b/devbox.json @@ -0,0 +1,28 @@ +{ + "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.17.2/.schema/devbox.schema.json", + "packages": [ + "go@1.26", + "gnumake@latest", + "gettext@latest" + ], + "env": { + "GOPATH": "$PWD/.devbox", + "PATH": "$PWD/.devbox/bin:$PATH" + }, + "shell": { + "init_hook": [ + "mkdir -p .devbox/bin" + ], + "scripts": { + "xgettext-go": [ + "go install git.coopcloud.tech/toolshed/xgettext-go@latest" + ], + "build": [ + "make build" + ], + "test": [ + "make test" + ] + } + } +} diff --git a/devbox.lock b/devbox.lock new file mode 100644 index 00000000..aec8712a --- /dev/null +++ b/devbox.lock @@ -0,0 +1,265 @@ +{ + "lockfile_version": "1", + "packages": { + "gettext@latest": { + "last_modified": "2026-05-21T08:15:18Z", + "resolved": "github:NixOS/nixpkgs/4a29d733e8a7d5b824c3d8c958a946a9867b3eb2#gettext", + "source": "devbox-search", + "version": "1.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/i5aw4v15lklq5r5w5clvcy8dxc2igjck-gettext-1.0", + "default": true + }, + { + "name": "man", + "path": "/nix/store/17g5cqxvbkxivmfd39ppvyc0rx1wpcn8-gettext-1.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/kfx0dvvkmyw91jbqnp58yhzlxqi1xyi0-gettext-1.0-doc" + }, + { + "name": "info", + "path": "/nix/store/d14xspsnm4xj9w8yicrj50xmhs8bb5s2-gettext-1.0-info" + } + ], + "store_path": "/nix/store/i5aw4v15lklq5r5w5clvcy8dxc2igjck-gettext-1.0" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/jdqf3kqpj22agyhakrk5gklvzc6fxp3l-gettext-1.0", + "default": true + }, + { + "name": "man", + "path": "/nix/store/axz6675qpbr93bbs1hfz60m0dm1i01mg-gettext-1.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/5wckc0cg4l9wbmaqsi08rrmc09q7mxym-gettext-1.0-doc" + }, + { + "name": "info", + "path": "/nix/store/fd0d7h9y3kvp9i3x172lsj3x5ffz6sh7-gettext-1.0-info" + } + ], + "store_path": "/nix/store/jdqf3kqpj22agyhakrk5gklvzc6fxp3l-gettext-1.0" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/f46icmrv0rpaykfxs313d4g17g0jxn02-gettext-1.0", + "default": true + }, + { + "name": "man", + "path": "/nix/store/nk8dbg526a7lmsr4x41nbj3hizjk7f6k-gettext-1.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/w0wgn2f7ha2kp5ank9ymf1l8mlfki30a-gettext-1.0-doc" + }, + { + "name": "info", + "path": "/nix/store/cvp75qjcdjh8xrhzhrrdc62dyfil1f5j-gettext-1.0-info" + } + ], + "store_path": "/nix/store/f46icmrv0rpaykfxs313d4g17g0jxn02-gettext-1.0" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/rb8rna9gkhs0ybl6z2p904myslh8llg8-gettext-1.0", + "default": true + }, + { + "name": "man", + "path": "/nix/store/ck224axif94df161wk7b0wzwm035747f-gettext-1.0-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/2lp7blpw8ahc683287gbnp6vn4i9p9q4-gettext-1.0-doc" + }, + { + "name": "info", + "path": "/nix/store/33xaaniyh3qk6mq75dzx7v9c55n21i3p-gettext-1.0-info" + } + ], + "store_path": "/nix/store/rb8rna9gkhs0ybl6z2p904myslh8llg8-gettext-1.0" + } + } + }, + "github:NixOS/nixpkgs/nixpkgs-unstable": { + "last_modified": "2026-05-27T10:28:13Z", + "resolved": "github:NixOS/nixpkgs/4100e830e085863741bc69b156ec4ccd53ab5be0?lastModified=1779877693&narHash=sha256-NOF9NAREhxr50bbBfVcVOq%2BArCMSoe8dP79Pk2uyARk%3D" + }, + "gnumake@latest": { + "last_modified": "2026-05-27T10:28:13Z", + "resolved": "github:NixOS/nixpkgs/4100e830e085863741bc69b156ec4ccd53ab5be0#gnumake", + "source": "devbox-search", + "version": "4.4.1", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/8wwiw8pwyhrkzyq28hqzxfl4z84lks81-gnumake-4.4.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/wdm9prq35jlgwq6rjyhqxy4jzy833sfr-gnumake-4.4.1-man", + "default": true + }, + { + "name": "info", + "path": "/nix/store/6dbp1ysgxsrrn7xgjgf523faqrm605a5-gnumake-4.4.1-info" + }, + { + "name": "doc", + "path": "/nix/store/sl2ygvgjg4ml8dhyfxj5kh84x2bs1mhc-gnumake-4.4.1-doc" + } + ], + "store_path": "/nix/store/8wwiw8pwyhrkzyq28hqzxfl4z84lks81-gnumake-4.4.1" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/9ngw1ippk25jjj5fjxv36xbp6iq7rxdx-gnumake-4.4.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/dg3aa71vii59scbfhi02cdxnps64x6ql-gnumake-4.4.1-man", + "default": true + }, + { + "name": "debug", + "path": "/nix/store/mdv67w2xvchbs76zjdzppdkk64z5avki-gnumake-4.4.1-debug" + }, + { + "name": "doc", + "path": "/nix/store/bybbj9avk3g107mwhgvkzkpm6mkbl8gv-gnumake-4.4.1-doc" + }, + { + "name": "info", + "path": "/nix/store/bxdqxx2q13sj15ss8z5l33jd31x55j5l-gnumake-4.4.1-info" + } + ], + "store_path": "/nix/store/9ngw1ippk25jjj5fjxv36xbp6iq7rxdx-gnumake-4.4.1" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/60y2hs45l18g56ykw9789b5vhhi2ls5q-gnumake-4.4.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/m2ba4bwmfgh994xbg1iqm6zj1mdrq8h7-gnumake-4.4.1-man", + "default": true + }, + { + "name": "info", + "path": "/nix/store/apljbm6plyajbfrnwif0a2d4nx6w0cpf-gnumake-4.4.1-info" + }, + { + "name": "doc", + "path": "/nix/store/s9y438l347nky6rkl1wfk2y3b0d9i636-gnumake-4.4.1-doc" + } + ], + "store_path": "/nix/store/60y2hs45l18g56ykw9789b5vhhi2ls5q-gnumake-4.4.1" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/d3bwqm6bymhy3pdgbvf7vxjqfp31m3j1-gnumake-4.4.1", + "default": true + }, + { + "name": "man", + "path": "/nix/store/bmvqa5ym318mymhxlwwmxq8wxal958p4-gnumake-4.4.1-man", + "default": true + }, + { + "name": "debug", + "path": "/nix/store/q683z843wi7xs96pngh1kinnx88vn2if-gnumake-4.4.1-debug" + }, + { + "name": "doc", + "path": "/nix/store/wxg27bzsljjw4k72m9b2v6a0fx5a68s0-gnumake-4.4.1-doc" + }, + { + "name": "info", + "path": "/nix/store/03d41qgjsrhcr3fzq2z99ry07rahnj0v-gnumake-4.4.1-info" + } + ], + "store_path": "/nix/store/d3bwqm6bymhy3pdgbvf7vxjqfp31m3j1-gnumake-4.4.1" + } + } + }, + "go@1.26": { + "last_modified": "2026-05-21T08:15:18Z", + "resolved": "github:NixOS/nixpkgs/4a29d733e8a7d5b824c3d8c958a946a9867b3eb2#go", + "source": "devbox-search", + "version": "1.26.3", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/7ycp8j45iay38g9mjaxmy4jhwdsrb47y-go-1.26.3", + "default": true + } + ], + "store_path": "/nix/store/7ycp8j45iay38g9mjaxmy4jhwdsrb47y-go-1.26.3" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/jkcwcbwvhgzmxg59798z4clmj4bfv42i-go-1.26.3", + "default": true + } + ], + "store_path": "/nix/store/jkcwcbwvhgzmxg59798z4clmj4bfv42i-go-1.26.3" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/3f2jzvxmhhlarjqxy1p7i9r5l34siz29-go-1.26.3", + "default": true + } + ], + "store_path": "/nix/store/3f2jzvxmhhlarjqxy1p7i9r5l34siz29-go-1.26.3" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/33fw5m31lfcnk4ff2f0df7j2bxnh8lgk-go-1.26.3", + "default": true + } + ], + "store_path": "/nix/store/33fw5m31lfcnk4ff2f0df7j2bxnh8lgk-go-1.26.3" + } + } + } + } +} -- 2.52.0