Merge pull request #1396 from github/pre-commit-ci-update-config
[git-cola.git] / garden.yaml
blob4467d1713ba7590563913ed3e91b82d7fd7dc05e
1 # Use "cargo install garden-tools" to install garden https://gitlab.com/garden-rs/garden
3 #   # Installation
4 #   garden install              # Install git-cola to the installation ${prefix}
5 #   garden doc                  # Generate documentation: html + manual pages
6 #   garden install docs         # Install documentation
8 #   # Variables can be overridden using "-D name=value", e.g.:
9 #   garden -D prefix=$PWD/dist install docs
10 #   garden -D DESTDIR=/tmp/stage -D prefix=/usr/local install
12 #   # Development
13 #   garden test                 # Run the test suite
14 #   garden fmt                  # Format code using "cercis"
15 #   garden html                 # Generate documentation: html only
16 #   garden man                  # Generate documentation: manual pages only
17 #   garden pot                  # Regenerate git-cola.pot with new translations
18 #   garden po                   # Update .po files with new translations from git-cola.pot
19 #   garden pages                # Install the pages/ website documentation.
21 #   # macOS
22 #   garden macos/app            # Build a git-cola.app bundle
24 #   # Related Projects
25 #   garden grow pages           # Clone the Git Cola homepage
26 #   garden grow fedora          # Clone the Fedora packaging
27 #   garden grow deb             # Clone the Debian packaging
28 #   garden grow flatpak         # Clone the Flatpak packaging
29 trees:
30   git-cola:
31     description: The highly-caffeinated Git GUI
32     path: "${GARDEN_CONFIG_DIR}"
33     url: "git@gitlab.com:git-cola/git-cola.git"
34     commands:
35       clean: rm -rf build dist git_cola.egg-info git-cola-*.windows.zip
36       doc: garden ${GARDEN_CMD_VERBOSE} cmd docs html man -- "$@"
37       dev: ${PYTHON} -m venv --system-site-packages ${env_dir}
38       dev>:
39         - dev/extras
40         - dev/development
41         - dev/build
42       dev/build: ${activate} pip install --editable '.[build]'
43       dev/development: ${activate} pip install --editable '.[docs,dev,testing]'
44       dev/extras: ${activate} pip install --editable '.[extras]'
45       dev/pyqt6: ${activate} pip install --editable '.[pyqt6]'
46       dev/install: ${activate} pip install --editable .
47       dev/env: ${activate} "$@"
48       check>:
49         - test
50         - check/fmt
51         - doc
52       check/fmt: garden fmt -- --check
53       fmt: |
54         ${activate}
55         cercis --version
56         git ls-files -- '*.py' |
57         grep -v ^qtpy |
58         xargs cercis "$@"
59       html: garden ${GARDEN_CMD_VERBOSE} html docs
60       install: |
61         if test -n "${DESTDIR}"
62         then
63             pip_root="--root=${DESTDIR}"
64             export DESTDIR="${DESTDIR}"
65         fi
66         pip install --disable-pip-version-check $pip_root --prefix="${prefix}" "$@" .
67       i18n>:
68         - pot
69         - po
70       macos/app: |
71         mkdir -p ${cola_app}/Contents/MacOS
72         mkdir -p ${cola_app_resources}
73         ${PYTHON} -m venv ${cola_app_resources}
74         source ${cola_app_resources}/bin/activate
75         pip install '.[docs,extras,pyqt6]'
76         cp contrib/darwin/Info.plist contrib/darwin/PkgInfo ${cola_app}/Contents
77         if test -n "${cola_full_version}"
78         then
79             sed -i -e s/0.0.0.0/${cola_full_version}/ ${cola_app}/Contents/Info.plist
80         fi
81         sed -i -e s/0.0.0/${cola_version}/ ${cola_app}/Contents/Info.plist
82         cp contrib/darwin/git-cola ${cola_app}/Contents/MacOS
83         cp contrib/darwin/git-cola.icns ${cola_app}/Contents/Resources
84         garden ${GARDEN_CMD_VERBOSE} -D prefix=${cola_app_resources} install
85         garden ${GARDEN_CMD_VERBOSE} doc
86         garden ${GARDEN_CMD_VERBOSE} -D prefix=${cola_app_resources} install docs
87       man: garden ${GARDEN_CMD_VERBOSE} man docs
88       po: |
89         for po in cola/i18n/*.po
90         do
91             msgmerge \
92                 --no-wrap \
93                 --no-fuzzy-matching \
94                 --sort-output \
95                 --output-file $$po.new \
96                 $$po \
97                 cola/i18n/git-cola.pot
98             mv $$po.new $$po
99         done
100       pot: |
101         xgettext \
102             --language=Python \
103             --keyword=N_ \
104             --no-wrap \
105             --omit-header \
106             --sort-output \
107             --output-dir cola/i18n \
108             --output git-cola.pot \
109             cola/*.py \
110             cola/*/*.py
111       pages<: doc
112       pages: garden ${GARDEN_CMD_VERBOSE} -D prefix=${TREE_PATH}/pages install docs "$@"
113       publish: |
114         ${activate}
115         twine upload --sign dist/*.whl dist/*.tar.gz
116       run: ${activate} ./bin/git-cola "$@"
117       run/qt6: ${activate} QT_API=PyQt6 ./bin/git-cola "$@"
118       test: ${activate} ${PYTEST} cola test "$@"
119       tox: tox run "$@"
120       tox/check: tox run -e check "$@"
121       wheel: ${activate} python3 -m build -n .
122     gitconfig:
123       remote.publish.pushurl:
124         - "git@gitlab.com:git-cola/git-cola.git"
125         - "git@github.com:git-cola/git-cola.git"
126     remotes:
127       BaumiCoder: "https://github.com/BaumiCoder/git-cola.git"
128       DasaniT: "https://github.com/DasaniT/git-cola.git"
129       Mailaender: "https://github.com/Mailaender/git-cola.git"
130       Mithil467: "https://github.com/Mithil467/git-cola.git"
131       NielBuys: "https://github.com/NielBuys/git-cola.git"
132       WNguyen14: "https://github.com/WNguyen14/git-cola.git"
133       abid1998: "https://github.com/abid1998/git-cola.git"
134       achernet: "https://github.com/achernet/git-cola.git"
135       axel-h: "https://github.com/axel-h/git-cola.git"
136       bearsh: "https://github.com/bearsh/git-cola.git"
137       bensmrs: "https://github.com/bensmrs/git-cola.git"
138       bobvanderlinden: "https://github.com/bobvanderlinden/git-cola.git"
139       brccabral: "https://github.com/brccabral/git-cola.git"
140       davvid: "git@github.com:davvid/git-cola.git"
141       dschwoerer: "https://github.com/dschwoerer/git-cola.git"
142       florisla: "https://github.com/florisla/git-cola.git"
143       fu7mu4: "https://github.com/fu7mu4/git-cola.git"
144       gdebure: "https://github.com/gdebure/git-cola.git"
145       github: "git@github.com:git-cola/git-cola.git"
146       guoyunhe: "https://github.com/guoyunhe/git-cola.git"
147       gyuris: "https://github.com/gyuris/git-cola.git"
148       haffmans: "https://github.com/haffmans/git-cola.git"
149       harmathy: "https://github.com/harmathy/git-cola.git"
150       hsoft: "https://github.com/hsoft/git-cola.git"
151       jamie-pate: "https://github.com/jamie-pate/git-cola.git"
152       kenyuy: "https://github.com/kenyuy/git-cola.git"
153       kisaragi-hiu: "https://github.com/kisaragi-hiu/git-cola.git"
154       kneirinck: "https://github.com/kneirinck/git-cola.git"
155       kurtmckee: "https://github.com/kurtmckee/git-cola.git"
156       laerreal: "https://github.com/laerreal/git-cola.git"
157       lah7: "https://github.com/lah7/git-cola.git"
158       living180: "https://github.com/living180/git-cola.git"
159       ljhcage: "https://github.com/ljhcage/git-cola.git"
160       malpas: "https://github.com/malpas/git-cola.git"
161       melkecelioglu: "https://github.com/melkecelioglu/git-cola.git"
162       milestone12: "https://github.com/milestone12/git-cola.git"
163       mmargoliono: "https://github.com/mmargoliono/git-cola"
164       mp-chet: "https://github.com/mp-chet/git-cola.git"
165       nakanoi: "https://github.com/nakanoi/git-cola.git"
166       nandalopes: "https://github.com/nandalopes/git-cola.git"
167       OriShalhon: "https://github.com/OriShalhon/git-cola.git"
168       pilarmolinalopez: "https://github.com/pilarmolinalopez/git-cola.git"
169       quintusfelix: "https://github.com/quintusfelix/git-cola.git"
170       rafaelreuber: "https://github.com/rafaelreuber/git-cola.git"
171       scop: "https://github.com/scop/git-cola.git"
172       sergei-dyshel: "https://github.com/sergei-dyshel/git-cola.git"
173       sthalik: "https://github.com/sthalik/git-cola.git"
174       skunkwerks: "https://github.com/skunkwerks/git-cola.git"
175       takluyver: "https://github.com/takluyver/git-cola.git"
176       thk123: "https://github.com/thk123/git-cola.git"
177       timgates42: "https://github.com/timgates42/git-cola.git"
178       vdragon: "https://github.com/Vdragon/git-cola.git"
179       victorhck: "https://github.com/victorhck/git-cola.git"
180       virtualstaticvoid: "https://github.com/virtualstaticvoid/git-cola.git"
181       wm4: "https://github.com/wm4/git-cola.git"
182       wojnilowicz: "https://github.com/wojnilowicz/git-cola.git"
183       yaellevy: "https://github.com/yaellevy/git-cola.git"
184   deb:
185     description: Debian packaging
186     url: "git@gitlab.com:git-cola/git-cola-debian.git"
187     remotes:
188       davvid: "git@github.com:davvid/git-cola-debian.git"
189   docs:
190     description: Sphinx documentation
191     variables:
192     env_dir: ../env3
193     commands:
194     clean: rm -fr _build
195     doctest: ${activate} ${SPHINX} -b doctest . _build/doctest "$@"
196     html: ${activate} ${SPHINX} -b html . _build/html "$@"
197     man: ${activate} ${SPHINX} -b man . _build/man "$@"
198     linkcheck: ${activate} ${SPHINX} -b linkcheck . _build/linkcheck "$@"
199     install: |
200       mkdir -p "${DESTDIR}${docdir}"
201       install -m 644 *.html "${DESTDIR}${docdir}"
202       install -m 644 *.rst "${DESTDIR}${docdir}"
203       # HTML documentation
204       mkdir -p "${DESTDIR}${htmldir}"
205       rsync -r --delete --exclude=.buildinfo _build/html/ "${DESTDIR}${htmldir}/"
206       # Manual pages
207       mkdir -p "${DESTDIR}${mandir}"
208       install -m 644 _build/man/git-cola.1 "${DESTDIR}${mandir}"
209       install -m 644 _build/man/git-dag.1 "${DESTDIR}${mandir}"
210   fedora:
211     description: Fedora packaging
212     url: "https://src.fedoraproject.org/rpms/git-cola.git"
213     remotes:
214       git-cola: "git@gitlab.com:git-cola/git-cola-fedora.git"
215       davvid: "git@github.com:davvid/git-cola-fedora.git"
216   flatpak:
217     description: Flatpak packaging
218     url: "git@github.com:flathub/com.github.git_cola.git-cola.git"
219     variables:
220       app-id: com.github.git_cola.git-cola
221     commands:
222       build: flatpak-builder "$@" --user "${prefix}" "${app-id}.yml"
223       check: |
224         flatpak run --command=flatpak-builder-lint \
225             org.flatpak.Builder "$@" --exceptions builddir "${prefix}"
226       install: flatpak-builder "$@" --install --user "${prefix}" "${app-id}.yml"
227       run: flatpak run ${app-id}
228       setup: |
229         flatpak remote-add --user --if-not-exists \
230         flathub https://flathub.org/repo/flathub.flatpakrepo
231         flatpak install --user \
232         org.flatpak.Builder/x86_64 \
233         org.kde.Sdk/x86_64/5.15-23.08 \
234         org.kde.Platform/x86_64/5.15-23.08 \
235         com.riverbankcomputing.PyQt.BaseApp/x86_64/5.15-23.08
236   pages:
237     description: "Git Cola's homepage"
238     url: "git@gitlab.com:git-cola/git-cola.gitlab.io.git"
239     remotes:
240       github: "git@github.com:git-cola/git-cola.github.io.git"
241       ls-jad-elkik: "git://github.com/ls-jad-elkik/git-cola.github.io.git"
242       lz-coder: "https://github.com/lz-coder/git-cola.github.io.git"
243     gitconfig:
244       remote.origin.pushurl:
245         - "git@gitlab.com:git-cola/git-cola.gitlab.io.git"
246         - "git@github.com:git-cola/git-cola.github.io.git"
247     commands:
248       build: jekyll build --destination build "$@"
249     links:
250       - "https://git-cola.gitlab.io"
251       - "https://git-cola.github.io"
253 commands:
254   commit: git commit "$@"
255   diff: git diff "$@"
256   diffs: git diff --staged "$@"
257   fetch: git fetch "$@"
258   stat: git status --short "$@"
259   status: git status "$@"
260   stage: git add -u "$@"
261   push: git push "$@"
262   pull: git pull --ff-only "$@"
264 # Variables can be overridden externally using "garden -D name=value ...".
265 variables:
266   # DESTDIR + prefix variables: https://www.gnu.org/software/make/manual/html_node/DESTDIR.html
267   DESTDIR: ""
268   prefix: ${GARDEN_CONFIG_DIR}/dist
269   docdir: ${prefix}/share/doc/git-cola
270   htmldir: ${docdir}/html
271   mandir: ${prefix}/share/man/man1
272   cola_app: ${TREE_PATH}/git-cola.app
273   cola_app_resources: ${cola_app}/Contents/Resources
274   cola_full_version: $ ./bin/git-cola version --brief --builtin
275   cola_version: $ sed -e "s/VERSION = '\(.*\)'/\1/"  cola/_version.py
276   is_virtualenv: |
277     $ ${PYTHON} -c '
278     import os, sys
279     if sys.prefix != sys.base_prefix or os.environ.get("VIRTUAL_ENV"):
280         print("true")
281     '
282   env_dir: env3
283   activate: |
284     if test -z "${is_virtualenv}" && test -f "${env_dir}/bin/activate"
285     then
286         source "${env_dir}/bin/activate"
287     fi
288   # External commands and options
289   PYTEST: ${PYTHON} -B -m pytest ${PYTEST_OPTIONS}
290   PYTEST_OPTIONS: $ test "$(uname -s)" != Linux && printf '%s' --ignore=cola/inotify.py
291   PYTHON: python3
292   SPHINX: ${PYTHON} -m sphinx -d _build/doctrees -a