1 # Use "cargo install garden-tools" to install garden https://gitlab.com/garden-rs/garden
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
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.
22 # garden macos/app # Build a git-cola.app bundle
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
31 description: The highly-caffeinated Git GUI
32 path: "${GARDEN_CONFIG_DIR}"
33 url: "git@gitlab.com:git-cola/git-cola.git"
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}
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} "$@"
52 check/fmt: garden fmt -- --check
56 git ls-files -- '*.py' |
59 html: garden ${GARDEN_CMD_VERBOSE} html docs
61 if test -n "${DESTDIR}"
63 pip_root="--root=${DESTDIR}"
64 export DESTDIR="${DESTDIR}"
66 pip install --disable-pip-version-check $pip_root --prefix="${prefix}" "$@" .
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}"
79 sed -i -e s/0.0.0.0/${cola_full_version}/ ${cola_app}/Contents/Info.plist
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
89 for po in cola/i18n/*.po
95 --output-file $$po.new \
97 cola/i18n/git-cola.pot
107 --output-dir cola/i18n \
108 --output git-cola.pot \
112 pages: garden ${GARDEN_CMD_VERBOSE} -D prefix=${TREE_PATH}/pages install docs "$@"
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 "$@"
120 tox/check: tox run -e check "$@"
121 wheel: ${activate} python3 -m build -n .
123 remote.publish.pushurl:
124 - "git@gitlab.com:git-cola/git-cola.git"
125 - "git@github.com:git-cola/git-cola.git"
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"
185 description: Debian packaging
186 url: "git@gitlab.com:git-cola/git-cola-debian.git"
188 davvid: "git@github.com:davvid/git-cola-debian.git"
190 description: Sphinx documentation
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 "$@"
200 mkdir -p "${DESTDIR}${docdir}"
201 install -m 644 *.html "${DESTDIR}${docdir}"
202 install -m 644 *.rst "${DESTDIR}${docdir}"
204 mkdir -p "${DESTDIR}${htmldir}"
205 rsync -r --delete --exclude=.buildinfo _build/html/ "${DESTDIR}${htmldir}/"
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}"
211 description: Fedora packaging
212 url: "https://src.fedoraproject.org/rpms/git-cola.git"
214 git-cola: "git@gitlab.com:git-cola/git-cola-fedora.git"
215 davvid: "git@github.com:davvid/git-cola-fedora.git"
217 description: Flatpak packaging
218 url: "git@github.com:flathub/com.github.git_cola.git-cola.git"
220 app-id: com.github.git_cola.git-cola
222 build: flatpak-builder "$@" --user "${prefix}" "${app-id}.yml"
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}
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
237 description: "Git Cola's homepage"
238 url: "git@gitlab.com:git-cola/git-cola.gitlab.io.git"
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"
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"
248 build: jekyll build --destination build "$@"
250 - "https://git-cola.gitlab.io"
251 - "https://git-cola.github.io"
254 commit: git commit "$@"
256 diffs: git diff --staged "$@"
257 fetch: git fetch "$@"
258 stat: git status --short "$@"
259 status: git status "$@"
260 stage: git add -u "$@"
262 pull: git pull --ff-only "$@"
264 # Variables can be overridden externally using "garden -D name=value ...".
266 # DESTDIR + prefix variables: https://www.gnu.org/software/make/manual/html_node/DESTDIR.html
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
279 if sys.prefix != sys.base_prefix or os.environ.get("VIRTUAL_ENV"):
284 if test -z "${is_virtualenv}" && test -f "${env_dir}/bin/activate"
286 source "${env_dir}/bin/activate"
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
292 SPHINX: ${PYTHON} -m sphinx -d _build/doctrees -a