mirror of
				https://gitlab.archlinux.org/archlinux/devtools.git
				synced 2025-10-30 23:34:43 +01:00 
			
		
		
		
	Compare commits
	
		
			168 Commits
		
	
	
		
			unstable
			...
			bfbfd58d49
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | bfbfd58d49 | ||
|   | fc56ebedf3 | ||
|   | 01757e6904 | ||
|   | c5fe8ff3e6 | ||
|   | ad7dd50bf3 | ||
|   | 5a381835e8 | ||
|   | b8c475b3f4 | ||
|   | 74cd46f092 | ||
|   | 40f31f98a3 | ||
|   | c6f5d72708 | ||
|   | b4a5e5dbd9 | ||
|   | 4926d9d8c5 | ||
|   | 7165e0d73e | ||
|   | 8776dd39e8 | ||
|   | fb4bf96d24 | ||
|   | 96eff02801 | ||
|   | 79c3162112 | ||
|   | 43cd68d73e | ||
|   | 5c1948a357 | ||
|   | acd6bda3ed | ||
|   | 8af7a50c03 | ||
|   | bed2b5db28 | ||
|   | 47d5ea1e89 | ||
|   | 8df81ecd7c | ||
|   | 1101de9fb9 | ||
|   | d5e1c5fae3 | ||
|   | e8ab01d662 | ||
|   | 7d9c2e0648 | ||
|   | 8bcbca830e | ||
|   | 68eb498347 | ||
|   | 23f1314733 | ||
|   | 98b079f047 | ||
|   | a319b0b852 | ||
|   | a1e443856d | ||
|   | dfb65e95e3 | ||
|   | 4e7ec8b37f | ||
|   | 292920ac7e | ||
|   | dde6539971 | ||
|   | 8803e5a57a | ||
|   | 0df36dfa52 | ||
|   | b9fe8ee947 | ||
|   | af56897f76 | ||
|   | 99c6c26a1c | ||
|   | 00f97fcd3d | ||
|   | effe511952 | ||
|   | 1cd213b2f5 | ||
|   | b88dec322c | ||
|   | e2ab07caff | ||
|   | 5c0f8d37d5 | ||
|   | e1401ce41c | ||
|   | 8612b41a20 | ||
|   | fbb661645b | ||
|   | f1dc2e18f7 | ||
|   | c9d821448b | ||
|   | a620250535 | ||
|   | 27eebe383d | ||
|   | d6d416b653 | ||
|   | 9ff63503b9 | ||
|   | 3f02a1a24c | ||
|   | 1df0979da6 | ||
|   | c1a3ed224b | ||
|   | 144f9a871e | ||
|   | 44328cd9a3 | ||
|   | 0e2b16b0ac | ||
|   | 6f0a8c345d | ||
|   | 5f19853414 | ||
|   | 2b62ac660d | ||
|   | 7cb72699f6 | ||
|   | d1790c295a | ||
|   | 12a0d0c7b5 | ||
|   | 952f483574 | ||
|   | c484a55cde | ||
|   | a46b2d4fb7 | ||
|   | e828111ff7 | ||
|   | 35b417d226 | ||
|   | 1d433f600e | ||
|   | 7b553afcb2 | ||
|   | 01614c6817 | ||
|   | dced77d23d | ||
|   | 5780ba0e38 | ||
|   | 9a5181db5b | ||
|   | 55c2ca1312 | ||
|   | ccee85b2ab | ||
|   | 05bea3e922 | ||
|   | de0ea3b2f8 | ||
|   | 81f5e7b3b3 | ||
|   | 01b6b0849e | ||
|   | 7033554e45 | ||
|   | 40f476c649 | ||
|   | 509dd24bdc | ||
|   | 7a9ef3bc57 | ||
|   | 354c9dcd12 | ||
|   | 39eaeaa4b2 | ||
|   | c79a993148 | ||
|   | 6d0ac6b9a8 | ||
|   | 66a4357f3e | ||
|   | db2f82bf19 | ||
|   | e0a84aefc3 | ||
|   | 98bd7e3760 | ||
|   | 3e79cb8f4a | ||
|   | 1cf402eae9 | ||
|   | 0469d3c902 | ||
|   | f6b1b1ba45 | ||
|   | 36ece44b12 | ||
|   | fc05ea19d9 | ||
|   | 3ecba314fc | ||
|   | 5042dcaeb4 | ||
|   | 67fdb58758 | ||
|   | eabb1a9313 | ||
|   | a7a2f25fb0 | ||
|   | 800cf9b56b | ||
|   | 4d72f4560c | ||
|   | e3edf25554 | ||
|   | b258bb3b7c | ||
|   | 08ece1640b | ||
|   | fedfc80ca1 | ||
|   | 66e83c950c | ||
|   | 96f39525bf | ||
|   | 03d5c928cf | ||
|   | 6054c869e1 | ||
|   | 313c5b4d32 | ||
|   | db8c157eea | ||
|   | 343a2b5d4c | ||
|   | 7a8f0eb47e | ||
|   | e6f7aa395f | ||
|   | e413b65df3 | ||
|   | ef04960b98 | ||
|   | d210079037 | ||
|   | b264c7f1c7 | ||
|   | 2b8033b911 | ||
|   | 8f45c65830 | ||
|   | d0dc0e1a32 | ||
|   | 0e538cf498 | ||
|   | 4673ad6c89 | ||
|   | 78dd150996 | ||
|   | 4425913e4f | ||
|   | 2a1e8aebaf | ||
|   | 3933f20001 | ||
|   | 0f14d630bc | ||
|   | d00a2b9890 | ||
|   | c2d73d73ae | ||
|   | f2cafa3cb0 | ||
|   | c356995dc1 | ||
|   | 1535a69af6 | ||
|   | 9a356eae82 | ||
|   | ae14c246b8 | ||
|   | cc369e86d2 | ||
|   | c9de6a18b9 | ||
|   | 9f8ca5df1a | ||
|   | 7825f9fb02 | ||
|   | b7984c6073 | ||
|   | 5e3ab4b321 | ||
|   | e7b82f36ef | ||
|   | 4d7364ed1b | ||
|   | e0ab20d05c | ||
|   | 5cbe9ad612 | ||
|   | 6f106e7cd6 | ||
|   | 0669315821 | ||
|   | a6d43aca01 | ||
|   | 02bc8bfbc0 | ||
|   | f632659563 | ||
|   | 7e41adf00b | ||
|   | a316b50f88 | ||
|   | 547961681a | ||
|   | 8190a22480 | ||
|   | f31ea3a48e | ||
|   | 9f7808c26e | ||
|   | 7f2904d069 | 
							
								
								
									
										15
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | # EditorConfig configuration for devtools | ||||||
|  | # https://editorconfig.org | ||||||
|  |  | ||||||
|  | # Top-most EditorConfig file | ||||||
|  | root = true | ||||||
|  |  | ||||||
|  | # Unix-style newlines without trailing whitespaces, but with a newline | ||||||
|  | # ending every file, utf-8 charset, set indent to tabs | ||||||
|  | [*] | ||||||
|  | end_of_line = lf | ||||||
|  | insert_final_newline = true | ||||||
|  | trim_trailing_whitespace = true | ||||||
|  | charset = utf-8 | ||||||
|  | indent_style = tab | ||||||
|  | tab_width = 4 | ||||||
| @@ -8,14 +8,37 @@ build: | |||||||
|   stage: build |   stage: build | ||||||
|   needs: [] |   needs: [] | ||||||
|   script: |   script: | ||||||
|     - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils asciidoc |     - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils asciidoctor | ||||||
|     - make PREFIX=/usr |     - make PREFIX=/usr | ||||||
|     - make PREFIX=/usr DESTDIR=build install |     - make PREFIX=/usr DESTDIR=build install | ||||||
|  |  | ||||||
| check: | lint: | ||||||
|   stage: test |   stage: test | ||||||
|   needs: [] |   needs: [] | ||||||
|   script: |   script: | ||||||
|     - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils asciidoc shellcheck |     - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils asciidoctor shellcheck | ||||||
|     - make check || true |     - make check || true | ||||||
|     - SHELLCHECK_OPTS="-S error" make check |     - SHELLCHECK_OPTS="-S error" make check | ||||||
|  |  | ||||||
|  | test: | ||||||
|  |   stage: test | ||||||
|  |   needs: [] | ||||||
|  |   script: | ||||||
|  |     - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils coreutils asciidoctor shellcheck nvchecker bats | ||||||
|  |     - make test BATS_EXTRA_ARGS='--formatter junit' | ||||||
|  |   artifacts: | ||||||
|  |     reports: | ||||||
|  |       junit: build/coverage/bats-report.xml | ||||||
|  |  | ||||||
|  | coverage: | ||||||
|  |   stage: test | ||||||
|  |   needs: [] | ||||||
|  |   script: | ||||||
|  |     - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils coreutils asciidoctor shellcheck nvchecker bats kcov jq | ||||||
|  |     - make coverage | ||||||
|  |   coverage: '/Percent covered\s+\d+\.\d+/' | ||||||
|  |   artifacts: | ||||||
|  |     reports: | ||||||
|  |       coverage_report: | ||||||
|  |         coverage_format: cobertura | ||||||
|  |         path: build/coverage/bats.*/cobertura.xml | ||||||
|   | |||||||
							
								
								
									
										56
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| SHELL=/bin/bash | SHELL=/bin/bash -o pipefail | ||||||
|  |  | ||||||
| V=1.0.3 | V=1.4.0 | ||||||
| BUILDTOOLVER ?= $(V) | BUILDTOOLVER ?= $(V) | ||||||
|  |  | ||||||
| PREFIX = /usr/local | PREFIX = /usr/local | ||||||
| @@ -16,8 +16,10 @@ LIBRARY_SRC = $(call rwildcard,src/lib,*.sh) | |||||||
| LIBRARY = $(addprefix $(BUILDDIR)/,$(patsubst src/%,%,$(patsubst %.in,%,$(LIBRARY_SRC)))) | LIBRARY = $(addprefix $(BUILDDIR)/,$(patsubst src/%,%,$(patsubst %.in,%,$(LIBRARY_SRC)))) | ||||||
| MAKEPKG_CONFIGS=$(wildcard config/makepkg/*) | MAKEPKG_CONFIGS=$(wildcard config/makepkg/*) | ||||||
| PACMAN_CONFIGS=$(wildcard config/pacman/*) | PACMAN_CONFIGS=$(wildcard config/pacman/*) | ||||||
|  | GIT_CONFIGS = $(wildcard config/git/*) | ||||||
| SETARCH_ALIASES = $(wildcard config/setarch-aliases.d/*) | SETARCH_ALIASES = $(wildcard config/setarch-aliases.d/*) | ||||||
| MANS = $(addprefix $(BUILDDIR)/,$(patsubst %.asciidoc,%,$(wildcard doc/man/*.asciidoc))) | MANS = $(addprefix $(BUILDDIR)/,$(patsubst %.asciidoc,%,$(wildcard doc/man/*.asciidoc))) | ||||||
|  | DATA_FILES = $(wildcard data/*) | ||||||
|  |  | ||||||
| COMMITPKG_LINKS = \ | COMMITPKG_LINKS = \ | ||||||
| 	core-testingpkg \ | 	core-testingpkg \ | ||||||
| @@ -51,7 +53,14 @@ ARCHBUILD_LINKS = \ | |||||||
| COMPLETIONS = $(addprefix $(BUILDDIR)/,$(patsubst %.in,%,$(wildcard contrib/completion/*/*))) | COMPLETIONS = $(addprefix $(BUILDDIR)/,$(patsubst %.in,%,$(wildcard contrib/completion/*/*))) | ||||||
|  |  | ||||||
|  |  | ||||||
| all: binprogs library conf completion man | CASES ?= test/case | ||||||
|  | JOBS ?= $(shell nproc) | ||||||
|  | BATS_EXTRA_ARGS ?= | ||||||
|  | BATS_ARGS ?= --jobs $(JOBS) $(BATS_EXTRA_ARGS) --verbose-run | ||||||
|  | COVERAGE_DIR ?= $(BUILDDIR)/coverage | ||||||
|  |  | ||||||
|  |  | ||||||
|  | all: binprogs library conf completion man data | ||||||
| binprogs: $(BINPROGS) | binprogs: $(BINPROGS) | ||||||
| library: $(LIBRARY) | library: $(LIBRARY) | ||||||
| completion: $(COMPLETIONS) | completion: $(COMPLETIONS) | ||||||
| @@ -91,15 +100,22 @@ $(eval $(call buildInScript,build/bin,src/,.in,755)) | |||||||
| $(eval $(call buildInScript,build/lib,src/lib/,,644)) | $(eval $(call buildInScript,build/lib,src/lib/,,644)) | ||||||
| $(foreach completion,$(wildcard contrib/completion/*),$(eval $(call buildInScript,build/$(completion),$(completion)/,.in,444))) | $(foreach completion,$(wildcard contrib/completion/*),$(eval $(call buildInScript,build/$(completion),$(completion)/,.in,444))) | ||||||
|  |  | ||||||
| $(BUILDDIR)/doc/man/%: doc/man/%.asciidoc doc/asciidoc.conf doc/man/include/footer.asciidoc | $(BUILDDIR)/doc/man/%: doc/man/%.asciidoc doc/man/include/footer.asciidoc | ||||||
| 	$(GEN_MSG) | 	$(GEN_MSG) | ||||||
| 	@mkdir -p $(BUILDDIR)/doc/man | 	@mkdir -p $(BUILDDIR)/doc/man | ||||||
| 	@a2x --no-xmllint --asciidoc-opts="-f doc/asciidoc.conf" -d manpage -f manpage --destination-dir=$(BUILDDIR)/doc/man -a pkgdatadir=$(DATADIR) $< | 	@asciidoctor --backend=manpage --destination-dir=$(BUILDDIR)/doc/man --attribute pkgdatadir=$(DATADIR) $< | ||||||
|  |  | ||||||
| conf: | conf: | ||||||
| 	@install -d $(BUILDDIR)/makepkg.conf.d $(BUILDDIR)/pacman.conf.d | 	@install -d $(BUILDDIR)/makepkg.conf.d | ||||||
| 	@cp -a $(MAKEPKG_CONFIGS) $(BUILDDIR)/makepkg.conf.d | 	@cp -ra $(MAKEPKG_CONFIGS) $(BUILDDIR)/makepkg.conf.d | ||||||
|  | 	@install -d $(BUILDDIR)/pacman.conf.d | ||||||
| 	@cp -a $(PACMAN_CONFIGS) $(BUILDDIR)/pacman.conf.d | 	@cp -a $(PACMAN_CONFIGS) $(BUILDDIR)/pacman.conf.d | ||||||
|  | 	@install -d $(BUILDDIR)/git.conf.d | ||||||
|  | 	@cp -a $(GIT_CONFIGS) $(BUILDDIR)/git.conf.d | ||||||
|  |  | ||||||
|  | data: | ||||||
|  | 	@install -d $(BUILDDIR)/data | ||||||
|  | 	@cp -ra $(DATA_FILES) $(BUILDDIR)/data | ||||||
|  |  | ||||||
| clean: | clean: | ||||||
| 	rm -rf $(BUILDDIR) | 	rm -rf $(BUILDDIR) | ||||||
| @@ -111,8 +127,11 @@ install: all | |||||||
| 	install -dm0755 $(DESTDIR)$(DATADIR)/pacman.conf.d | 	install -dm0755 $(DESTDIR)$(DATADIR)/pacman.conf.d | ||||||
| 	install -m0755 ${BINPROGS} $(DESTDIR)$(PREFIX)/bin | 	install -m0755 ${BINPROGS} $(DESTDIR)$(PREFIX)/bin | ||||||
| 	install -dm0755 $(DESTDIR)$(DATADIR)/lib | 	install -dm0755 $(DESTDIR)$(DATADIR)/lib | ||||||
|  | 	install -dm0755 $(DESTDIR)$(DATADIR)/data | ||||||
| 	cp -ra $(BUILDDIR)/lib/* $(DESTDIR)$(DATADIR)/lib | 	cp -ra $(BUILDDIR)/lib/* $(DESTDIR)$(DATADIR)/lib | ||||||
| 	for conf in $(notdir $(MAKEPKG_CONFIGS)); do install -Dm0644 $(BUILDDIR)/makepkg.conf.d/$$conf $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done | 	cp -a $(BUILDDIR)/git.conf.d -t $(DESTDIR)$(DATADIR) | ||||||
|  | 	cp -ra $(BUILDDIR)/makepkg.conf.d -t $(DESTDIR)$(DATADIR) | ||||||
|  | 	cp -ra $(BUILDDIR)/data -t $(DESTDIR)$(DATADIR) | ||||||
| 	for conf in $(notdir $(PACMAN_CONFIGS)); do install -Dm0644 $(BUILDDIR)/pacman.conf.d/$$conf $(DESTDIR)$(DATADIR)/pacman.conf.d/$${conf##*/}; done | 	for conf in $(notdir $(PACMAN_CONFIGS)); do install -Dm0644 $(BUILDDIR)/pacman.conf.d/$$conf $(DESTDIR)$(DATADIR)/pacman.conf.d/$${conf##*/}; done | ||||||
| 	for a in ${SETARCH_ALIASES}; do install -m0644 $$a -t $(DESTDIR)$(DATADIR)/setarch-aliases.d; done | 	for a in ${SETARCH_ALIASES}; do install -m0644 $$a -t $(DESTDIR)$(DATADIR)/setarch-aliases.d; done | ||||||
| 	for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done | 	for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done | ||||||
| @@ -129,7 +148,9 @@ uninstall: | |||||||
| 	for f in $(notdir $(BINPROGS)); do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done | 	for f in $(notdir $(BINPROGS)); do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done | ||||||
| 	for f in $(notdir $(LIBRARY)); do rm -f $(DESTDIR)$(DATADIR)/lib/$$f; done | 	for f in $(notdir $(LIBRARY)); do rm -f $(DESTDIR)$(DATADIR)/lib/$$f; done | ||||||
| 	rm -rf $(DESTDIR)$(DATADIR)/lib | 	rm -rf $(DESTDIR)$(DATADIR)/lib | ||||||
| 	for conf in $(notdir $(MAKEPKG_CONFIGS)); do rm -f $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done | 	rm -rf $(DESTDIR)$(DATADIR)/git.conf.d | ||||||
|  | 	rm -rf $(DESTDIR)$(DATADIR)/makepkg.conf.d | ||||||
|  | 	rm -rf $(DESTDIR)$(DATADIR)/data | ||||||
| 	for conf in $(notdir $(PACMAN_CONFIGS)); do rm -f $(DESTDIR)$(DATADIR)/pacman.conf.d/$${conf##*/}; done | 	for conf in $(notdir $(PACMAN_CONFIGS)); do rm -f $(DESTDIR)$(DATADIR)/pacman.conf.d/$${conf##*/}; done | ||||||
| 	for f in $(notdir $(SETARCH_ALIASES)); do rm -f $(DESTDIR)$(DATADIR)/setarch-aliases.d/$$f; done | 	for f in $(notdir $(SETARCH_ALIASES)); do rm -f $(DESTDIR)$(DATADIR)/setarch-aliases.d/$$f; done | ||||||
| 	for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done | 	for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done | ||||||
| @@ -141,11 +162,11 @@ uninstall: | |||||||
| 	for manfile in $(notdir $(MANS)); do rm -f $(DESTDIR)$(MANDIR)/man$${manfile##*.}/$${manfile}; done; | 	for manfile in $(notdir $(MANS)); do rm -f $(DESTDIR)$(MANDIR)/man$${manfile##*.}/$${manfile}; done; | ||||||
| 	rmdir --ignore-fail-on-non-empty \ | 	rmdir --ignore-fail-on-non-empty \ | ||||||
| 		$(DESTDIR)$(DATADIR)/setarch-aliases.d \ | 		$(DESTDIR)$(DATADIR)/setarch-aliases.d \ | ||||||
| 		$(DESTDIR)$(DATADIR)/makepkg.conf.d \ |  | ||||||
| 		$(DESTDIR)$(DATADIR)/pacman.conf.d \ | 		$(DESTDIR)$(DATADIR)/pacman.conf.d \ | ||||||
| 		$(DESTDIR)$(DATADIR) | 		$(DESTDIR)$(DATADIR) | ||||||
|  |  | ||||||
| tag: | tag: | ||||||
|  | 	git cliff --strip=all --unreleased | ||||||
| 	@echo "current version: v$(V)" | 	@echo "current version: v$(V)" | ||||||
| 	@read -r -p "tag version: v" VERSION && \ | 	@read -r -p "tag version: v" VERSION && \ | ||||||
| 	sed -E "s|^V=.+|V=$$VERSION|" -i Makefile && \ | 	sed -E "s|^V=.+|V=$$VERSION|" -i Makefile && \ | ||||||
| @@ -153,14 +174,25 @@ tag: | |||||||
| 	git tag --sign --message "Version v$$VERSION" v$$VERSION | 	git tag --sign --message "Version v$$VERSION" v$$VERSION | ||||||
|  |  | ||||||
| release: dist | release: dist | ||||||
| 	glab release create v$(V) devtools-$(V).tar.gz* | 	git push --tags origin master | ||||||
|  | 	git cliff --version >/dev/null | ||||||
|  | 	GITLAB_HOST=gitlab.archlinux.org glab release create v$(V) devtools-$(V).tar.gz* --milestone v$(V) --notes-file <(git cliff --strip=all --latest) | ||||||
|  |  | ||||||
| dist: | dist: | ||||||
| 	git archive --format=tar --prefix=devtools-$(V)/ v$(V) | gzip > devtools-$(V).tar.gz | 	git archive --format=tar --prefix=devtools-$(V)/ v$(V) | gzip > devtools-$(V).tar.gz | ||||||
| 	gpg --detach-sign --use-agent devtools-$(V).tar.gz | 	gpg --detach-sign --use-agent devtools-$(V).tar.gz | ||||||
|  |  | ||||||
|  | test: binprogs library conf completion man | ||||||
|  | 	@mkdir -p $(COVERAGE_DIR) | ||||||
|  | 	bats $(BATS_ARGS) $(CASES) | tee $(COVERAGE_DIR)/bats-report.xml | ||||||
|  |  | ||||||
|  | coverage: binprogs library conf completion man | ||||||
|  | 	kcov --include-path=src $(COVERAGE_DIR) bats $(BATS_ARGS) $(CASES) | ||||||
|  | 	jq -r '. | ["Percent covered", .percent_covered], ["Covered lines", .covered_lines], ["Total lines", .total_lines], ["Percent low", .percent_low], ["Percent high", .percent_high] | @tsv' \ | ||||||
|  | 		$(COVERAGE_DIR)/bats.*/coverage.json | ||||||
|  |  | ||||||
| check: $(BINPROGS_SRC) $(LIBRARY_SRC) contrib/completion/bash/devtools.in config/makepkg/x86_64.conf contrib/makepkg/PKGBUILD.proto | check: $(BINPROGS_SRC) $(LIBRARY_SRC) contrib/completion/bash/devtools.in config/makepkg/x86_64.conf contrib/makepkg/PKGBUILD.proto | ||||||
| 	shellcheck $^ | 	shellcheck $^ | ||||||
|  |  | ||||||
| .PHONY: all binprogs library completion conf man clean install uninstall tag dist upload check | .PHONY: all binprogs library completion conf man data clean install uninstall tag dist upload test coverage check | ||||||
| .DELETE_ON_ERROR: | .DELETE_ON_ERROR: | ||||||
|   | |||||||
							
								
								
									
										41
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								README.md
									
									
									
									
									
								
							| @@ -23,6 +23,34 @@ will automatically build the project and proxy all calls to the local build dire | |||||||
| ./test/bin/pkgctl --help | ./test/bin/pkgctl --help | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | ### Commit messages | ||||||
|  |  | ||||||
|  | All commits must follow [conventional commits](https://www.conventionalcommits.org). | ||||||
|  |  | ||||||
|  | The following groups are allowed: | ||||||
|  |  | ||||||
|  | - chore | ||||||
|  | - feat | ||||||
|  | - fix | ||||||
|  | - doc | ||||||
|  | - perf | ||||||
|  | - test | ||||||
|  |  | ||||||
|  | To override the scope for the changelog entry use the `Component:` trailer. | ||||||
|  |  | ||||||
|  | Example: | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | feat(db): yay mega cool feature | ||||||
|  |  | ||||||
|  | Very long and useful description. | ||||||
|  |  | ||||||
|  | Fixes #1 | ||||||
|  | Fixes #2 | ||||||
|  |  | ||||||
|  | Component: pkgctl db remove | ||||||
|  | ``` | ||||||
|  |  | ||||||
| ## Releasing | ## Releasing | ||||||
|  |  | ||||||
| 1. bump the version in the Makefile | 1. bump the version in the Makefile | ||||||
| @@ -41,10 +69,14 @@ will automatically build the project and proxy all calls to the local build dire | |||||||
| - bash | - bash | ||||||
| - binutils | - binutils | ||||||
| - coreutils | - coreutils | ||||||
|  | - curl | ||||||
| - diffutils | - diffutils | ||||||
|  | - expac | ||||||
| - fakeroot | - fakeroot | ||||||
| - findutils | - findutils | ||||||
|  | - glow | ||||||
| - grep | - grep | ||||||
|  | - gum | ||||||
| - jq | - jq | ||||||
| - ncurses | - ncurses | ||||||
| - openssh | - openssh | ||||||
| @@ -58,11 +90,18 @@ will automatically build the project and proxy all calls to the local build dire | |||||||
| - mercurial | - mercurial | ||||||
| - subversion | - subversion | ||||||
|  |  | ||||||
|  | ### Optional Dependencies | ||||||
|  |  | ||||||
|  | - bat (pretty printing) | ||||||
|  | - nvchecker (version checking) | ||||||
|  | - reuse (license compliance) | ||||||
|  |  | ||||||
| ### Development Dependencies | ### Development Dependencies | ||||||
|  |  | ||||||
| - asciidoc | - asciidoctor | ||||||
| - make | - make | ||||||
| - shellcheck | - shellcheck | ||||||
|  | - bats | ||||||
|  |  | ||||||
| ## License | ## License | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										45
									
								
								cliff.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								cliff.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | |||||||
|  | [changelog] | ||||||
|  | header = "# Changelog\n\n" | ||||||
|  | body = """ | ||||||
|  | {%- if version -%} | ||||||
|  |     ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} | ||||||
|  | {%- else -%} | ||||||
|  |     ## [unreleased] | ||||||
|  | {%- endif %} | ||||||
|  | {% for group, commits in commits | group_by(attribute="group") %} | ||||||
|  |     ### {{ group | upper_first }} | ||||||
|  |     {% for commit in commits | sort(attribute="message") %} | ||||||
|  | 		- {% set component = commit.footers | filter(attribute="token", value="Component") | map(attribute="value") | join(sep=", ") %} | ||||||
|  | 		{%- if component %}{{ component }}: {% elif commit.scope %}{{ commit.scope }}: {% endif %} | ||||||
|  | 		{{- commit.message | upper_first }} | ||||||
|  | 		{%- if commit.breaking %} (breaking){% endif %} | ||||||
|  | 		{%- set fixes = commit.footers | filter(attribute="token", value="Fixes") %} | ||||||
|  | 		{%- for fix in fixes %}{% if fix.separator|trim == '#' %}{{ fix.separator }}{{ fix.value }}{% endif %}{% endfor %} | ||||||
|  |     {%- endfor %} | ||||||
|  | {% endfor %} | ||||||
|  |  | ||||||
|  | """ | ||||||
|  | footer = "" | ||||||
|  |  | ||||||
|  | # remove the leading and trailing whitespaces from the template | ||||||
|  | trim = true | ||||||
|  |  | ||||||
|  | [git] | ||||||
|  | # allow only conventional commits | ||||||
|  | # https://www.conventionalcommits.org | ||||||
|  | conventional_commits = true | ||||||
|  | # regex for parsing and grouping commits | ||||||
|  | commit_parsers = [ | ||||||
|  |     { message = "^chore\\(release\\): version", skip = true}, | ||||||
|  |     { message = "^feat", group = "Features"}, | ||||||
|  |     { message = "^fix", group = "Bug Fixes"}, | ||||||
|  |     { message = "^doc", group = "Documentation"}, | ||||||
|  |     { message = "^perf", group = "Performance"}, | ||||||
|  |     { message = "^test", group = "Testing"}, | ||||||
|  |     { message = "^chore", group = "Miscellaneous Tasks"}, | ||||||
|  |     { body = ".*security", group = "Security"}, | ||||||
|  | ] | ||||||
|  | # filter out the commits that are not matched by commit parsers | ||||||
|  | filter_commits = false | ||||||
|  | # regex for matching git tags | ||||||
|  | tag_pattern = "^v[0-9]+\\.[0-9]+\\.[0-9]+.*" | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/applypatch-msg
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/applypatch-msg
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/commit-msg
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/commit-msg
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/post-applypatch
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/post-applypatch
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/post-checkout
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/post-checkout
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/post-commit
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/post-commit
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/post-merge
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/post-merge
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/pre-applypatch
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/pre-applypatch
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/pre-commit
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/pre-commit
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/pre-merge-commit
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/pre-merge-commit
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/pre-push
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/pre-push
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/pre-rebase
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/pre-rebase
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										1
									
								
								config/git/template/hooks/prepare-commit-msg
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								config/git/template/hooks/prepare-commit-msg
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | #!/bin/sh | ||||||
							
								
								
									
										29
									
								
								config/git/template/info/exclude
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								config/git/template/info/exclude
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | /pkg | ||||||
|  | /src | ||||||
|  | /*/ | ||||||
|  | !/keys/ | ||||||
|  | !/LICENSES/ | ||||||
|  |  | ||||||
|  | /*.log | ||||||
|  | /*.tar.* | ||||||
|  | /*.tar | ||||||
|  | /*.tgz | ||||||
|  | /*.zst | ||||||
|  | /*.gz | ||||||
|  | /*.xz | ||||||
|  | /*.bz2 | ||||||
|  | /*.zip | ||||||
|  | /*.xpi | ||||||
|  | /*.jar | ||||||
|  | /*.whl | ||||||
|  | /*.war | ||||||
|  | /*.deb | ||||||
|  | /*.ttf | ||||||
|  | /*.dat | ||||||
|  | /*.iso | ||||||
|  | /*.asc | ||||||
|  | /*.sig | ||||||
|  | /*.signature | ||||||
|  | /*.sign | ||||||
|  | /*.SHA256SUMS | ||||||
|  | /*.sha256 | ||||||
							
								
								
									
										22
									
								
								config/makepkg/conf.d/fortran.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								config/makepkg/conf.d/fortran.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | #!/hint/bash | ||||||
|  | # shellcheck disable=2034 | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # /etc/makepkg.conf.d/fortran.conf | ||||||
|  | # | ||||||
|  |  | ||||||
|  | ######################################################################### | ||||||
|  | # FORTRAN LANGUAGE SUPPORT | ||||||
|  | ######################################################################### | ||||||
|  |  | ||||||
|  | # Flags used for the Fortran compiler, similar in spirit to CFLAGS. Read | ||||||
|  | # linkman:gfortran[1] for more details on the available flags. | ||||||
|  | FFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt \ | ||||||
|  |         -Wp,-D_FORTIFY_SOURCE=3 -fstack-clash-protection -fcf-protection \ | ||||||
|  |         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" | ||||||
|  | FCFLAGS="$FFLAGS" | ||||||
|  |  | ||||||
|  | # Additional compiler flags appended to `FFLAGS` and `FCFLAGS` for use in debugging. Usually | ||||||
|  | # this would include: ``-g''. Read linkman:gfortran[1] for more details on the wide | ||||||
|  | # variety of compiler flags available. | ||||||
|  | DEBUG_FFLAGS="-g" | ||||||
							
								
								
									
										19
									
								
								config/makepkg/conf.d/rust.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								config/makepkg/conf.d/rust.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | #!/hint/bash | ||||||
|  | # shellcheck disable=2034 | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # /etc/makepkg.conf.d/rust.conf | ||||||
|  | # | ||||||
|  |  | ||||||
|  | ######################################################################### | ||||||
|  | # RUST LANGUAGE SUPPORT | ||||||
|  | ######################################################################### | ||||||
|  |  | ||||||
|  | # Flags used for the Rust compiler, similar in spirit to CFLAGS. Read | ||||||
|  | # linkman:rustc[1] for more details on the available flags. | ||||||
|  | RUSTFLAGS="-C force-frame-pointers=yes" | ||||||
|  |  | ||||||
|  | # Additional compiler flags appended to `RUSTFLAGS` for use in debugging. | ||||||
|  | # Usually this would include: ``-C debuginfo=2''. Read linkman:rustc[1] for | ||||||
|  | # more details on the available flags. | ||||||
|  | DEBUG_RUSTFLAGS="-C debuginfo=2" | ||||||
| @@ -25,7 +25,7 @@ DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u' | |||||||
|  |  | ||||||
| #-- The package required by makepkg to download VCS sources | #-- The package required by makepkg to download VCS sources | ||||||
| #  Format: 'protocol::package' | #  Format: 'protocol::package' | ||||||
| VCSCLIENTS=('bzr::bzr' | VCSCLIENTS=('bzr::breezy' | ||||||
|             'fossil::fossil' |             'fossil::fossil' | ||||||
|             'git::git' |             'git::git' | ||||||
|             'hg::mercurial' |             'hg::mercurial' | ||||||
| @@ -41,18 +41,18 @@ CHOST="x86_64-pc-linux-gnu" | |||||||
| #-- Compiler and Linker Flags | #-- Compiler and Linker Flags | ||||||
| #CPPFLAGS="" | #CPPFLAGS="" | ||||||
| CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \ | CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \ | ||||||
|         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ |         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \ | ||||||
|         -fstack-clash-protection -fcf-protection" |         -fstack-clash-protection -fcf-protection \ | ||||||
|  |         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" | ||||||
| CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS" | CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS" | ||||||
| LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" | LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \ | ||||||
|  |          -Wl,-z,pack-relative-relocs" | ||||||
| LTOFLAGS="-flto=auto" | LTOFLAGS="-flto=auto" | ||||||
| RUSTFLAGS="" |  | ||||||
| #-- Make Flags: change this for DistCC/SMP systems | #-- Make Flags: change this for DistCC/SMP systems | ||||||
| #MAKEFLAGS="-j2" | #MAKEFLAGS="-j2" | ||||||
| #-- Debugging flags | #-- Debugging flags | ||||||
| DEBUG_CFLAGS="-g" | DEBUG_CFLAGS="-g" | ||||||
| DEBUG_CXXFLAGS="$DEBUG_CFLAGS" | DEBUG_CXXFLAGS="$DEBUG_CFLAGS" | ||||||
| DEBUG_RUSTFLAGS="-C debuginfo=2" |  | ||||||
|  |  | ||||||
| ######################################################################### | ######################################################################### | ||||||
| # BUILD ENVIRONMENT | # BUILD ENVIRONMENT | ||||||
| @@ -81,7 +81,7 @@ BUILDENV=(!distcc color !ccache check !sign) | |||||||
| #   These are default values for the options=() settings | #   These are default values for the options=() settings | ||||||
| ######################################################################### | ######################################################################### | ||||||
| # | # | ||||||
| # Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto) | # Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto !autodeps) | ||||||
| #  A negated option will do the opposite of the comments below. | #  A negated option will do the opposite of the comments below. | ||||||
| # | # | ||||||
| #-- strip:      Strip symbols from binaries/libraries | #-- strip:      Strip symbols from binaries/libraries | ||||||
| @@ -93,6 +93,7 @@ BUILDENV=(!distcc color !ccache check !sign) | |||||||
| #-- purge:      Remove files specified by PURGE_TARGETS | #-- purge:      Remove files specified by PURGE_TARGETS | ||||||
| #-- debug:      Add debugging flags as specified in DEBUG_* variables | #-- debug:      Add debugging flags as specified in DEBUG_* variables | ||||||
| #-- lto:        Add compile flags for building with link time optimization | #-- lto:        Add compile flags for building with link time optimization | ||||||
|  | #-- autodeps:   Automatically add depends/provides | ||||||
| # | # | ||||||
| OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge debug lto) | OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge debug lto) | ||||||
|  |  | ||||||
| @@ -112,6 +113,8 @@ DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) | |||||||
| PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) | PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) | ||||||
| #-- Directory to store source code in for debug packages | #-- Directory to store source code in for debug packages | ||||||
| DBGSRCDIR="/usr/src/debug" | DBGSRCDIR="/usr/src/debug" | ||||||
|  | #-- Prefix and directories for library autodeps | ||||||
|  | LIB_DIRS=('lib:usr/lib' 'lib32:usr/lib32') | ||||||
|  |  | ||||||
| ######################################################################### | ######################################################################### | ||||||
| # PACKAGE OUTPUT | # PACKAGE OUTPUT | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								config/makepkg/x86_64.conf.d/fortran.conf
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								config/makepkg/x86_64.conf.d/fortran.conf
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | ../conf.d/fortran.conf | ||||||
							
								
								
									
										1
									
								
								config/makepkg/x86_64.conf.d/rust.conf
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								config/makepkg/x86_64.conf.d/rust.conf
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | ../conf.d/rust.conf | ||||||
| @@ -25,7 +25,7 @@ DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u' | |||||||
|  |  | ||||||
| #-- The package required by makepkg to download VCS sources | #-- The package required by makepkg to download VCS sources | ||||||
| #  Format: 'protocol::package' | #  Format: 'protocol::package' | ||||||
| VCSCLIENTS=('bzr::bzr' | VCSCLIENTS=('bzr::breezy' | ||||||
|             'fossil::fossil' |             'fossil::fossil' | ||||||
|             'git::git' |             'git::git' | ||||||
|             'hg::mercurial' |             'hg::mercurial' | ||||||
| @@ -41,18 +41,18 @@ CHOST="x86_64-pc-linux-gnu" | |||||||
| #-- Compiler and Linker Flags | #-- Compiler and Linker Flags | ||||||
| #CPPFLAGS="" | #CPPFLAGS="" | ||||||
| CFLAGS="-march=x86-64-v3 -mtune=generic -O2 -pipe -fno-plt -fexceptions \ | CFLAGS="-march=x86-64-v3 -mtune=generic -O2 -pipe -fno-plt -fexceptions \ | ||||||
|         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ |         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \ | ||||||
|         -fstack-clash-protection -fcf-protection" |         -fstack-clash-protection -fcf-protection \ | ||||||
|  |         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" | ||||||
| CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS" | CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS" | ||||||
| LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" | LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \ | ||||||
|  |          -Wl,-z,pack-relative-relocs" | ||||||
| LTOFLAGS="-flto=auto" | LTOFLAGS="-flto=auto" | ||||||
| RUSTFLAGS="" |  | ||||||
| #-- Make Flags: change this for DistCC/SMP systems | #-- Make Flags: change this for DistCC/SMP systems | ||||||
| #MAKEFLAGS="-j2" | #MAKEFLAGS="-j2" | ||||||
| #-- Debugging flags | #-- Debugging flags | ||||||
| DEBUG_CFLAGS="-g" | DEBUG_CFLAGS="-g" | ||||||
| DEBUG_CXXFLAGS="$DEBUG_CFLAGS" | DEBUG_CXXFLAGS="$DEBUG_CFLAGS" | ||||||
| DEBUG_RUSTFLAGS="-C debuginfo=2" |  | ||||||
|  |  | ||||||
| ######################################################################### | ######################################################################### | ||||||
| # BUILD ENVIRONMENT | # BUILD ENVIRONMENT | ||||||
| @@ -81,7 +81,7 @@ BUILDENV=(!distcc color !ccache check !sign) | |||||||
| #   These are default values for the options=() settings | #   These are default values for the options=() settings | ||||||
| ######################################################################### | ######################################################################### | ||||||
| # | # | ||||||
| # Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto) | # Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto !autodeps) | ||||||
| #  A negated option will do the opposite of the comments below. | #  A negated option will do the opposite of the comments below. | ||||||
| # | # | ||||||
| #-- strip:      Strip symbols from binaries/libraries | #-- strip:      Strip symbols from binaries/libraries | ||||||
| @@ -93,6 +93,7 @@ BUILDENV=(!distcc color !ccache check !sign) | |||||||
| #-- purge:      Remove files specified by PURGE_TARGETS | #-- purge:      Remove files specified by PURGE_TARGETS | ||||||
| #-- debug:      Add debugging flags as specified in DEBUG_* variables | #-- debug:      Add debugging flags as specified in DEBUG_* variables | ||||||
| #-- lto:        Add compile flags for building with link time optimization | #-- lto:        Add compile flags for building with link time optimization | ||||||
|  | #-- autodeps:   Automatically add depends/provides | ||||||
| # | # | ||||||
| OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge debug lto) | OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge debug lto) | ||||||
|  |  | ||||||
| @@ -112,6 +113,8 @@ DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) | |||||||
| PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) | PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) | ||||||
| #-- Directory to store source code in for debug packages | #-- Directory to store source code in for debug packages | ||||||
| DBGSRCDIR="/usr/src/debug" | DBGSRCDIR="/usr/src/debug" | ||||||
|  | #-- Prefix and directories for library autodeps | ||||||
|  | LIB_DIRS=('lib:usr/lib' 'lib32:usr/lib32') | ||||||
|  |  | ||||||
| ######################################################################### | ######################################################################### | ||||||
| # PACKAGE OUTPUT | # PACKAGE OUTPUT | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								config/makepkg/x86_64_v3.conf.d/fortran.conf
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								config/makepkg/x86_64_v3.conf.d/fortran.conf
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | ../conf.d/fortran.conf | ||||||
							
								
								
									
										1
									
								
								config/makepkg/x86_64_v3.conf.d/rust.conf
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								config/makepkg/x86_64_v3.conf.d/rust.conf
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | ../conf.d/rust.conf | ||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
| @@ -36,6 +36,8 @@ NoProgressBar | |||||||
| #CheckSpace | #CheckSpace | ||||||
| VerbosePkgLists | VerbosePkgLists | ||||||
| ParallelDownloads = 5 | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
| # By default, pacman accepts packages signed by keys that its local keyring | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
| # trusts (see pacman-key and its man page), as well as unsigned packages. | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|   | |||||||
							
								
								
									
										114
									
								
								config/pacman/universe.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								config/pacman/universe.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | |||||||
|  | # | ||||||
|  | # /etc/pacman.conf | ||||||
|  | # | ||||||
|  | # See the pacman.conf(5) manpage for option and repository directives | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # GENERAL OPTIONS | ||||||
|  | # | ||||||
|  | [options] | ||||||
|  | # The following paths are commented out with their default values listed. | ||||||
|  | # If you wish to use different paths, uncomment and update the paths. | ||||||
|  | #RootDir     = / | ||||||
|  | #DBPath      = /var/lib/pacman/ | ||||||
|  | #CacheDir    = /var/cache/pacman/pkg/ | ||||||
|  | #LogFile     = /var/log/pacman.log | ||||||
|  | #GPGDir      = /etc/pacman.d/gnupg/ | ||||||
|  | #HookDir     = /etc/pacman.d/hooks/ | ||||||
|  | HoldPkg     = pacman glibc | ||||||
|  | #XferCommand = /usr/bin/curl -L -C - -f -o %o %u | ||||||
|  | #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u | ||||||
|  | #CleanMethod = KeepInstalled | ||||||
|  | Architecture = auto | ||||||
|  |  | ||||||
|  | # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup | ||||||
|  | #IgnorePkg   = | ||||||
|  | #IgnoreGroup = | ||||||
|  |  | ||||||
|  | #NoUpgrade   = | ||||||
|  | #NoExtract   = | ||||||
|  |  | ||||||
|  | # Misc options | ||||||
|  | #UseSyslog | ||||||
|  | #Color | ||||||
|  | NoProgressBar | ||||||
|  | # We cannot check disk space from within a chroot environment | ||||||
|  | #CheckSpace | ||||||
|  | VerbosePkgLists | ||||||
|  | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
|  | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
|  | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|  | SigLevel    = Required DatabaseOptional | ||||||
|  | LocalFileSigLevel = Optional | ||||||
|  | #RemoteFileSigLevel = Required | ||||||
|  |  | ||||||
|  | # NOTE: You must run `pacman-key --init` before first using pacman; the local | ||||||
|  | # keyring can then be populated with the keys of all official Arch Linux | ||||||
|  | # packagers with `pacman-key --populate archlinux`. | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # REPOSITORIES | ||||||
|  | #   - can be defined here or included from another file | ||||||
|  | #   - pacman will search repositories in the order defined here | ||||||
|  | #   - local/custom mirrors can be added here or in separate files | ||||||
|  | #   - repositories listed first will take precedence when packages | ||||||
|  | #     have identical names, regardless of version number | ||||||
|  | #   - URLs will have $repo replaced by the name of the current repo | ||||||
|  | #   - URLs will have $arch replaced by the name of the architecture | ||||||
|  | # | ||||||
|  | # Repository entries are of the format: | ||||||
|  | #       [repo-name] | ||||||
|  | #       Server = ServerName | ||||||
|  | #       Include = IncludePath | ||||||
|  | # | ||||||
|  | # The header [repo-name] is crucial - it must be present and | ||||||
|  | # uncommented to enable the repo. | ||||||
|  | # | ||||||
|  |  | ||||||
|  | # The testing repositories are disabled by default. To enable, uncomment the | ||||||
|  | # repo name header and Include lines. You can add preferred servers immediately | ||||||
|  | # after the header, and they will be used before the default mirrors. | ||||||
|  |  | ||||||
|  | [gnome-unstable] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [kde-unstable] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [core-staging] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [core-testing] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [core] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [extra-staging] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [extra-testing] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [extra] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | # If you want to run 32 bit applications on your x86_64 system, | ||||||
|  | # enable the multilib repositories as required here. | ||||||
|  | [multilib-staging] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [multilib-testing] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [multilib] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | # An example of a custom package repository.  See the pacman manpage for | ||||||
|  | # tips on creating your own repositories. | ||||||
|  | #[custom] | ||||||
|  | #SigLevel = Optional TrustAll | ||||||
|  | #Server = file:///home/custompkgs | ||||||
							
								
								
									
										85
									
								
								config/pacman/unstable.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								config/pacman/unstable.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | |||||||
|  | # | ||||||
|  | # /etc/pacman.conf | ||||||
|  | # | ||||||
|  | # See the pacman.conf(5) manpage for option and repository directives | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # GENERAL OPTIONS | ||||||
|  | # | ||||||
|  | [options] | ||||||
|  | # The following paths are commented out with their default values listed. | ||||||
|  | # If you wish to use different paths, uncomment and update the paths. | ||||||
|  | #RootDir     = / | ||||||
|  | #DBPath      = /var/lib/pacman/ | ||||||
|  | #CacheDir    = /var/cache/pacman/pkg/ | ||||||
|  | #LogFile     = /var/log/pacman.log | ||||||
|  | #GPGDir      = /etc/pacman.d/gnupg/ | ||||||
|  | #HookDir     = /etc/pacman.d/hooks/ | ||||||
|  | HoldPkg     = pacman glibc | ||||||
|  | #XferCommand = /usr/bin/curl -L -C - -f -o %o %u | ||||||
|  | #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u | ||||||
|  | #CleanMethod = KeepInstalled | ||||||
|  | Architecture = auto | ||||||
|  |  | ||||||
|  | # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup | ||||||
|  | #IgnorePkg   = | ||||||
|  | #IgnoreGroup = | ||||||
|  |  | ||||||
|  | #NoUpgrade   = | ||||||
|  | #NoExtract   = | ||||||
|  |  | ||||||
|  | # Misc options | ||||||
|  | #UseSyslog | ||||||
|  | #Color | ||||||
|  | NoProgressBar | ||||||
|  | # We cannot check disk space from within a chroot environment | ||||||
|  | #CheckSpace | ||||||
|  | VerbosePkgLists | ||||||
|  | ParallelDownloads = 5 | ||||||
|  | DownloadUser = alpm | ||||||
|  | #DisableSandbox | ||||||
|  |  | ||||||
|  | # By default, pacman accepts packages signed by keys that its local keyring | ||||||
|  | # trusts (see pacman-key and its man page), as well as unsigned packages. | ||||||
|  | SigLevel    = Required DatabaseOptional | ||||||
|  | LocalFileSigLevel = Optional | ||||||
|  | #RemoteFileSigLevel = Required | ||||||
|  |  | ||||||
|  | # NOTE: You must run `pacman-key --init` before first using pacman; the local | ||||||
|  | # keyring can then be populated with the keys of all official Arch Linux | ||||||
|  | # packagers with `pacman-key --populate archlinux`. | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # REPOSITORIES | ||||||
|  | #   - can be defined here or included from another file | ||||||
|  | #   - pacman will search repositories in the order defined here | ||||||
|  | #   - local/custom mirrors can be added here or in separate files | ||||||
|  | #   - repositories listed first will take precedence when packages | ||||||
|  | #     have identical names, regardless of version number | ||||||
|  | #   - URLs will have $repo replaced by the name of the current repo | ||||||
|  | #   - URLs will have $arch replaced by the name of the architecture | ||||||
|  | # | ||||||
|  | # Repository entries are of the format: | ||||||
|  | #       [repo-name] | ||||||
|  | #       Server = ServerName | ||||||
|  | #       Include = IncludePath | ||||||
|  | # | ||||||
|  | # The header [repo-name] is crucial - it must be present and | ||||||
|  | # uncommented to enable the repo. | ||||||
|  | # | ||||||
|  |  | ||||||
|  | # The testing repositories are disabled by default. To enable, uncomment the | ||||||
|  | # repo name header and Include lines. You can add preferred servers immediately | ||||||
|  | # after the header, and they will be used before the default mirrors. | ||||||
|  |  | ||||||
|  | [gnome-unstable] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | [kde-unstable] | ||||||
|  | Include = /etc/pacman.d/mirrorlist | ||||||
|  |  | ||||||
|  | # An example of a custom package repository.  See the pacman manpage for | ||||||
|  | # tips on creating your own repositories. | ||||||
|  | #[custom] | ||||||
|  | #SigLevel = Optional TrustAll | ||||||
|  | #Server = file:///home/custompkgs | ||||||
| @@ -3,12 +3,21 @@ | |||||||
| # SPDX-License-Identifier: GPL-3.0-or-later | # SPDX-License-Identifier: GPL-3.0-or-later | ||||||
|  |  | ||||||
| _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | ||||||
|  | # shellcheck source=src/lib/valid-build-install.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-build-install.sh | ||||||
| # shellcheck source=src/lib/valid-tags.sh | # shellcheck source=src/lib/valid-tags.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-tags.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-tags.sh | ||||||
| # shellcheck source=src/lib/valid-repos.sh | # shellcheck source=src/lib/valid-repos.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-repos.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-repos.sh | ||||||
|  | # shellcheck source=src/lib/valid-inspect.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-inspect.sh | ||||||
|  | # shellcheck source=src/lib/valid-search.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-search.sh | ||||||
|  | # shellcheck source=src/lib/valid-version.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-version.sh | ||||||
|  | # shellcheck source=src/lib/valid-issue.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-issue.sh | ||||||
|  |  | ||||||
| _binary_arch=${_arch[*]:0:-1} |  | ||||||
| _colors=(never always auto) | _colors=(never always auto) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -22,15 +31,19 @@ _makechrootpkg_args=( | |||||||
| 	-I | 	-I | ||||||
| 	-l | 	-l | ||||||
| 	-n | 	-n | ||||||
|  | 	-t | ||||||
| 	-T | 	-T | ||||||
| 	-U | 	-U | ||||||
|  | 	-x | ||||||
| ) | ) | ||||||
| _makechrootpkg_args_d_opts() { _filedir -d; } | _makechrootpkg_args_d_opts() { _filedir -d; } | ||||||
| _makechrootpkg_args_D_opts() { _filedir -d; } | _makechrootpkg_args_D_opts() { _filedir -d; } | ||||||
| _makechrootpkg_args_r_opts() { _filedir -d; } | _makechrootpkg_args_r_opts() { _filedir -d; } | ||||||
| _makechrootpkg_args_I_opts() { _filedir '*.pkg.tar.*'; } | _makechrootpkg_args_I_opts() { _filedir '*.pkg.tar.*'; } | ||||||
| _makechrootpkg_args_l_opts() { _filedir -d; } | _makechrootpkg_args_l_opts() { _filedir -d; } | ||||||
|  | _makechrootpkg_args_t_opts() { _filedir -d; } | ||||||
| _makechrootpkg_args_U_opts() { :; } | _makechrootpkg_args_U_opts() { :; } | ||||||
|  | _makechrootpkg_args_x_opts() { _devtools_completions_inspect; } | ||||||
| _makechrootpkg() { __devtools_complete _makechrootpkg; } | _makechrootpkg() { __devtools_complete _makechrootpkg; } | ||||||
| complete -F _makechrootpkg makechrootpkg | complete -F _makechrootpkg makechrootpkg | ||||||
|  |  | ||||||
| @@ -38,6 +51,7 @@ complete -F _makechrootpkg makechrootpkg | |||||||
| _makerepropkg_args=( | _makerepropkg_args=( | ||||||
| 	-h | 	-h | ||||||
| 	-d | 	-d | ||||||
|  | 	-n | ||||||
| 	-c | 	-c | ||||||
| 	-M | 	-M | ||||||
| ) | ) | ||||||
| @@ -53,12 +67,14 @@ _mkarchroot_args=( | |||||||
| 	-C | 	-C | ||||||
| 	-M | 	-M | ||||||
| 	-c | 	-c | ||||||
|  | 	-f | ||||||
| 	-h | 	-h | ||||||
| ) | ) | ||||||
| _mkarchroot_args_U_opts() { _filedir '*.pkg.tar.*'; } | _mkarchroot_args_U_opts() { _filedir '*.pkg.tar.*'; } | ||||||
| _mkarchroot_args_C_opts() { _filedir '*.conf'; } | _mkarchroot_args_C_opts() { _filedir '*.conf'; } | ||||||
| _mkarchroot_args_M_opts() { _filedir '*.conf'; } | _mkarchroot_args_M_opts() { _filedir '*.conf'; } | ||||||
| _mkarchroot_args_c_opts() { _filedir -d; } | _mkarchroot_args_c_opts() { _filedir -d; } | ||||||
|  | _mkarchroot_args_f_opts() { _filedir -d; } | ||||||
| _mkarchroot_opts() { | _mkarchroot_opts() { | ||||||
| 	local args | 	local args | ||||||
| 	args=$(__pkgctl_word_count_after_subcommand) | 	args=$(__pkgctl_word_count_after_subcommand) | ||||||
| @@ -119,7 +135,7 @@ _offload_build_args=( | |||||||
| ) | ) | ||||||
| _offload_build_args__repo_opts() { _devtools_completions_build_repo; } | _offload_build_args__repo_opts() { _devtools_completions_build_repo; } | ||||||
| _offload_build_args_r_opts() { _offload_build_args__repo_opts; } | _offload_build_args_r_opts() { _offload_build_args__repo_opts; } | ||||||
| _offload_build_args__arch_opts() { _devtools_completions_arch; } | _offload_build_args__arch_opts() { _devtools_completions_binary_arch; } | ||||||
| _offload_build_args_a_opts() { _offload_build_args__arch_opts; } | _offload_build_args_a_opts() { _offload_build_args__arch_opts; } | ||||||
| _offload_build_args__server_opts() { :; } | _offload_build_args__server_opts() { :; } | ||||||
| _offload_build_args_s_opts() { _offload_build_args__server_opts; } | _offload_build_args_s_opts() { _offload_build_args__server_opts; } | ||||||
| @@ -128,12 +144,16 @@ complete -F _offload_build offload-build | |||||||
|  |  | ||||||
|  |  | ||||||
| _pkgctl_cmds=( | _pkgctl_cmds=( | ||||||
|  | 	aur | ||||||
| 	auth | 	auth | ||||||
| 	build | 	build | ||||||
| 	db | 	db | ||||||
| 	diff | 	diff | ||||||
|  | 	issue | ||||||
|  | 	license | ||||||
| 	release | 	release | ||||||
| 	repo | 	repo | ||||||
|  | 	search | ||||||
| 	version | 	version | ||||||
| ) | ) | ||||||
| _pkgctl_args=( | _pkgctl_args=( | ||||||
| @@ -169,10 +189,14 @@ _pkgctl_build_args=( | |||||||
| 	-o --offload | 	-o --offload | ||||||
| 	-c --clean | 	-c --clean | ||||||
| 	-w --worker | 	-w --worker | ||||||
|  | 	--inspect | ||||||
|  | 	-I --install-to-chroot | ||||||
|  | 	-i --install-to-host | ||||||
|  |  | ||||||
| 	--pkgver | 	--pkgver | ||||||
| 	--pkgrel | 	--pkgrel | ||||||
| 	--rebuild | 	--rebuild | ||||||
|  | 	--update-checksums | ||||||
| 	-e --edit | 	-e --edit | ||||||
|  |  | ||||||
| 	-r --release | 	-r --release | ||||||
| @@ -181,15 +205,23 @@ _pkgctl_build_args=( | |||||||
|  |  | ||||||
| 	-h --help | 	-h --help | ||||||
| ) | ) | ||||||
| _pkgctl_build_args__arch_opts() { _devtools_completions_arch; } | _pkgctl_build_args__arch_opts() { _devtools_completions_binary_arch; } | ||||||
| _pkgctl_build_args__repo_opts() { _devtools_completions_repo; } | _pkgctl_build_args__repo_opts() { _devtools_completions_repo; } | ||||||
| _pkgctl_build_args__worker_opts() { :; } | _pkgctl_build_args__worker_opts() { :; } | ||||||
| _pkgctl_build_args_w_opts() { _pkgctl_build_args__worker_opts; } | _pkgctl_build_args_w_opts() { _pkgctl_build_args__worker_opts; } | ||||||
|  | _pkgctl_build_args__inspect_opts() { _devtools_completions_inspect; } | ||||||
| _pkgctl_build_args__pkgver_opts() { :; } | _pkgctl_build_args__pkgver_opts() { :; } | ||||||
| _pkgctl_build_args__pkgrel_opts() { :; } | _pkgctl_build_args__pkgrel_opts() { :; } | ||||||
|  | _pkgctl_build_args__install_to_host_opts() { _pkgctl_build_completions_install_mode; } | ||||||
|  | _pkgctl_build_args_i_opts() { _pkgctl_build_args__install_to_host_opts; } | ||||||
|  | _pkgctl_build_args__install_to_chroot_opts() { _makechrootpkg_args_I_opts; } | ||||||
|  | _pkgctl_build_args_I_opts() { _pkgctl_build_args__install_to_chroot_opts; } | ||||||
| _pkgctl_build_args__message_opts() { :; } | _pkgctl_build_args__message_opts() { :; } | ||||||
| _pkgctl_build_args_m_opts() { _pkgctl_build_args__message_opts; } | _pkgctl_build_args_m_opts() { _pkgctl_build_args__message_opts; } | ||||||
| _pkgctl_build_opts() { _filedir -d; } | _pkgctl_build_opts() { _filedir -d; } | ||||||
|  | _pkgctl_build_completions_install_mode() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_BUILD_INSTALL[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| _pkgctl_db_cmds=( | _pkgctl_db_cmds=( | ||||||
| @@ -218,9 +250,13 @@ _pkgctl_db_move_opts() { | |||||||
|  |  | ||||||
|  |  | ||||||
| _pkgctl_db_remove_args=( | _pkgctl_db_remove_args=( | ||||||
|  | 	--partial | ||||||
|  | 	--noconfirm | ||||||
| 	-a --arch | 	-a --arch | ||||||
| 	-h --help | 	-h --help | ||||||
| ) | ) | ||||||
|  | _pkgctl_db_remove_args__arch_opts() { _devtools_completions_binary_arch; } | ||||||
|  | _pkgctl_db_remove_args_a_opts() { _pkgctl_db_remove_args__arch_opts; } | ||||||
| _pkgctl_db_remove_opts() { | _pkgctl_db_remove_opts() { | ||||||
| 	local subcommand args | 	local subcommand args | ||||||
| 	subcommand=(db remove) | 	subcommand=(db remove) | ||||||
| @@ -253,8 +289,20 @@ _pkgctl_release_args__repo_opts() { _devtools_completions_repo; } | |||||||
| _pkgctl_release_args_r_opts() { _pkgctl_release_args__repo_opts; } | _pkgctl_release_args_r_opts() { _pkgctl_release_args__repo_opts; } | ||||||
| _pkgctl_release_opts() { _filedir -d; } | _pkgctl_release_opts() { _filedir -d; } | ||||||
|  |  | ||||||
|  | _pkgctl_aur_cmds=( | ||||||
|  | 	drop-from-repo | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_aur_drop_from_repo_args=( | ||||||
|  | 	--no-disown | ||||||
|  | 	-f --force | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  | _pkgctl_aur_drop_from_repo_opts() { _filedir -d; } | ||||||
|  |  | ||||||
|  |  | ||||||
| _pkgctl_repo_cmds=( | _pkgctl_repo_cmds=( | ||||||
|  | 	clean | ||||||
| 	clone | 	clone | ||||||
| 	configure | 	configure | ||||||
| 	create | 	create | ||||||
| @@ -280,6 +328,12 @@ _pkgctl_repo_clone_args__jobs_opts() { :; } | |||||||
| _pkgctl_repo_clone_args_j_opts() { _pkgctl_repo_clone_args__jobs_opts; } | _pkgctl_repo_clone_args_j_opts() { _pkgctl_repo_clone_args__jobs_opts; } | ||||||
| _pkgctl_repo_clone_opts() { _devtools_completions_all_packages; } | _pkgctl_repo_clone_opts() { _devtools_completions_all_packages; } | ||||||
|  |  | ||||||
|  | _pkgctl_repo_clean_args=( | ||||||
|  | 	-i --interactive | ||||||
|  | 	-n --dry-run | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  | _pkgctl_repo_clean_opts() { _filedir -d; } | ||||||
|  |  | ||||||
| _pkgctl_repo_configure_args=( | _pkgctl_repo_configure_args=( | ||||||
| 	--protocol | 	--protocol | ||||||
| @@ -297,7 +351,6 @@ _pkgctl_repo_create_args=( | |||||||
| 	-h --help | 	-h --help | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| _pkgctl_repo_switch_args=( | _pkgctl_repo_switch_args=( | ||||||
| 	--discard-changes | 	--discard-changes | ||||||
| 	-f --force | 	-f --force | ||||||
| @@ -315,13 +368,81 @@ _pkgctl_repo_switch_opts() { | |||||||
| 	fi | 	fi | ||||||
| } | } | ||||||
|  |  | ||||||
|  | _pkgctl_license_cmds=( | ||||||
|  | 	check | ||||||
|  | 	setup | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_license_check_args=( | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_license_check_opts() { _filedir -d; } | ||||||
|  |  | ||||||
|  | _pkgctl_license_setup_args=( | ||||||
|  | 	--no-check | ||||||
|  | 	-f --force | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_license_setup_opts() { _filedir -d; } | ||||||
|  |  | ||||||
|  | _pkgctl_version_cmds=( | ||||||
|  | 	check | ||||||
|  | 	setup | ||||||
|  | 	upgrade | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_version_check_args=( | ||||||
|  | 	-v --verbose | ||||||
|  | 	-h --help | ||||||
|  | 	--json | ||||||
|  | 	-F --format | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_version_check_opts() { _filedir -d; } | ||||||
|  | _pkgctl_version_check_args__format_opts() { _devtools_completions_version_output_format; } | ||||||
|  | _pkgctl_version_check_args_F_opts() { _devtools_completions_version_output_format; } | ||||||
|  |  | ||||||
|  | _pkgctl_version_setup_args=( | ||||||
|  | 	--prefer-platform-api | ||||||
|  | 	--url | ||||||
|  | 	--no-check | ||||||
|  | 	--no-upstream | ||||||
|  | 	-f --force | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_version_setup_opts() { _filedir -d; } | ||||||
|  | _pkgctl_version_setup_args__url_opts() { :; } | ||||||
|  |  | ||||||
|  | _pkgctl_version_upgrade_args=( | ||||||
|  | 	--no-update-checksums | ||||||
|  | 	-v --verbose | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_version_upgrade_opts() { _filedir -d; } | ||||||
|  |  | ||||||
| _pkgctl_repo_web_args=( | _pkgctl_repo_web_args=( | ||||||
|  | 	--print | ||||||
| 	-h --help | 	-h --help | ||||||
| ) | ) | ||||||
| _pkgctl_repo_web_opts() { _filedir -d; } | _pkgctl_repo_web_opts() { _filedir -d; } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | _pkgctl_search_args=( | ||||||
|  | 	--no-default-filter | ||||||
|  | 	--json | ||||||
|  | 	-F --format | ||||||
|  | 	-N --no-line-number | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  | _pkgctl_search_opts() { :; } | ||||||
|  | _pkgctl_search_args__format_opts() { _devtools_completions_search_format; } | ||||||
|  | _pkgctl_search_args_F_opts() { _devtools_completions_search_format; } | ||||||
|  |  | ||||||
|  |  | ||||||
| _pkgctl_diff_args=( | _pkgctl_diff_args=( | ||||||
| 	-l --list | 	-l --list | ||||||
| 	-d --diffoscope | 	-d --diffoscope | ||||||
| @@ -345,6 +466,185 @@ _pkgctl_diff_args__pool_opts() { _filedir -d; } | |||||||
| _pkgctl_diff_args_P_opts() { _pkgctl_diff_args__pool_opts; } | _pkgctl_diff_args_P_opts() { _pkgctl_diff_args__pool_opts; } | ||||||
| _pkgctl_diff_opts() { _devtools_completions_all_packages; } | _pkgctl_diff_opts() { _devtools_completions_all_packages; } | ||||||
|  |  | ||||||
|  | _pkgctl_issue_cmds=( | ||||||
|  | 	close | ||||||
|  | 	comment | ||||||
|  | 	create | ||||||
|  | 	edit | ||||||
|  | 	list | ||||||
|  | 	move | ||||||
|  | 	reopen | ||||||
|  | 	view | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_args=( | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_close_args=( | ||||||
|  | 	-p --package | ||||||
|  | 	-m --message | ||||||
|  | 	-e --edit | ||||||
|  | 	-r --resolution | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_close_opts() { :; } | ||||||
|  | _pkgctl_issue_close_args__package_opts() { _devtools_completions_all_packages; } | ||||||
|  | _pkgctl_issue_close_args_p_opts() { _pkgctl_issue_close_args__package_opts; } | ||||||
|  | _pkgctl_issue_close_args__message_opts() { :; } | ||||||
|  | _pkgctl_issue_close_args_m_opts() { _pkgctl_issue_close_args__message_opts; } | ||||||
|  | _pkgctl_issue_close_args__resolution_opts() { _devtools_completions_issue_resolution; } | ||||||
|  | _pkgctl_issue_close_args_r_opts() { _pkgctl_issue_close_args__resolution_opts; } | ||||||
|  |  | ||||||
|  | _pkgctl_issue_comment_args=( | ||||||
|  | 	-p --package | ||||||
|  | 	-m --message | ||||||
|  | 	-e --edit | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_comment_opts() { :; } | ||||||
|  | _pkgctl_issue_comment_args__package_opts() { _devtools_completions_all_packages; } | ||||||
|  | _pkgctl_issue_comment_args_p_opts() { _pkgctl_issue_comment_args__package_opts; } | ||||||
|  | _pkgctl_issue_comment_args__message_opts() { :; } | ||||||
|  | _pkgctl_issue_comment_args_m_opts() { _pkgctl_issue_comment_args__message_opts; } | ||||||
|  |  | ||||||
|  | _pkgctl_issue_create_args=( | ||||||
|  | 	-p --package | ||||||
|  | 	-t --title | ||||||
|  | 	-F --file | ||||||
|  | 	-e --edit | ||||||
|  | 	-w --web | ||||||
|  | 	--recover | ||||||
|  | 	--confidentiality | ||||||
|  | 	--priority | ||||||
|  | 	--scope | ||||||
|  | 	--severity | ||||||
|  | 	--status | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_create_opts() { :; } | ||||||
|  | _pkgctl_issue_create_args__package_opts() { _devtools_completions_all_packages; } | ||||||
|  | _pkgctl_issue_create_args_p_opts() { _pkgctl_issue_create_args__package_opts; } | ||||||
|  | _pkgctl_issue_create_args__title_opts() { :; } | ||||||
|  | _pkgctl_issue_create_args_t_opts() { _pkgctl_issue_create_args__title_opts; } | ||||||
|  | _pkgctl_issue_create_args__confidentiality_opts() { _devtools_completions_issue_confidentiality; } | ||||||
|  | _pkgctl_issue_create_args__priority_opts() { _devtools_completions_issue_priority; } | ||||||
|  | _pkgctl_issue_create_args__scope_opts() { _devtools_completions_issue_scope; } | ||||||
|  | _pkgctl_issue_create_args__severity_opts() { _devtools_completions_issue_severity; } | ||||||
|  | _pkgctl_issue_create_args__status_opts() { _devtools_completions_issue_status; } | ||||||
|  |  | ||||||
|  | _pkgctl_issue_edit_args=( | ||||||
|  | 	-p --package | ||||||
|  | 	-t --title | ||||||
|  | 	-e --edit | ||||||
|  | 	--recover | ||||||
|  | 	--confidentiality | ||||||
|  | 	--priority | ||||||
|  | 	--resolution | ||||||
|  | 	--scope | ||||||
|  | 	--severity | ||||||
|  | 	--status | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_edit_opts() { :; } | ||||||
|  | _pkgctl_issue_edit_args__package_opts() { _devtools_completions_all_packages; } | ||||||
|  | _pkgctl_issue_edit_args_p_opts() { _pkgctl_issue_edit_args__package_opts; } | ||||||
|  | _pkgctl_issue_edit_args__title_opts() { :; } | ||||||
|  | _pkgctl_issue_edit_args_t_opts() { _pkgctl_issue_edit_args__title_opts; } | ||||||
|  | _pkgctl_issue_edit_args__confidentiality_opts() { _devtools_completions_issue_confidentiality; } | ||||||
|  | _pkgctl_issue_edit_args__priority_opts() { _devtools_completions_issue_priority; } | ||||||
|  | _pkgctl_issue_edit_args__resolution_opts() { _devtools_completions_issue_resolution; } | ||||||
|  | _pkgctl_issue_edit_args__scope_opts() { _devtools_completions_issue_scope; } | ||||||
|  | _pkgctl_issue_edit_args__severity_opts() { _devtools_completions_issue_severity; } | ||||||
|  | _pkgctl_issue_edit_args__status_opts() { _devtools_completions_issue_status; } | ||||||
|  |  | ||||||
|  | _pkgctl_issue_list_args=( | ||||||
|  | 	-g --group | ||||||
|  | 	-w --web | ||||||
|  | 	-A --all | ||||||
|  | 	-c --closed | ||||||
|  | 	-U --unconfirmed | ||||||
|  | 	--search | ||||||
|  | 	--in | ||||||
|  | 	-l --label | ||||||
|  | 	--confidentiality | ||||||
|  | 	--priority | ||||||
|  | 	--resolution | ||||||
|  | 	--scope | ||||||
|  | 	--severity | ||||||
|  | 	--status | ||||||
|  | 	--assignee | ||||||
|  | 	--assigned-to-me | ||||||
|  | 	--author | ||||||
|  | 	--created-by-me | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_list_opts() { _devtools_completions_all_packages; } | ||||||
|  | _pkgctl_issue_list_args__search_opts() { :; } | ||||||
|  | _pkgctl_issue_list_args__in_opts() { _devtools_completions_issue_search_location; } | ||||||
|  | _pkgctl_issue_list_args__label_opts() { :; } | ||||||
|  | _pkgctl_issue_list_args_l_opts() { _pkgctl_issue_list_args__label_opts; } | ||||||
|  | _pkgctl_issue_list_args__confidentiality_opts() { _devtools_completions_issue_confidentiality; } | ||||||
|  | _pkgctl_issue_list_args__priority_opts() { _devtools_completions_issue_priority; } | ||||||
|  | _pkgctl_issue_list_args__resolution_opts() { _devtools_completions_issue_resolution; } | ||||||
|  | _pkgctl_issue_list_args__scope_opts() { _devtools_completions_issue_scope; } | ||||||
|  | _pkgctl_issue_list_args__severity_opts() { _devtools_completions_issue_severity; } | ||||||
|  | _pkgctl_issue_list_args__status_opts() { _devtools_completions_issue_status; } | ||||||
|  | _pkgctl_issue_list_args__assignee_opts() { :; } | ||||||
|  | _pkgctl_issue_list_args__author_opts() { :; } | ||||||
|  |  | ||||||
|  | _pkgctl_issue_move_args=( | ||||||
|  | 	-p --package | ||||||
|  | 	-m --message | ||||||
|  | 	-e --edit | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_move_opts() { | ||||||
|  | 	local subcommand args | ||||||
|  | 	subcommand=(repo switch) | ||||||
|  | 	args=$(__pkgctl_word_count_after_subcommand "${subcommand[@]}") | ||||||
|  |  | ||||||
|  | 	if (( args == 0 )); then | ||||||
|  | 		: | ||||||
|  | 	elif (( args >= 1 )); then | ||||||
|  | 		_devtools_completions_all_packages | ||||||
|  | 	fi | ||||||
|  | } | ||||||
|  | _pkgctl_issue_move_args__package_opts() { _devtools_completions_all_packages; } | ||||||
|  | _pkgctl_issue_move_args_p_opts() { _pkgctl_issue_move_args__package_opts; } | ||||||
|  | _pkgctl_issue_move_args__message_opts() { :; } | ||||||
|  | _pkgctl_issue_move_args_m_opts() { _pkgctl_issue_move_args__message_opts; } | ||||||
|  |  | ||||||
|  | _pkgctl_issue_reopen_args=( | ||||||
|  | 	-p --package | ||||||
|  | 	-m --message | ||||||
|  | 	-e --edit | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_reopen_opts() { :; } | ||||||
|  | _pkgctl_issue_reopen_args__package_opts() { _devtools_completions_all_packages; } | ||||||
|  | _pkgctl_issue_reopen_args_p_opts() { _pkgctl_issue_reopen_args__package_opts; } | ||||||
|  | _pkgctl_issue_reopen_args__message_opts() { :; } | ||||||
|  | _pkgctl_issue_reopen_args_m_opts() { _pkgctl_issue_reopen_args__message_opts; } | ||||||
|  |  | ||||||
|  | _pkgctl_issue_view_args=( | ||||||
|  | 	-p --package | ||||||
|  | 	-c --comments | ||||||
|  | 	-w --web | ||||||
|  | 	-h --help | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_view_opts() { :; } | ||||||
|  | _pkgctl_issue_view_args__package_opts() { _devtools_completions_all_packages; } | ||||||
|  | _pkgctl_issue_view_args_p_opts() { _pkgctl_issue_view_args__package_opts; } | ||||||
|  |  | ||||||
|  |  | ||||||
| _pkgctl_version_args=( | _pkgctl_version_args=( | ||||||
| 	-h --help | 	-h --help | ||||||
| @@ -355,14 +655,17 @@ _devtools_completions_color() { | |||||||
| 	mapfile -t COMPREPLY < <(compgen -W "${_colors[*]}" -- "$cur") | 	mapfile -t COMPREPLY < <(compgen -W "${_colors[*]}" -- "$cur") | ||||||
| } | } | ||||||
| _devtools_completions_arch() { | _devtools_completions_arch() { | ||||||
| 	mapfile -t COMPREPLY < <(compgen -W "${_arch[*]}" -- "$cur") | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_ARCHES[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_binary_arch() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_BINARY_ARCHES[*]}" -- "$cur") | ||||||
| } | } | ||||||
| _devtools_completions_repo() { | _devtools_completions_repo() { | ||||||
| 	local optional=${1:-} | 	local optional=${1:-} | ||||||
| 	mapfile -t COMPREPLY < <(compgen -W "${optional} ${_repos[*]}" -- "$cur") | 	mapfile -t COMPREPLY < <(compgen -W "${optional} ${DEVTOOLS_VALID_REPOS[*]}" -- "$cur") | ||||||
| } | } | ||||||
| _devtools_completions_build_repo() { | _devtools_completions_build_repo() { | ||||||
| 	mapfile -t COMPREPLY < <(compgen -W "${_build_repos[*]}" -- "$cur") | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_BUILDREPOS[*]}" -- "$cur") | ||||||
| } | } | ||||||
| _devtools_completions_all_packages() { | _devtools_completions_all_packages() { | ||||||
| 	mapfile -t COMPREPLY < <(compgen -W "$(pacman -Sql)" -- "$cur") | 	mapfile -t COMPREPLY < <(compgen -W "$(pacman -Sql)" -- "$cur") | ||||||
| @@ -370,6 +673,36 @@ _devtools_completions_all_packages() { | |||||||
| _devtools_completions_protocol() { | _devtools_completions_protocol() { | ||||||
| 	mapfile -t COMPREPLY < <(compgen -W "https" -- "$cur") | 	mapfile -t COMPREPLY < <(compgen -W "https" -- "$cur") | ||||||
| } | } | ||||||
|  | _devtools_completions_inspect() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_INSPECT_MODES[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_search_format() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${valid_search_output_format[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_version_output_format() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_VERSION_OUTPUT_FORMAT[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_issue_severity() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_ISSUE_SEVERITY[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_issue_status() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_ISSUE_STATUS[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_issue_scope() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_ISSUE_SCOPE[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_issue_search_location() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_ISSUE_SEARCH_LOCATION[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_issue_resolution() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_ISSUE_RESOLUTION[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_issue_priority() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_ISSUE_PRIORITY[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  | _devtools_completions_issue_confidentiality() { | ||||||
|  | 	mapfile -t COMPREPLY < <(compgen -W "${DEVTOOLS_VALID_ISSUE_CONFIDENTIALITY[*]}" -- "$cur") | ||||||
|  | } | ||||||
|  |  | ||||||
| __devtools_complete() { | __devtools_complete() { | ||||||
| 	local service=$1 | 	local service=$1 | ||||||
|   | |||||||
| @@ -3,12 +3,21 @@ | |||||||
| # SPDX-License-Identifier: GPL-3.0-or-later | # SPDX-License-Identifier: GPL-3.0-or-later | ||||||
|  |  | ||||||
| _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | ||||||
|  | # shellcheck source=src/lib/valid-build-install.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-build-install.sh | ||||||
| # shellcheck source=src/lib/valid-tags.sh | # shellcheck source=src/lib/valid-tags.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-tags.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-tags.sh | ||||||
| # shellcheck source=src/lib/valid-repos.sh | # shellcheck source=src/lib/valid-repos.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-repos.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-repos.sh | ||||||
|  | # shellcheck source=src/lib/valid-inspect.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-inspect.sh | ||||||
|  | # shellcheck source=src/lib/valid-search.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-search.sh | ||||||
|  | # shellcheck source=src/lib/valid-version.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-version.sh | ||||||
|  | # shellcheck source=src/lib/valid-issue.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-issue.sh | ||||||
|  |  | ||||||
| _binary_arch=${_arch[*]:0:-1} |  | ||||||
| _colors=(never always auto) | _colors=(never always auto) | ||||||
|  |  | ||||||
| _archbuild_args=( | _archbuild_args=( | ||||||
| @@ -35,21 +44,24 @@ _pkgctl_auth_status_args=( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| _pkgctl_build_args=( | _pkgctl_build_args=( | ||||||
| 	"--arch=[Specify architectures to build for (disables auto-detection)]:arch:($_arch[*])" | 	"--arch[Specify architectures to build for (disables auto-detection)]:arch:($DEVTOOLS_VALID_BINARY_ARCHES[*])" | ||||||
| 	"--repo=[Specify a target repository (disables auto-detection)]:repo:($_repos[*])" | 	"--repo[Specify a target repository (disables auto-detection)]:repo:($DEVTOOLS_VALID_REPOS[*])" | ||||||
| 	'(-s --staging)'{-s,--staging}'[Build against the staging counterpart of the auto-detected repo]' | 	'(-s --staging)'{-s,--staging}'[Build against the staging counterpart of the auto-detected repo]' | ||||||
| 	'(-t --testing)'{-t,--testing}'[Build against the testing counterpart of the auto-detected repo]' | 	'(-t --testing)'{-t,--testing}'[Build against the testing counterpart of the auto-detected repo]' | ||||||
| 	'(-o --offload)'{-o,--offload}'[Build on a remote server and transfer artifacts afterwards]' | 	'(-o --offload)'{-o,--offload}'[Build on a remote server and transfer artifacts afterwards]' | ||||||
| 	'(-c --clean)'{-c,--clean}'[Recreate the chroot before building]' | 	'(-c --clean)'{-c,--clean}'[Recreate the chroot before building]' | ||||||
| 	'(-I --install)'{-I,--install}'[Install a package into the working copy of the chroot]:target:_files -g "*.pkg.tar.*(.)"' | 	"--inspect[Spawn an interactive shell to inspect the chroot (never, always, failure)]:inspect:($DEVTOOLS_VALID_INSPECT_MODES[*])" | ||||||
|  | 	'*'{-I,--install-to-chroot}'[Install a package to the working copy of the chroot]:target:_files -g "*.pkg.tar.*(.)"' | ||||||
|  | 	'*'{-i,--install-to-host}"[Install the built packages to the host system]:mode:($DEVTOOLS_VALID_BUILD_INSTALL[*])" | ||||||
| 	'(-w --worker)'{-w,--worker}'[Name of the worker slot, useful for concurrent builds (disables auto-detection)]:slot:' | 	'(-w --worker)'{-w,--worker}'[Name of the worker slot, useful for concurrent builds (disables auto-detection)]:slot:' | ||||||
| 	'--nocheck[Do not run the check() function in the PKGBUILD]' | 	'--nocheck[Do not run the check() function in the PKGBUILD]' | ||||||
| 	'--pkgver=[Set pkgver, reset pkgrel and update checksums]:pkgver:' | 	'--pkgver=[Set pkgver, reset pkgrel and update checksums]:pkgver:' | ||||||
| 	'--pkgrel=[Set pkgrel to a given value]:pkgrel:' | 	'--pkgrel=[Set pkgrel to a given value]:pkgrel:' | ||||||
| 	'--rebuild[Increment the pkgrel variable]' | 	'--rebuild[Increment the pkgrel variable]' | ||||||
|  | 	'--update-checksums[Force computation and update of the checksums (disables auto-detection)]' | ||||||
| 	'(-e --edit)'{-e,--edit}'[Edit the PKGBUILD before building]' | 	'(-e --edit)'{-e,--edit}'[Edit the PKGBUILD before building]' | ||||||
| 	'(-r --release)'{-r,--release}'[Automatically commit, tag and release after building]' | 	'(-r --release)'{-r,--release}'[Automatically commit, tag and release after building]' | ||||||
| 	'(-m --message=)'{-m,--message=}"[Use the given <msg> as the commit message]:message:" | 	'(-m --message)'{-m,--message}"[Use the given <msg> as the commit message]:message:" | ||||||
| 	'(-u --db-update)'{-u,--db-update}'[Automatically update the pacman database as last action]' | 	'(-u --db-update)'{-u,--db-update}'[Automatically update the pacman database as last action]' | ||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
| 	'*:git_dir:_files -/' | 	'*:git_dir:_files -/' | ||||||
| @@ -64,15 +76,17 @@ _pkgctl_db_cmds=( | |||||||
|  |  | ||||||
| _pkgctl_db_move_args=( | _pkgctl_db_move_args=( | ||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
| 	"1:src-repo:($_repos[*])" | 	"1:src-repo:($DEVTOOLS_VALID_REPOS[*])" | ||||||
| 	"2:target-repo:($_repos[*])" | 	"2:target-repo:($DEVTOOLS_VALID_REPOS[*])" | ||||||
| 	'*:pkgbase:_devtools_completions_all_packages' | 	'*:pkgbase:_devtools_completions_all_packages' | ||||||
| ) | ) | ||||||
|  |  | ||||||
| _pkgctl_db_remove_args=( | _pkgctl_db_remove_args=( | ||||||
| 	'(-a --arch=)'{-a,--arch=}"[Override the architecture (disables auto-detection)]:arch:($_arch[*])" | 	'--partial[Remove only partial pkgnames from a split package]' | ||||||
|  | 	'--noconfirm[Bypass any confirmation messages, should only be used with caution]' | ||||||
|  | 	'(-a --arch)'{-a,--arch}"[Override the architecture (disables auto-detection)]:arch:($DEVTOOLS_VALID_BINARY_ARCHES[*])" | ||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
| 	"1:repo:($_repos[*])" | 	"1:repo:($DEVTOOLS_VALID_REPOS[*])" | ||||||
| 	'*:pkgbase:_devtools_completions_all_packages' | 	'*:pkgbase:_devtools_completions_all_packages' | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -80,9 +94,115 @@ _pkgctl_db_update_args=( | |||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_cmds=( | ||||||
|  | 	"pkgctl issue command" | ||||||
|  | 	"close[Close an issue]" | ||||||
|  | 	"comment[Comment on an issue]" | ||||||
|  | 	"create[Create a new issue]" | ||||||
|  | 	"edit[Edit and modify an issue]" | ||||||
|  | 	"list[List project or group issues]" | ||||||
|  | 	"move[Move an issue to another project]" | ||||||
|  | 	"reopen[Reopen a closed issue]" | ||||||
|  | 	"view[Display information about an issue]" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_close_args=( | ||||||
|  | 	'(-p --package)'{-p,--package}'[Interact with <pkgbase> instead of the current directory]:pkgbase:_devtools_completions_all_packages' | ||||||
|  | 	'(-m --message)'{-m,--message}'[Use the provided message as the comment]:message:' | ||||||
|  | 	'(-e --edit)'{-e,--edit}'[Edit the comment using an editor]' | ||||||
|  | 	'(-r --resolution)'{-r,--resolution}"[Set a specific resolution label]:resolution:($DEVTOOLS_VALID_ISSUE_RESOLUTION[*])" | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	"1:issue_iid:" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_comment_args=( | ||||||
|  | 	'(-p --package)'{-p,--package}'[Interact with <pkgbase> instead of the current directory]:pkgbase:_devtools_completions_all_packages' | ||||||
|  | 	'(-m --message)'{-m,--message}'[Use the provided message as the comment]:message:' | ||||||
|  | 	'(-e --edit)'{-e,--edit}'[Edit the comment using an editor]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	"1:issue_iid:" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_create_args=( | ||||||
|  | 	'(-p --package)'{-p,--package}'[Interact with <pkgbase> instead of the current directory]:pkgbase:_devtools_completions_all_packages' | ||||||
|  | 	'(-t --title)'{-t,--title}'[Use the provided title for the issue]:title:' | ||||||
|  | 	'(-F --file)'{-F,--file}'[Take issue description from <file>]:file:_files' | ||||||
|  | 	'(-e --edit)'{-e,--edit}'[Edit the issue title and description using an editor]' | ||||||
|  | 	'(-w --web)'{-w,--web}'[Continue issue creation with the web interface]' | ||||||
|  | 	"--recover[Automatically recover from a failed run]" | ||||||
|  | 	"--confidentiality[Set the issue confidentiality]:confidential:($DEVTOOLS_VALID_ISSUE_CONFIDENTIALITY[*])" | ||||||
|  | 	"--priority[Set the priority label]:priority:($DEVTOOLS_VALID_ISSUE_PRIORITY[*])" | ||||||
|  | 	"--scope[Set the scope label]:scope:($DEVTOOLS_VALID_ISSUE_SCOPE[*])" | ||||||
|  | 	"--severity[Set the severity label]:severity:($DEVTOOLS_VALID_ISSUE_SEVERITY[*])" | ||||||
|  | 	"--status[Set the status label]:status:($DEVTOOLS_VALID_ISSUE_STATUS[*])" | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_edit_args=( | ||||||
|  | 	'(-p --package)'{-p,--package}'[Interact with <pkgbase> instead of the current directory]:pkgbase:_devtools_completions_all_packages' | ||||||
|  | 	'(-t --title)'{-t,--title}'[Use the provided title for the issue]:title:' | ||||||
|  | 	'(-e --edit)'{-e,--edit}'[Edit the issue title and description using an editor]' | ||||||
|  | 	"--recover[Automatically recover from a failed run]" | ||||||
|  | 	"--confidentiality[Set the issue confidentiality]:confidential:($DEVTOOLS_VALID_ISSUE_CONFIDENTIALITY[*])" | ||||||
|  | 	"--priority[Set the priority label]:priority:($DEVTOOLS_VALID_ISSUE_PRIORITY[*])" | ||||||
|  | 	"--resolution[Set the resolution label]:resolution:($DEVTOOLS_VALID_ISSUE_RESOLUTION[*])" | ||||||
|  | 	"--scope[Set the scope label]:scope:($DEVTOOLS_VALID_ISSUE_SCOPE[*])" | ||||||
|  | 	"--severity[Set the severity label]:severity:($DEVTOOLS_VALID_ISSUE_SEVERITY[*])" | ||||||
|  | 	"--status[Set the status label]:status:($DEVTOOLS_VALID_ISSUE_STATUS[*])" | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	"1:issue_iid:" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_list_args=( | ||||||
|  | 	'(-g --group)'{-g,--group}'[Get issues from the whole packaging subgroup]' | ||||||
|  | 	'(-w --web)'{-w,--web}'[View results in a browser]' | ||||||
|  | 	'(-A --all)'{-A,--all}'[Get all issues including closed]' | ||||||
|  | 	'(-c --closed)'{-c,--closed}'[Get only closed issues]' | ||||||
|  | 	'(-U --unconfirmed)'{-U,--unconfirmed}'[Shorthand to filter by unconfirmed status label]' | ||||||
|  | 	'--search[Search in the fields defined by --in]:search:' | ||||||
|  | 	"--in[Search in title or description]:location:($DEVTOOLS_VALID_ISSUE_SEARCH_LOCATION[*])" | ||||||
|  | 	"--confidentiality[Filter by confidentiality]:confidential:($DEVTOOLS_VALID_ISSUE_CONFIDENTIALITY[*])" | ||||||
|  | 	"--priority[Shorthand to filter by priority label]:priority:($DEVTOOLS_VALID_ISSUE_PRIORITY[*])" | ||||||
|  | 	"--resolution[Shorthand to filter by resolution label]:resolution:($DEVTOOLS_VALID_ISSUE_RESOLUTION[*])" | ||||||
|  | 	"--scope[Shorthand to filter by scope label]:scope:($DEVTOOLS_VALID_ISSUE_SCOPE[*])" | ||||||
|  | 	"--severity[Shorthand to filter by severity label]:severity:($DEVTOOLS_VALID_ISSUE_SEVERITY[*])" | ||||||
|  | 	"--status[Shorthand to filter by status label]:status:($DEVTOOLS_VALID_ISSUE_STATUS[*])" | ||||||
|  | 	'--assignee[Filter issues assigned to the given username]:username:' | ||||||
|  | 	'--assigned-to-me[Shorthand to filter issues assigned to you]' | ||||||
|  | 	'--author[Filter issues authored by the given username]:username:' | ||||||
|  | 	'--created-by-me[Shorthand to filter issues created by you]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'*:pkgbase:_devtools_completions_all_packages' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_move_args=( | ||||||
|  | 	'(-p --package)'{-p,--package}'[Interact with <pkgbase> instead of the current directory]:pkgbase:_devtools_completions_all_packages' | ||||||
|  | 	'(-m --message)'{-m,--message}'[Use the provided message as the comment]:message:' | ||||||
|  | 	'(-e --edit)'{-e,--edit}'[Edit the comment using an editor]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	"1:issue_iid:" | ||||||
|  | 	'1:pkgbase:_devtools_completions_all_packages' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_reopen_args=( | ||||||
|  | 	'(-p --package)'{-p,--package}'[Interact with <pkgbase> instead of the current directory]:pkgbase:_devtools_completions_all_packages' | ||||||
|  | 	'(-m --message)'{-m,--message}'[Use the provided message as the comment]:message:' | ||||||
|  | 	'(-e --edit)'{-e,--edit}'[Edit the comment using an editor]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	"1:issue_iid:" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_issue_view_args=( | ||||||
|  | 	'(-p --package)'{-p,--package}'[Interact with <pkgbase> instead of the current directory]:pkgbase:_devtools_completions_all_packages' | ||||||
|  | 	'(-c --comments)'{-c,--comments}'[Show issue comments and activities]' | ||||||
|  | 	'(-w --web)'{-w,--web}'[View results in a browser]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	"1:issue_iid:" | ||||||
|  | ) | ||||||
|  |  | ||||||
| _pkgctl_release_args=( | _pkgctl_release_args=( | ||||||
| 	'(-m --message=)'{-m,--message=}"[Use the given <msg> as the commit message]:message:" | 	'(-m --message)'{-m,--message}"[Use the given <msg> as the commit message]:message:" | ||||||
| 	'(-r --repo=)'{-r,--repo=}"[Specify a target repository (disables auto-detection)]:repo:($_repos[*])" | 	'(-r --repo)'{-r,--repo}"[Specify a target repository for new packages]:repo:($DEVTOOLS_VALID_REPOS[*])" | ||||||
| 	'(-s --staging)'{-s,--staging}'[Release to the staging counterpart of the auto-detected repo]' | 	'(-s --staging)'{-s,--staging}'[Release to the staging counterpart of the auto-detected repo]' | ||||||
| 	'(-t --testing)'{-t,--testing}'[Release to the testing counterpart of the auto-detected repo]' | 	'(-t --testing)'{-t,--testing}'[Release to the testing counterpart of the auto-detected repo]' | ||||||
| 	'(-u --db-update)'{-u,--db-update}'[Automatically update the pacman database after uploading]' | 	'(-u --db-update)'{-u,--db-update}'[Automatically update the pacman database after uploading]' | ||||||
| @@ -90,8 +210,21 @@ _pkgctl_release_args=( | |||||||
| 	'*:git_dir:_files -/' | 	'*:git_dir:_files -/' | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | _pkgctl_aur_cmds=( | ||||||
|  | 	"pkgctl aur command" | ||||||
|  | 	"drop-from-repo[Drop a package from the official repository to the AUR]" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_aur_drop_from_repo_args=( | ||||||
|  | 	'(-f --force)'{-f,--force}'[Force push to the AUR overwriting the remote repository]' | ||||||
|  | 	'--no-disown[Do not disown the package on the AUR]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'*:git_dir:_files -/' | ||||||
|  | ) | ||||||
|  |  | ||||||
| _pkgctl_repo_cmds=( | _pkgctl_repo_cmds=( | ||||||
| 	"pkgctl repo command" | 	"pkgctl repo command" | ||||||
|  | 	"clean[Remove untracked files from the working tree]" | ||||||
| 	"clone[Clone a package repository]" | 	"clone[Clone a package repository]" | ||||||
| 	"configure[Configure a clone according to distro specs]" | 	"configure[Configure a clone according to distro specs]" | ||||||
| 	"create[Create a new GitLab package repository]" | 	"create[Create a new GitLab package repository]" | ||||||
| @@ -106,6 +239,13 @@ _pkgctl_repo_switch_args=( | |||||||
| 	'*:git_dir:_files -/' | 	'*:git_dir:_files -/' | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | _pkgctl_repo_clean_args=( | ||||||
|  | 	'(-i --interactive)'{-i,--interactive}'[Show what would be done and clean files interactively]' | ||||||
|  | 	'(-n --dry-run)'{-n,--dry-run}"[Don't remove anything, just show what would be done]" | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'*:git_dir:_files -/' | ||||||
|  | ) | ||||||
|  |  | ||||||
| _pkgctl_repo_clone_args=( | _pkgctl_repo_clone_args=( | ||||||
| 	'(-m --maintainer=)'{-m,--maintainer=}'[Clone all packages of the named maintainer]:maintainer:' | 	'(-m --maintainer=)'{-m,--maintainer=}'[Clone all packages of the named maintainer]:maintainer:' | ||||||
| 	'--protocol[Clone the repository over https]:proto:(https)' | 	'--protocol[Clone the repository over https]:proto:(https)' | ||||||
| @@ -130,15 +270,25 @@ _pkgctl_repo_create_args=( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| _pkgctl_repo_web_args=( | _pkgctl_repo_web_args=( | ||||||
|  | 	'--print[Print the url instead of opening it with xdg-open]' | ||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
| 	'*:git_dir:_files -/' | 	'*:git_dir:_files -/' | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | _pkgctl_search_args=( | ||||||
|  | 	'--no-default-filter[Do not apply default filter (like -path:keys/pgp/*.asc)]' | ||||||
|  | 	'--json[Enable printing results in JSON]' | ||||||
|  | 	'(-F --format)'{-F,--format}"[Controls the formatting of the results]:format:($valid_search_output_format[*])" | ||||||
|  | 	'(-N --no-line-number)'{-N,--no-line-number}"[Don't show line numbers when formatting results]" | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'1:query' | ||||||
|  | ) | ||||||
|  |  | ||||||
| _arch_nspawn_args=( | _arch_nspawn_args=( | ||||||
| 	'-C[Location of a pacman config file]:pacman_config:_files -g "*.conf(.)"' | 	'-C[Location of a pacman config file]:pacman_config:_files -g "*.conf(.)"' | ||||||
| 	'-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"' | 	'-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"' | ||||||
| 	'-c[Set pacman cache]:pacman_cache:_files -/' | 	'*-c[Set pacman cache]:pacman_cache:_files -/' | ||||||
| 	'-f[Copy file from the host to the chroot]:copy_file:_files' | 	'*-f[Copy file from the host to the chroot]:copy_file:_files' | ||||||
| 	'-s[Do not run setarch]' | 	'-s[Do not run setarch]' | ||||||
| 	'-h[Display usage]' | 	'-h[Display usage]' | ||||||
| 	'1:chroot_dir:_files -/' | 	'1:chroot_dir:_files -/' | ||||||
| @@ -146,14 +296,14 @@ _arch_nspawn_args=( | |||||||
|  |  | ||||||
| _archrelease_args=( | _archrelease_args=( | ||||||
| 	'-f[Force release without checks]' | 	'-f[Force release without checks]' | ||||||
| 	"*:arch:($_tags[*])" | 	"*:arch:($DEVTOOLS_VALID_TAGS[*])" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| _commitpkg_args=( | _commitpkg_args=( | ||||||
| 	'-f[Force release without checks]' | 	'-f[Force release without checks]' | ||||||
| 	'-s[Target repo server]' | 	'-s[Target repo server]' | ||||||
| 	'-l[Set bandwidth limit]:limit' | 	'-l[Set bandwidth limit]:limit' | ||||||
| 	"-a[Release to a specific architecture only]:arch:($_arch[*])" | 	"-a[Release to a specific architecture only]:arch:($DEVTOOLS_VALID_ARCHES[*])" | ||||||
| 	'1:commit_msg' | 	'1:commit_msg' | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -180,15 +330,17 @@ _finddeps_args=( | |||||||
| _makechrootpkg_args=( | _makechrootpkg_args=( | ||||||
| 	'-h[Display usage]' | 	'-h[Display usage]' | ||||||
| 	'-c[Clean the chroot before building]' | 	'-c[Clean the chroot before building]' | ||||||
| 	'-d[Bind directory into build chroot as read-write]:bind_dir_rw:_files -/' | 	'*-d[Bind directory into build chroot as read-write]:bind_dir_rw:_files -/' | ||||||
| 	'-D[Bind directory into build chroot as read-only]:bind_dir_ro:_files -/' | 	'*-D[Bind directory into build chroot as read-only]:bind_dir_ro:_files -/' | ||||||
|  | 	'*-t[Mount a tmpfs at directory]:tmpfs_dir:_files -/' | ||||||
| 	'-u[Update the working copy of the chroot before building]' | 	'-u[Update the working copy of the chroot before building]' | ||||||
| 	'-r[The chroot dir to use]:chroot_dir:_files -/' | 	'-r[The chroot dir to use]:chroot_dir:_files -/' | ||||||
| 	'-I[Install a package into the working copy]:target:_files -g "*.pkg.tar.*(.)"' | 	'*-I[Install a package into the working copy]:target:_files -g "*.pkg.tar.*(.)"' | ||||||
| 	'-l[The directory to use as the working copy]:copy_dir:_files -/' | 	'-l[The directory to use as the working copy]:copy_dir:_files -/' | ||||||
| 	'-n[Run namcap on the package]' | 	'-n[Run namcap on the package]' | ||||||
| 	'-T[Build in a temporary directory]' | 	'-T[Build in a temporary directory]' | ||||||
| 	'-U[Run makepkg as a specified user]:makepkg_user' | 	'-U[Run makepkg as a specified user]:makepkg_user' | ||||||
|  | 	"-x[Spawn an interactive shell to inspect the chroot (never, always, failure)]:inspect:($DEVTOOLS_VALID_INSPECT_MODES[*])" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| _mkarchroot_args=( | _mkarchroot_args=( | ||||||
| @@ -196,6 +348,7 @@ _mkarchroot_args=( | |||||||
| 	'-C[Location of a pacman config file]:pacman_config:_files -g "*.conf(.)"' | 	'-C[Location of a pacman config file]:pacman_config:_files -g "*.conf(.)"' | ||||||
| 	'-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"' | 	'-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"' | ||||||
| 	'-c[Set pacman cache]:pacman_cache:_files -/' | 	'-c[Set pacman cache]:pacman_cache:_files -/' | ||||||
|  | 	'-f[Copy src file from the host to the chroot]:target:_files -/' | ||||||
| 	'-h[Display usage]' | 	'-h[Display usage]' | ||||||
| 	'1:working_dir:_files -/' | 	'1:working_dir:_files -/' | ||||||
| 	'*:packages:_devtools_completions_all_packages' | 	'*:packages:_devtools_completions_all_packages' | ||||||
| @@ -212,19 +365,20 @@ _sogrep_args=( | |||||||
| 	'(-v --verbose)'{-v,--verbose}'[Show matched links in addition to pkgname]' | 	'(-v --verbose)'{-v,--verbose}'[Show matched links in addition to pkgname]' | ||||||
| 	'(-r --refresh)'{-r,--refresh}'[Refresh the links databases]' | 	'(-r --refresh)'{-r,--refresh}'[Refresh the links databases]' | ||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
| 	'1:repo:(all $_repos[*])' | 	'1:repo:(all $DEVTOOLS_VALID_REPOS[*])' | ||||||
| 	'2:libname' | 	'2:libname' | ||||||
| ) | ) | ||||||
|  |  | ||||||
| _offload_build_args=( | _offload_build_args=( | ||||||
| 	'(-r --repo)'{-r,--repo}'[Build against a specific repository]:repo:($_build_repos[*])' | 	'(-r --repo)'{-r,--repo}'[Build against a specific repository]:repo:($DEVTOOLS_VALID_BUILDREPOS[*])' | ||||||
| 	'(-a --arch)'{-a,--arch}'[Build against a specific architecture]:arch:(${_binary_arch[*]})' | 	'(-a --arch)'{-a,--arch}'[Build against a specific architecture]:arch:(${DEVTOOLS_VALID_BINARY_ARCHES[*]})' | ||||||
| 	'(-s --server)'{-s,--server}'[Offload to a specific Build server]:server:' | 	'(-s --server)'{-s,--server}'[Offload to a specific Build server]:server:' | ||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
| ) | ) | ||||||
|  |  | ||||||
| _makerepropkg_args=( | _makerepropkg_args=( | ||||||
| 	'-d[Run diffoscope if the package is unreproducible]' | 	'-d[Run diffoscope if the package is unreproducible]' | ||||||
|  | 	'-n[Do not run the check() function in the PKGBUILD]' | ||||||
| 	'-c[Set pacman cache]:pacman_cache:_files -/' | 	'-c[Set pacman cache]:pacman_cache:_files -/' | ||||||
| 	'-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"' | 	'-M[Location of a makepkg config file]:makepkg_config:_files -g "*.conf(.)"' | ||||||
| 	'-h[Display usage]' | 	'-h[Display usage]' | ||||||
| @@ -239,13 +393,17 @@ _devtools_completions_all_packages() { | |||||||
|  |  | ||||||
| _pkgctl_cmds=( | _pkgctl_cmds=( | ||||||
| 	"pkgctl command" | 	"pkgctl command" | ||||||
|  | 	"aur[Interact with the Arch User Repository (AUR)]" | ||||||
| 	"auth[Authenticate with services like GitLab]" | 	"auth[Authenticate with services like GitLab]" | ||||||
| 	"build[Build packages inside a clean chroot]" | 	"build[Build packages inside a clean chroot]" | ||||||
| 	"db[Pacman database modification for package update, move etc]" | 	"db[Pacman database modification for package update, move etc]" | ||||||
| 	"diff[Compare package files using different modes]" | 	"diff[Compare package files using different modes]" | ||||||
|  | 	"issue[Work with GitLab packaging issues]" | ||||||
|  | 	"license[Check and manage package license compliance]" | ||||||
| 	"release[Release step to commit, tag and upload build artifacts]" | 	"release[Release step to commit, tag and upload build artifacts]" | ||||||
| 	"repo[Manage Git packaging repositories and their configuration]" | 	"repo[Manage Git packaging repositories and their configuration]" | ||||||
| 	"version[Show pkgctl version information]" | 	"search[Search for an expression across the GitLab packaging group]" | ||||||
|  | 	"version[Check and manage package versions against upstream]" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| _pkgctl_args=( | _pkgctl_args=( | ||||||
| @@ -253,8 +411,54 @@ _pkgctl_args=( | |||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
| ) | ) | ||||||
|  |  | ||||||
| _pkgctl_version_args=( | _pkgctl_license_cmds=( | ||||||
|  | 	"pkgctl license command" | ||||||
|  | 	"check[Checks package licensing compliance using REUSE]" | ||||||
|  | 	"setup[Automatically detect and setup a basic REUSE config]" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_license_check_args=( | ||||||
| 	'(-h --help)'{-h,--help}'[Display usage]' | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'*:git_dir:_files -/' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_license_setup_args=( | ||||||
|  | 	'(-f --force)'{-f,--force}'[Overwrite existing REUSE config]' | ||||||
|  | 	'--no-check[Do not run license check after setup]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'*:git_dir:_files -/' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_version_cmds=( | ||||||
|  | 	"pkgctl version command" | ||||||
|  | 	"check[Compares local package versions against upstream versions]" | ||||||
|  | 	"setup[Automatically detect and setup a basic nvchecker config]" | ||||||
|  | 	"upgrade[Adjust the PKGBUILD to match the latest upstream version]" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_version_check_args=( | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'(-v --verbose)'{-v,--verbose}'[Display all results including up-to-date versions]' | ||||||
|  | 	'--json[Enable printing results in JSON]' | ||||||
|  | 	'(-F --format)'{-F,--format}"[Controls the output format of the results]:format:($DEVTOOLS_VALID_VERSION_OUTPUT_FORMAT[*])" | ||||||
|  | 	'*:git_dir:_files -/' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_version_setup_args=( | ||||||
|  | 	'(-f --force)'{-f,--force}'[Do not prompt before overwriting]' | ||||||
|  | 	'--prefer-platform-api[Prefer platform specific GitHub/GitLab API for complex cases]' | ||||||
|  | 	'--url[Derive check target from URL instead of source array]:url:' | ||||||
|  | 	'--no-check[Do not run version check after setup]' | ||||||
|  | 	'--no-upstream[Setup a blank config for packages without upstream sources]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'*:git_dir:_files -/' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | _pkgctl_version_upgrade_args=( | ||||||
|  | 	'--no-update-checksums[Disable computation and update of the checksums]' | ||||||
|  | 	'(-v --verbose)'{-v,--verbose}'[Display results including up-to-date versions]' | ||||||
|  | 	'(-h --help)'{-h,--help}'[Display usage]' | ||||||
|  | 	'*:git_dir:_files -/' | ||||||
| ) | ) | ||||||
|  |  | ||||||
| _pkgctl_diff_args=("${_diffpkg_args[@]}") | _pkgctl_diff_args=("${_diffpkg_args[@]}") | ||||||
| @@ -276,7 +480,7 @@ _handle_subcommands() { | |||||||
| 				fi | 				fi | ||||||
| 				;; | 				;; | ||||||
| 			args) | 			args) | ||||||
| 				local service_sub=${service_name}_$line[1] | 				local service_sub=${service_name}_${line[1]//-/_} | ||||||
| 				if typeset -p ${service_sub}_args &> /dev/null; then | 				if typeset -p ${service_sub}_args &> /dev/null; then | ||||||
| 					local cmd_args=${service_sub}_args[@] | 					local cmd_args=${service_sub}_args[@] | ||||||
| 					_arguments -s "${(P)cmd_args}" | 					_arguments -s "${(P)cmd_args}" | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								data/LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								data/LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | Copyright Arch Linux Contributors | ||||||
|  |  | ||||||
|  | Permission to use, copy, modify, and/or distribute this software for | ||||||
|  | any purpose with or without fee is hereby granted. | ||||||
|  |  | ||||||
|  | THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL | ||||||
|  | WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES | ||||||
|  | OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE | ||||||
|  | FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY | ||||||
|  | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN | ||||||
|  | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT | ||||||
|  | OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
| @@ -1,37 +0,0 @@ | |||||||
| ## linkman: macro |  | ||||||
| # Inspired by/borrowed from the GIT source tree at Documentation/asciidoc.conf |  | ||||||
| # |  | ||||||
| # Usage: linkman:command[manpage-section] |  | ||||||
| # |  | ||||||
| # Note, {0} is the manpage section, while {target} is the command. |  | ||||||
| # |  | ||||||
| # Show man link as: <command>(<section>); if section is defined, else just show |  | ||||||
| # the command. |  | ||||||
|  |  | ||||||
| [macros] |  | ||||||
| (?su)[\\]?(?P<name>linkman):(?P<target>\S*?)\[(?P<attrlist>.*?)\]= |  | ||||||
|  |  | ||||||
| [attributes] |  | ||||||
| asterisk=* |  | ||||||
| plus=+ |  | ||||||
| caret=^ |  | ||||||
| startsb=[ |  | ||||||
| endsb=] |  | ||||||
| backslash=\ |  | ||||||
| tilde=~ |  | ||||||
| apostrophe=' |  | ||||||
| backtick=` |  | ||||||
| litdd=-- |  | ||||||
|  |  | ||||||
| ifdef::backend-docbook[] |  | ||||||
| [linkman-inlinemacro] |  | ||||||
| {0%{target}} |  | ||||||
| {0#<citerefentry>} |  | ||||||
| {0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>} |  | ||||||
| {0#</citerefentry>} |  | ||||||
| endif::backend-docbook[] |  | ||||||
|  |  | ||||||
| ifdef::backend-xhtml11[] |  | ||||||
| [linkman-inlinemacro] |  | ||||||
| <a href="{target}.{0}.html">{target}{0?({0})}</a> |  | ||||||
| endif::backend-xhtml11[] |  | ||||||
| @@ -23,13 +23,15 @@ Options | |||||||
| 	Location of a pacman config file | 	Location of a pacman config file | ||||||
|  |  | ||||||
| *-M* <file>:: | *-M* <file>:: | ||||||
| 	Location of a makepkg config file | 	Location of a makepkg config file. Specific additions (e.g. build flags for | ||||||
|  | 	additional languages) can be placed in '<file>.d/*.conf'. | ||||||
|  |  | ||||||
| *-c* <dir>:: | *-c* <dir>:: | ||||||
| 	Set pacman cache, if no directory is specified the passed pacman.conf's cachedir is used with a fallback to '/etc/pacman.conf' | 	Set pacman cache, if no directory is specified the passed pacman.conf's cachedir is used with a fallback to '/etc/pacman.conf' | ||||||
|  |  | ||||||
| *-f* <file>:: | *-f* <src>[:<dst>]:: | ||||||
| 	Copy file from the host to the chroot | 	Copy file from the host to the chroot. | ||||||
|  | 	If 'dst' is not provided, it defaults to 'src' inside of the chroot. | ||||||
|  |  | ||||||
| *-s*:: | *-s*:: | ||||||
| 	Do not run setarch | 	Do not run setarch | ||||||
|   | |||||||
| @@ -43,6 +43,6 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:devtools[7] | devtools(7) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -38,6 +38,6 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:find-libprovides[1] | find-libprovides(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -21,47 +21,47 @@ Programs | |||||||
| The list below gives a short overview; see the respective documentation | The list below gives a short overview; see the respective documentation | ||||||
| for details. | for details. | ||||||
|  |  | ||||||
| linkman:pkgctl[1] | pkgctl(1) | ||||||
| 	Unified command-line frontend for devtools | 	Unified command-line frontend for devtools | ||||||
|  |  | ||||||
| linkman:archbuild[1] | archbuild(1) | ||||||
| 	Build an Arch Linux package inside a clean chroot | 	Build an Arch Linux package inside a clean chroot | ||||||
|  |  | ||||||
| linkman:arch-nspawn[1] | arch-nspawn(1) | ||||||
| 	Run a command or OS in a light-weight namespace container | 	Run a command or OS in a light-weight namespace container | ||||||
|  |  | ||||||
| linkman:checkpkg[1] | checkpkg(1) | ||||||
| 	Compare the current build package with the repository version | 	Compare the current build package with the repository version | ||||||
|  |  | ||||||
| linkman:diffpkg[1] | diffpkg(1) | ||||||
| 	Compare package files using different modes | 	Compare package files using different modes | ||||||
|  |  | ||||||
| linkman:export-pkgbuild-keys[1] | export-pkgbuild-keys(1) | ||||||
| 	Export valid source signing keys from a PKGBUILD | 	Export valid source signing keys from a PKGBUILD | ||||||
|  |  | ||||||
| linkman:find-libdeps[1] | find-libdeps(1) | ||||||
| 	Find soname dependencies for a package | 	Find soname dependencies for a package | ||||||
|  |  | ||||||
| linkman:find-libprovides[1] | find-libprovides(1) | ||||||
| 	Find soname's which are provided by a package | 	Find soname's which are provided by a package | ||||||
|  |  | ||||||
| linkman:lddd[1] | lddd(1) | ||||||
| 	Find broken library links on your system | 	Find broken library links on your system | ||||||
|  |  | ||||||
| linkman:mkarchroot[1] | mkarchroot(1) | ||||||
| 	Creates an arch chroot in a specified location with a specified set of | 	Creates an arch chroot in a specified location with a specified set of | ||||||
| 	packages | 	packages | ||||||
|  |  | ||||||
| linkman:makechrootpkg[1] | makechrootpkg(1) | ||||||
| 	Build a PKGBUILD in a given chroot environment | 	Build a PKGBUILD in a given chroot environment | ||||||
|  |  | ||||||
| linkman:makerepropkg[1] | makerepropkg(1) | ||||||
| 	Rebuild a package to see if it is reproducible | 	Rebuild a package to see if it is reproducible | ||||||
|  |  | ||||||
| linkman:offload-build[1] | offload-build(1) | ||||||
| 	Build a PKGBUILD on a remote server using makechrootpkg | 	Build a PKGBUILD on a remote server using makechrootpkg | ||||||
|  |  | ||||||
| linkman:sogrep[1] | sogrep(1) | ||||||
| 	Find packages using a linked to a given shared library | 	Find packages using a linked to a given shared library | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -20,6 +20,6 @@ collected data is written to a temporary directory created by mktemp. | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:ldd[1] | ldd(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -45,6 +45,9 @@ Options | |||||||
| *-D* <dir>:: | *-D* <dir>:: | ||||||
| 	Bind directory into build chroot as read-only | 	Bind directory into build chroot as read-only | ||||||
|  |  | ||||||
|  | *-t* <dir>[:opts]:: | ||||||
|  | 	Mount a tmpfs at 'dir'. See the '--tmpfs' argument in systemd-nspawn(1) for more details. | ||||||
|  |  | ||||||
| *-u*:: | *-u*:: | ||||||
| 	Update the working copy of the chroot before building | 	Update the working copy of the chroot before building | ||||||
| 	This is useful for rebuilds without dirtying the pristine | 	This is useful for rebuilds without dirtying the pristine | ||||||
| @@ -73,4 +76,12 @@ Options | |||||||
| *-U*:: | *-U*:: | ||||||
| 	Run makepkg as a specified user | 	Run makepkg as a specified user | ||||||
|  |  | ||||||
|  | *-x* <when>:: | ||||||
|  | 	Inspect chroot after build, possible modes are 'never' (default), 'always' or 'failure' | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | systemd-nspawn(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ Given the path to a built pacman package(s), attempt to rebuild it using the | |||||||
| PKGBUILD in the current directory. The package will be built in an environment | PKGBUILD in the current directory. The package will be built in an environment | ||||||
| as closely matching the environment of the initial package as possible, by | as closely matching the environment of the initial package as possible, by | ||||||
| building up a chroot to match the information exposed in the package's | building up a chroot to match the information exposed in the package's | ||||||
| linkman:BUILDINFO[5] manifest. On success, the resulting package will be | BUILDINFO(5) manifest. On success, the resulting package will be | ||||||
| compared to the input package, and makerepropkg will report whether the | compared to the input package, and makerepropkg will report whether the | ||||||
| artifacts are identical. | artifacts are identical. | ||||||
|  |  | ||||||
| @@ -42,11 +42,15 @@ Options | |||||||
| *-d*:: | *-d*:: | ||||||
| 	If packages are not reproducible, compare them using diffoscope. | 	If packages are not reproducible, compare them using diffoscope. | ||||||
|  |  | ||||||
|  | *-n*:: | ||||||
|  | 	Do not run the check() function in the PKGBUILD. | ||||||
|  |  | ||||||
| *-c*:: | *-c*:: | ||||||
| 	Set the pacman cache directory. | 	Set the pacman cache directory. | ||||||
|  |  | ||||||
| *-M* <file>:: | *-M* <file>:: | ||||||
| 	Location of a makepkg config file. | 	Location of a makepkg config file. Specific additions (e.g. build flags for | ||||||
|  | 	additional languages) can be placed in '<file>.d/*.conf'. | ||||||
|  |  | ||||||
| *-l* <chroot>:: | *-l* <chroot>:: | ||||||
| 	The directory name to use as the chroot namespace | 	The directory name to use as the chroot namespace | ||||||
|   | |||||||
| @@ -32,8 +32,9 @@ Options | |||||||
| *-c* <dir>:: | *-c* <dir>:: | ||||||
| 	Set pacman cache. | 	Set pacman cache. | ||||||
|  |  | ||||||
| *-f* <file>:: | *-f* <src>[:<dst>]:: | ||||||
| 	Copy file from the host to the chroot. | 	Copy file from the host to the chroot. | ||||||
|  | 	If 'dst' is not provided, it defaults to 'src' inside of the chroot. | ||||||
|  |  | ||||||
| *-s*:: | *-s*:: | ||||||
| 	Do not run setarch. | 	Do not run setarch. | ||||||
| @@ -44,6 +45,6 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pacman[1] | pacman(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
							
								
								
									
										41
									
								
								doc/man/pkgctl-aur-drop-from-repo.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								doc/man/pkgctl-aur-drop-from-repo.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | |||||||
|  | pkgctl-aur-drop-from-repo(1) | ||||||
|  | ============================ | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-aur-drop-from-repo - Drop a package from the official repository to the AUR | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl aur drop-from-repo [OPTIONS] [PATH]... | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Drops a specified package from the official repositories to the Arch User | ||||||
|  | Repository. | ||||||
|  |  | ||||||
|  | This command requires a local Git clone of the package repository. It | ||||||
|  | reconfigures the repository for AUR compatibility and pushes it to the | ||||||
|  | AUR. Afterwards, the package is removed from the official repository. | ||||||
|  |  | ||||||
|  | By default, the package is automatically disowned in the AUR. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *--no-disown*:: | ||||||
|  | 	Do not disown the package on the AUR | ||||||
|  |  | ||||||
|  | *-f, --force*:: | ||||||
|  | 	Force push to the AUR overwriting the remote repository | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-db-remove(1) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										37
									
								
								doc/man/pkgctl-aur.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								doc/man/pkgctl-aur.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | pkgctl-aur(1) | ||||||
|  | ============= | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-aur - Interact with the Arch User Repository (AUR) | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl aur [OPTIONS] [SUBCOMMAND] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Provides a suite of tools designed for managing and interacting with the Arch | ||||||
|  | User Repository (AUR). It simplifies various tasks related to AUR, including | ||||||
|  | importing repositories, managing packages, and transitioning packages between | ||||||
|  | the official repositories and the AUR. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | Subcommands | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | pkgctl aur drop-from-repo:: | ||||||
|  | 	Drop a package from the official repository to the AUR | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-aur-drop-from-repo(1) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
| @@ -35,6 +35,6 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-auth-status[1] | pkgctl-auth-status(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -27,6 +27,6 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-auth-login[1] | pkgctl-auth-login(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ pkgctl auth status:: | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-auth-login[1] | pkgctl-auth-login(1) | ||||||
| linkman:pkgctl-auth-status[1] | pkgctl-auth-status(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -12,7 +12,10 @@ pkgctl build [OPTIONS] [PATH...] | |||||||
| Description | Description | ||||||
| ----------- | ----------- | ||||||
|  |  | ||||||
| TODO | Build packages in clean chroot environment, offering various options | ||||||
|  | and functionalities to customize the package building process. | ||||||
|  |  | ||||||
|  | By default, chroot environments are located in '/var/lib/archbuild/'. | ||||||
|  |  | ||||||
| Build Options | Build Options | ||||||
| ------------- | ------------- | ||||||
| @@ -21,7 +24,10 @@ Build Options | |||||||
| 	Specify architectures to build for (disables auto-detection) | 	Specify architectures to build for (disables auto-detection) | ||||||
|  |  | ||||||
| *--repo* 'REPO':: | *--repo* 'REPO':: | ||||||
| 	Specify a target repository (disables auto-detection) | 	Specify target repository for new packages not in any official repo. | ||||||
|  | 	Fallback to `'extra'` when building packages that are not present in any | ||||||
|  | 	official repository yet. Using this option is disallowed if the package is | ||||||
|  | 	already released, as it would circumvent the auto-detection safeguard. | ||||||
|  |  | ||||||
| *-s, --staging*:: | *-s, --staging*:: | ||||||
| 	Build against the staging counterpart of the auto-detected repo | 	Build against the staging counterpart of the auto-detected repo | ||||||
| @@ -35,8 +41,9 @@ Build Options | |||||||
| *-c, --clean*:: | *-c, --clean*:: | ||||||
| 	Recreate the chroot before building | 	Recreate the chroot before building | ||||||
|  |  | ||||||
| *-I, --install* 'FILE':: | *--inspect* 'WHEN':: | ||||||
| 	Install a package into the working copy of the chroot | 	Spawn an interactive shell to inspect the chroot after building. Useful to ease the debugging of a package build. + | ||||||
|  | 	Possible values for 'WHEN' are `'never'`, `'always'` or `'failure'` | ||||||
|  |  | ||||||
| *-w, --worker* 'SLOT':: | *-w, --worker* 'SLOT':: | ||||||
| 	Name of the worker slot, useful for concurrent builds. By default the slot | 	Name of the worker slot, useful for concurrent builds. By default the slot | ||||||
| @@ -47,6 +54,17 @@ Build Options | |||||||
| *--nocheck*:: | *--nocheck*:: | ||||||
| 	Do not run the check() function in the PKGBUILD | 	Do not run the check() function in the PKGBUILD | ||||||
|  |  | ||||||
|  | Install Options | ||||||
|  | --------------- | ||||||
|  |  | ||||||
|  | *-I, --install-to-chroot* 'FILE':: | ||||||
|  | 	Install a package to the working copy of the chroot | ||||||
|  |  | ||||||
|  | *-i, --install-to-host* 'MODE':: | ||||||
|  | 	Install the built packages to the host system. Useful when one wants to verify that the package works as intended. | ||||||
|  | 	* When 'MODE' is 'all', this installs all built packages | ||||||
|  | 	* When 'MODE' is 'auto', this installs all built packages which are currently installed | ||||||
|  |  | ||||||
| PKGBUILD Options | PKGBUILD Options | ||||||
| ---------------- | ---------------- | ||||||
|  |  | ||||||
| @@ -59,6 +77,13 @@ PKGBUILD Options | |||||||
| *--rebuild*:: | *--rebuild*:: | ||||||
| 	Increment the current pkgrel variable | 	Increment the current pkgrel variable | ||||||
|  |  | ||||||
|  | *--update-checksums*:: | ||||||
|  | 	Force computation and update of the checksums by disabling auto-detection. + | ||||||
|  | 	Should only be used in special circumstances, like when adding new patch | ||||||
|  | 	files to the source array. During regular packaging operations, checksums | ||||||
|  | 	are either automatically updated when upgrading a package using `--pkgver` | ||||||
|  | 	or should remain immutable during rebuilds. | ||||||
|  |  | ||||||
| *-e, --edit*:: | *-e, --edit*:: | ||||||
| 	Edit the PKGBUILD before building | 	Edit the PKGBUILD before building | ||||||
|  |  | ||||||
| @@ -85,7 +110,7 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-release[1] | pkgctl-release(1) | ||||||
| linkman:pkgctl-db-update[1] | pkgctl-db-update(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -3,17 +3,16 @@ pkgctl-db-move(1) | |||||||
|  |  | ||||||
| Name | Name | ||||||
| ---- | ---- | ||||||
| pkgctl-db-update - Update the binary repository as final release step | pkgctl-db-move - Move packages between binary repositories. | ||||||
|  |  | ||||||
| Synopsis | Synopsis | ||||||
| -------- | -------- | ||||||
| pkgctl db update [OPTIONS] | pkgctl db move [OPTIONS] [SOURCE_REPO] [TARGET_REPO] [PKGBASE]... | ||||||
|  |  | ||||||
| Description | Description | ||||||
| ----------- | ----------- | ||||||
|  |  | ||||||
| Update the pacman database as final release step for packages that | Move packages between binary repositories i.e. from 'extra-testing' to 'extra'. | ||||||
| have been transfered and staged on 'repos.archlinux.org'. |  | ||||||
|  |  | ||||||
| Options | Options | ||||||
| ------- | ------- | ||||||
|   | |||||||
| @@ -12,13 +12,27 @@ pkgctl db remove [OPTIONS] [REPO] [PKGBASE]... | |||||||
| Description | Description | ||||||
| ----------- | ----------- | ||||||
|  |  | ||||||
| Remove packages from pacman repositories. | Remove packages from pacman repositories. By default passing a pkgbase removes | ||||||
|  | all split packages, debug packages as well as entries from the state repo for | ||||||
|  | all existing architectures. | ||||||
|  |  | ||||||
|  | Beware when using the `--partial` option, as it may most likely lead to | ||||||
|  | undesired effects by leaving debug packages behind as well as dangling entries | ||||||
|  | in the state repository. | ||||||
|  |  | ||||||
| Options | Options | ||||||
| ------- | ------- | ||||||
|  |  | ||||||
|  | *--partial*:: | ||||||
|  | 	Remove only partial pkgnames from a split package. This leaves debug | ||||||
|  | 	packages behind and pkgbase entries in the state repo. | ||||||
|  |  | ||||||
| *-a, --arch* 'ARCH':: | *-a, --arch* 'ARCH':: | ||||||
| 	Override the architecture (disables auto-detection) | 	Remove only one specific architecture (disables auto-detection). | ||||||
|  | 	By default all architectures are removed when this option is not used. | ||||||
|  |  | ||||||
|  | *--noconfirm*:: | ||||||
|  | 	Bypass any confirmation messages, should only be used with caution. | ||||||
|  |  | ||||||
| *-h, --help*:: | *-h, --help*:: | ||||||
| 	Show a help text | 	Show a help text | ||||||
|   | |||||||
| @@ -1,18 +1,19 @@ | |||||||
| pkgctl-db-move(1) | pkgctl-db-update(1) | ||||||
| ================= | =================== | ||||||
|  |  | ||||||
| Name | Name | ||||||
| ---- | ---- | ||||||
| pkgctl-db-move - Move packages between binary repositories | pkgctl-db-update - Update the binary repository as final release step | ||||||
|  |  | ||||||
| Synopsis | Synopsis | ||||||
| -------- | -------- | ||||||
| pkgctl db move [OPTIONS] [SOURCE_REPO] [TARGET_REPO] [PKGBASE]... | pkgctl db update [OPTIONS] | ||||||
|  |  | ||||||
| Description | Description | ||||||
| ----------- | ----------- | ||||||
|  |  | ||||||
| Move packages between pacman repositories. | Update the pacman database as final release step for packages that | ||||||
|  | have been transfered and staged on 'repos.archlinux.org'. | ||||||
|  |  | ||||||
| Options | Options | ||||||
| ------- | ------- | ||||||
|   | |||||||
							
								
								
									
										43
									
								
								doc/man/pkgctl-db.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								doc/man/pkgctl-db.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | pkgctl-db(1) | ||||||
|  | ============ | ||||||
|  |  | ||||||
|  | NAME | ||||||
|  | ---- | ||||||
|  | pkgctl-db - Pacman database modification utility for package updates, moves, and more. | ||||||
|  |  | ||||||
|  | SYNOPSIS | ||||||
|  | -------- | ||||||
|  | pkgctl db [OPTIONS] [SUBCOMMAND] | ||||||
|  |  | ||||||
|  | DESCRIPTION | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Managing the Pacman database and facilitate the modification of packages and their metadata | ||||||
|  | within the database | ||||||
|  |  | ||||||
|  | OPTIONS | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  |     Display usage information and available options. | ||||||
|  |  | ||||||
|  | Subcommands | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | pkgctl db update:: | ||||||
|  |     Update the binary repository as final release step | ||||||
|  |  | ||||||
|  | pkgctl db move:: | ||||||
|  |     Move packages between binary repositories | ||||||
|  |  | ||||||
|  | pkgctl db remove:: | ||||||
|  |     Remove packages from binary repositories | ||||||
|  |  | ||||||
|  | SEE ALSO | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-db-update(1) | ||||||
|  | pkgctl-db-move(1) | ||||||
|  | pkgctl-db-remove(1) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										47
									
								
								doc/man/pkgctl-issue-close.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								doc/man/pkgctl-issue-close.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | |||||||
|  | pkgctl-issue-close(1) | ||||||
|  | ===================== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue-close - Close an issue | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue close [OPTIONS] [IID] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | This command is used to close an issue in Arch Linux packaging projects. It | ||||||
|  | finalizes the issue by marking it as resolved and optionally providing a reason | ||||||
|  | for its closure. | ||||||
|  |  | ||||||
|  | To edit an issue, users must specify the issue ID (IID). By default, the | ||||||
|  | command operates within the current directory, but users have the option to | ||||||
|  | specify a different package base. | ||||||
|  |  | ||||||
|  | Users can provide a message directly through the command line to explain the | ||||||
|  | reason for closing the issue. For more detailed or precise reasons, users can | ||||||
|  | opt to edit the closure message using a text editor before submitting it. | ||||||
|  | Additionally, a specific resolution label can be set to categorize the closure | ||||||
|  | reason, with the default label being "completed." | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-p, --package* 'PKGBASE':: | ||||||
|  | 	Interact with `PKGBASE` instead of the current directory | ||||||
|  |  | ||||||
|  | *-m, --message* 'MSG':: | ||||||
|  | 	Use the provided message as the reason for closing | ||||||
|  |  | ||||||
|  | *-e, --edit*:: | ||||||
|  | 	Edit the reason for closing using an editor | ||||||
|  |  | ||||||
|  | *-r, --resolution* 'REASON':: | ||||||
|  | 	Set a specific resolution label (default: completed) | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										43
									
								
								doc/man/pkgctl-issue-comment.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								doc/man/pkgctl-issue-comment.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | pkgctl-issue-comment(1) | ||||||
|  | ======================= | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue-comment - Comment on an issue | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue comment [OPTIONS] [IID] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | This command allows users to add comments to an issue in Arch Linux packaging | ||||||
|  | projects. This command is useful for providing feedback, updates, or any | ||||||
|  | additional information related to an issue directly within the project's issue | ||||||
|  | tracking system. | ||||||
|  |  | ||||||
|  | By default, the command interacts with the current directory, but users can | ||||||
|  | specify a different package base if needed. | ||||||
|  |  | ||||||
|  | Users can provide a comment message directly through the command line, ensuring | ||||||
|  | quick and efficient communication. Additionally, for more detailed or formatted | ||||||
|  | comments, users have the option to edit their comment using a text editor | ||||||
|  | before submitting it. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-p, --package PKGBASE*:: | ||||||
|  | 	Interact with `PKGBASE` instead of the current directory | ||||||
|  |  | ||||||
|  | *-m, --message MSG*:: | ||||||
|  | 	Use the provided message as the comment | ||||||
|  |  | ||||||
|  | *-e, --edit*:: | ||||||
|  | 	Edit the comment using an editor | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										77
									
								
								doc/man/pkgctl-issue-create.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								doc/man/pkgctl-issue-create.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | |||||||
|  | pkgctl-issue-create(1) | ||||||
|  | ====================== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue-create - Create a new issue | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue create [OPTIONS] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | The create command is used to create a new issue for an Arch Linux package. | ||||||
|  | This command is suitable for reporting bugs, regressions, feature requests, or | ||||||
|  | any other issues related to a package. It provides a flexible way to document | ||||||
|  | and track new issues within the project's issue tracking system. | ||||||
|  |  | ||||||
|  | By default, the command operates within the current directory, but users can | ||||||
|  | specify a different package base if needed. | ||||||
|  |  | ||||||
|  | Users can provide a title for the issue directly through the command line. The | ||||||
|  | issue description can be supplied from a file or edited using a text editor. | ||||||
|  | Alternatively, users can opt to continue the issue creation process using the | ||||||
|  | web interface for a more interactive experience. | ||||||
|  |  | ||||||
|  | The command allows setting various labels and attributes for the issue, such as | ||||||
|  | confidentiality, priority, scope, severity, and status. These options help | ||||||
|  | categorize and prioritize the issue appropriately within the tracking system. | ||||||
|  |  | ||||||
|  | In case of a failed run, the command can automatically recover to ensure that | ||||||
|  | the issue creation process is completed without losing any data. | ||||||
|  |  | ||||||
|  | This command is essential for maintainers, contributors, and users who need to | ||||||
|  | report new issues related to Arch Linux packages. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-p, --package* 'PKGBASE':: | ||||||
|  | 	Interact with `PKGBASE` instead of the current directory | ||||||
|  |  | ||||||
|  | *-t, --title* 'TITLE':: | ||||||
|  | 	Use the provided title for the issue | ||||||
|  |  | ||||||
|  | *-F, --file* 'FILE':: | ||||||
|  | 	Take issue description from <file> | ||||||
|  |  | ||||||
|  | *-e, --edit*:: | ||||||
|  | 	Edit the issue description using an editor | ||||||
|  |  | ||||||
|  | *-w, --web*:: | ||||||
|  | 	Continue issue creation with the web interface | ||||||
|  |  | ||||||
|  | *--recover*:: | ||||||
|  | 	Automatically recover from a failed run | ||||||
|  |  | ||||||
|  | *--confidentiality* 'TYPE':: | ||||||
|  | 	Set the issue confidentiality | ||||||
|  |  | ||||||
|  | *--priority* 'PRIORITY':: | ||||||
|  | 	Set the priority label | ||||||
|  |  | ||||||
|  | *--scope* 'SCOPE':: | ||||||
|  | 	Set the scope label | ||||||
|  |  | ||||||
|  | *--severity* 'SEVERITY':: | ||||||
|  | 	Set the severity label | ||||||
|  |  | ||||||
|  | *--status* 'STATUS':: | ||||||
|  | 	Set the status label | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										75
									
								
								doc/man/pkgctl-issue-edit.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								doc/man/pkgctl-issue-edit.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | |||||||
|  | pkgctl-issue-edit(1) | ||||||
|  | ==================== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue-edit - Edit and modify an issue | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue edit [OPTIONS] [IID] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | The pkgctl issue edit command is used to modify an existing issue in Arch Linux | ||||||
|  | packaging projects. This command allows users to update the issue's title, | ||||||
|  | description, and various attributes, ensuring that the issue information | ||||||
|  | remains accurate and up-to-date. It also provides a streamlined facility | ||||||
|  | for bug wranglers to categorize and prioritize issues efficiently. | ||||||
|  |  | ||||||
|  | To edit an issue, users must specify the issue ID (IID). By default, the | ||||||
|  | command operates within the current directory, but users can specify a | ||||||
|  | different package base if needed. | ||||||
|  |  | ||||||
|  | The command allows for direct updates to the issue title and description. For | ||||||
|  | more extensive changes, users can edit these details using a text editor. The | ||||||
|  | command provides various options to set or update labels and attributes such as | ||||||
|  | confidentiality, priority, resolution, scope, severity, and status. These | ||||||
|  | options help maintain clear and organized issue management. | ||||||
|  |  | ||||||
|  | In case of a failed run, the command can automatically recover to ensure that | ||||||
|  | the editing process is completed without losing any data. | ||||||
|  |  | ||||||
|  | This command is particularly useful for maintainers and contributors who need | ||||||
|  | to update the details of an issue to reflect new information or changes in | ||||||
|  | status. It ensures that all issue details are accurately maintained, | ||||||
|  | facilitating efficient tracking and resolution. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-p, --package* 'PKGBASE':: | ||||||
|  | 	Interact with `PKGBASE` instead of the current directory | ||||||
|  |  | ||||||
|  | *-t, --title* 'TITLE':: | ||||||
|  | 	Use the provided title for the issue | ||||||
|  |  | ||||||
|  | *-e, --edit*:: | ||||||
|  | 	Edit the issue title and description using an editor | ||||||
|  |  | ||||||
|  | *--recover*:: | ||||||
|  | 	Automatically recover from a failed run | ||||||
|  |  | ||||||
|  | *--confidentiality* 'TYPE':: | ||||||
|  | 	Set the issue confidentiality | ||||||
|  |  | ||||||
|  | *--priority* 'PRIORITY':: | ||||||
|  | 	Set the priority label | ||||||
|  |  | ||||||
|  | *--resolution* 'REASON':: | ||||||
|  | 	Set the resolution label | ||||||
|  |  | ||||||
|  | *--scope* 'SCOPE':: | ||||||
|  | 	Set the scope label | ||||||
|  |  | ||||||
|  | *--severity* 'SEVERITY':: | ||||||
|  | 	Set the severity label | ||||||
|  |  | ||||||
|  | *--status* 'STATUS':: | ||||||
|  | 	Set the status label | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										100
									
								
								doc/man/pkgctl-issue-list.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								doc/man/pkgctl-issue-list.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | |||||||
|  | pkgctl-issue-list(1) | ||||||
|  | ==================== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue-list - List project or group issues | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue list [OPTIONS] [PKGBASE] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | The pkgctl issue list command is used to list issues associated with a specific | ||||||
|  | packaging project or the entire packaging subgroup in Arch Linux. This command | ||||||
|  | facilitates efficient issue management by allowing users to list and filter | ||||||
|  | issues based on various criteria. | ||||||
|  |  | ||||||
|  | Results can also be displayed directly in a web browser for easier navigation | ||||||
|  | and review. | ||||||
|  |  | ||||||
|  | The command offers filtering options to refine the results. Users can include | ||||||
|  | closed issues, filter exclusively for unconfirmed issues, or focus on issues | ||||||
|  | with specific labels such as priority, confidentiality, resolution, scope, | ||||||
|  | severity, and status. | ||||||
|  |  | ||||||
|  | Additionally, users can search within issue titles or descriptions and filter | ||||||
|  | issues by the assignee or author. There are also convenient shortcuts to filter | ||||||
|  | issues assigned to or created by the current user. | ||||||
|  |  | ||||||
|  | This command is particularly useful for package maintainers and contributors in | ||||||
|  | the Arch Linux community who need to track and manage issues efficiently. It | ||||||
|  | provides a comprehensive view of the project's or group's issue landscape, | ||||||
|  | enabling maintainers to address and prioritize issues effectively. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-g, --group*:: | ||||||
|  | 	Get issues from the whole packaging subgroup | ||||||
|  |  | ||||||
|  | *-w, --web*:: | ||||||
|  | 	View results in a browser | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | Filter Options | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | *-A, --all*:: | ||||||
|  | 	Get all issues including closed | ||||||
|  |  | ||||||
|  | *-c, --closed*:: | ||||||
|  | 	Get only closed issues | ||||||
|  |  | ||||||
|  | *-U, --unconfirmed*:: | ||||||
|  | 	Shorthand to filter by unconfirmed status label | ||||||
|  |  | ||||||
|  | *--search* 'SEARCH':: | ||||||
|  | 	Search <string> in the fields defined by --in | ||||||
|  |  | ||||||
|  | *--in* 'LOCATION':: | ||||||
|  | 	Search in title or description (default: all) | ||||||
|  |  | ||||||
|  | *-l, --label* 'NAME':: | ||||||
|  | 	Filter issue by label <name> | ||||||
|  |  | ||||||
|  | *--confidentiality* 'TYPE':: | ||||||
|  | 	Filter by confidentiality | ||||||
|  |  | ||||||
|  | *--priority* 'PRIORITY':: | ||||||
|  | 	Shorthand to filter by priority label | ||||||
|  |  | ||||||
|  | *--resolution* 'REASON':: | ||||||
|  | 	Shorthand to filter by resolution label | ||||||
|  |  | ||||||
|  | *--scope* 'SCOPE':: | ||||||
|  | 	Shorthand to filter by scope label | ||||||
|  |  | ||||||
|  | *--severity* 'SEVERITY':: | ||||||
|  | 	Shorthand to filter by severity label | ||||||
|  |  | ||||||
|  | *--status* 'STATUS':: | ||||||
|  | 	Shorthand to filter by status label | ||||||
|  |  | ||||||
|  | *--assignee* 'USERNAME':: | ||||||
|  | 	Filter issues assigned to the given username | ||||||
|  |  | ||||||
|  | *--assigned-to-me*:: | ||||||
|  | 	Shorthand to filter issues assigned to you | ||||||
|  |  | ||||||
|  | *--author* 'USERNAME':: | ||||||
|  | 	Filter issues authored by the given username | ||||||
|  |  | ||||||
|  | *--created-by-me*:: | ||||||
|  | 	Shorthand to filter issues created by you | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										43
									
								
								doc/man/pkgctl-issue-move.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								doc/man/pkgctl-issue-move.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | pkgctl-issue-move(1) | ||||||
|  | ==================== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue-move - Move an issue to another project | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue move [OPTIONS] [IID] [DESTINATION_PACKAGE] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | The move command allows users to transfer an issue from one project to another | ||||||
|  | within the Arch Linux packaging group. This is useful when an issue is | ||||||
|  | identified to be more relevant or better handled in a different project. | ||||||
|  |  | ||||||
|  | By default, the command operates within the current directory, but users can | ||||||
|  | specify a different package base from which to move the issue. | ||||||
|  |  | ||||||
|  | Users must specify the issue ID (IID) and the destination package to which the | ||||||
|  | issue should be moved. A comment message explaining the reason for the move can | ||||||
|  | be provided directly through the command line. For more detailed explanations | ||||||
|  | or additional context, users have the option to edit the move comment using a | ||||||
|  | text editor before submitting it. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-p, --package* 'PKGBASE':: | ||||||
|  | 	Move from `PKGBASE` instead of the current directory | ||||||
|  |  | ||||||
|  | *-m, --message* 'MSG':: | ||||||
|  | 	Use the provided message as the comment | ||||||
|  |  | ||||||
|  | *-e, --edit*:: | ||||||
|  | 	Edit the comment using an editor | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										43
									
								
								doc/man/pkgctl-issue-reopen.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								doc/man/pkgctl-issue-reopen.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | pkgctl-issue-reopen(1) | ||||||
|  | ====================== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue-reopen - Reopen a closed issue | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue reopen [OPTIONS] [IID] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | The reopen command is used to reopen a previously closed issue in Arch Linux | ||||||
|  | packaging projects. This command is useful when an issue needs to be revisited | ||||||
|  | or additional work is required after it was initially closed. | ||||||
|  |  | ||||||
|  | To edit an issue, users must specify the issue ID (IID). By default, the | ||||||
|  | command operates within the current directory, but users can specify a | ||||||
|  | different package base if needed. | ||||||
|  |  | ||||||
|  | Users can provide a message directly through the command line to explain the | ||||||
|  | reason for reopening the issue. For more detailed explanations or to provide | ||||||
|  | additional context, users have the option to edit the reopening comment using a | ||||||
|  | text editor before submitting it. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-p, --package* 'PKGBASE':: | ||||||
|  | 	Interact with `PKGBASE` instead of the current directory | ||||||
|  |  | ||||||
|  | *-m, --message* 'MSG':: | ||||||
|  | 	Use the provided message as the comment | ||||||
|  |  | ||||||
|  | *-e, --edit*:: | ||||||
|  | 	Edit the comment using an editor | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										43
									
								
								doc/man/pkgctl-issue-view.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								doc/man/pkgctl-issue-view.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | pkgctl-issue-view(1) | ||||||
|  | ==================== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue-view - Display information about an issue | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue view [OPTIONS] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | This command is designed to display detailed information about a specific issue | ||||||
|  | in Arch Linux packaging projects. It gathers and pretty prints all relevant | ||||||
|  | data about the issue, providing a comprehensive view that includes the issue's | ||||||
|  | description, status as well as labels and creation date. | ||||||
|  |  | ||||||
|  | By default, the command operates within the current directory, but users have | ||||||
|  | the option to specify a different package base. Additionally, users can choose | ||||||
|  | to view the issue in a web browser for a more interactive experience. | ||||||
|  |  | ||||||
|  | For those requiring deeper insights, the command can also display all comments | ||||||
|  | and activities related to the issue, providing a full historical context and | ||||||
|  | ongoing discussions. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-p, --package* 'PKGBASE':: | ||||||
|  | 	Interact with `PKGBASE` instead of the current directory | ||||||
|  |  | ||||||
|  | *-c, --comments*:: | ||||||
|  | 	Show issue comments and activities | ||||||
|  |  | ||||||
|  | *-w, --web*:: | ||||||
|  | 	Open issue in a browser | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										62
									
								
								doc/man/pkgctl-issue.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								doc/man/pkgctl-issue.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | pkgctl-issue(1) | ||||||
|  | =============== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-issue - Work with GitLab packaging issues | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl issue [SUBCOMMAND] [OPTIONS] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Work with GitLab packaging issues. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | Subcommands | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | pkgctl issue close:: | ||||||
|  | 	Close an issue | ||||||
|  |  | ||||||
|  | pkgctl issue comment:: | ||||||
|  | 	Comment on an issue | ||||||
|  |  | ||||||
|  | pkgctl issue create:: | ||||||
|  | 	Create a new issue | ||||||
|  |  | ||||||
|  | pkgctl issue edit:: | ||||||
|  | 	Edit and modify an issue | ||||||
|  |  | ||||||
|  | pkgctl issue list:: | ||||||
|  | 	List project or group issues | ||||||
|  |  | ||||||
|  | pkgctl issue move:: | ||||||
|  | 	Move an issue to another project | ||||||
|  |  | ||||||
|  | pkgctl issue reopen:: | ||||||
|  | 	Reopen a closed issue | ||||||
|  |  | ||||||
|  | pkgctl issue view:: | ||||||
|  | 	Display information about an issue | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-issue-close(1) | ||||||
|  | pkgctl-issue-comment(1) | ||||||
|  | pkgctl-issue-create(1) | ||||||
|  | pkgctl-issue-edit(1) | ||||||
|  | pkgctl-issue-list(1) | ||||||
|  | pkgctl-issue-move(1) | ||||||
|  | pkgctl-issue-reopen(1) | ||||||
|  | pkgctl-issue-view(1) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										54
									
								
								doc/man/pkgctl-license-check.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								doc/man/pkgctl-license-check.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | pkgctl-license-check(1) | ||||||
|  | ======================= | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-license-check - Checks package licensing compliance using REUSE | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl license check [OPTIONS] [PKGBASE...] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Checks package licensing compliance using REUSE and also verifies whether | ||||||
|  | a LICENSE file with the expected Arch Linux-specific 0BSD license text exists. | ||||||
|  |  | ||||||
|  | Configuration | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | Uses reuse(1) and a `REUSE.toml` file located alongside the PKGBUILD(5). Refer | ||||||
|  | to the configuration section in pkgctl-license(1). | ||||||
|  |  | ||||||
|  | If no `PKGBASE` is specified, the command defaults to using the current working | ||||||
|  | directory. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | Exit Codes | ||||||
|  | ---------- | ||||||
|  |  | ||||||
|  | On exit, return one of the following codes: | ||||||
|  |  | ||||||
|  | *0*:: | ||||||
|  | 	Normal exit condition, all checked packages are compliant | ||||||
|  |  | ||||||
|  | *1*:: | ||||||
|  | 	Unknown cause of failure | ||||||
|  |  | ||||||
|  | *2*:: | ||||||
|  | 	Normal exit condition, but some packages are not compliant | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-license(1) | ||||||
|  | reuse(1) | ||||||
|  | PKGBUILD(5) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										55
									
								
								doc/man/pkgctl-license-setup.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								doc/man/pkgctl-license-setup.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | pkgctl-license-setup(1) | ||||||
|  | ======================= | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-license-setup - Automatically detect and setup a basic REUSE | ||||||
|  | configuration | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl license setup [OPTIONS] [PKGBASE...] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | This subcommand automates the creation of the Arch Linux 0BSD package license | ||||||
|  | file as well as a basic reuse(1) configuration by applying simple heuristics. | ||||||
|  | It comes in especially handy when initially setting up licensing for a package | ||||||
|  | without the need to manually write a `REUSE.toml` file. | ||||||
|  |  | ||||||
|  | If any `.patch` files are detected and the PKGBUILD(5) has only a single entry | ||||||
|  | in the `license=()` array, this subcommand assumes the patches are licensed | ||||||
|  | under that license and generates annotations for them. | ||||||
|  |  | ||||||
|  | In case there are no patches, no additional annotations are generated. | ||||||
|  |  | ||||||
|  | Manual annotations are necessary in case the subcommand can't generate a | ||||||
|  | configuration that accounts for all files. In this case, `reuse lint` will fail | ||||||
|  | with a descriptive error of which files are missing an annotation. | ||||||
|  |  | ||||||
|  | If no `PKGBASE` is specified, the command defaults to using the current working | ||||||
|  | directory. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-f, --force*:: | ||||||
|  | 	Overwrite existing reuse(1) configuration | ||||||
|  |  | ||||||
|  | *--no-check*:: | ||||||
|  | 	Do not run pkgctl-license-check(1) after setup | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-license(1) | ||||||
|  | pkgctl-license-check(1) | ||||||
|  | reuse(1) | ||||||
|  | PKGBUILD(5) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										54
									
								
								doc/man/pkgctl-license.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								doc/man/pkgctl-license.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | pkgctl-license(1) | ||||||
|  | ================= | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-license - Check and manage package license compliance | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl license [OPTIONS] [SUBCOMMAND] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Commands related to package licenses, including checks for compliance. | ||||||
|  |  | ||||||
|  | Uses reuse(1) and a `REUSE.toml` file located alongside the PKGBUILD(5). | ||||||
|  |  | ||||||
|  | Configuration | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | The `REUSE.toml` file must contain annotations for all regular files expected | ||||||
|  | to be present in an Arch Linux package repository. | ||||||
|  |  | ||||||
|  | Use pkgctl-license-setup(1) to automatically detect and setup a basic REUSE | ||||||
|  | config file based on the files in the package repository. | ||||||
|  |  | ||||||
|  | For detailed information on the various configuration options available for the | ||||||
|  | `REUSE.toml` file, refer to the REUSE Specification (https://reuse.software/spec). | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | Subcommands | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | pkgctl license check:: | ||||||
|  | 	Checks package licensing compliance using REUSE | ||||||
|  |  | ||||||
|  | pkgctl license setup:: | ||||||
|  | 	Automatically detect and setup a basic REUSE config | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-license-check(1) | ||||||
|  | pkgctl-license-setup(1) | ||||||
|  | reuse(1) | ||||||
|  | PKGBUILD(5) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
| @@ -27,7 +27,9 @@ Options | |||||||
| 	Use the given <msg> as the commit message | 	Use the given <msg> as the commit message | ||||||
|  |  | ||||||
| *-r, --repo* 'REPO':: | *-r, --repo* 'REPO':: | ||||||
| 	Specify a target repository (disables auto-detection) | 	Specify target repository for new packages not in any official repo. | ||||||
|  | 	Using this option is disallowed if the package is already released, as it | ||||||
|  | 	would circumvent the auto-detection safeguard. | ||||||
|  |  | ||||||
| *-s, --staging*:: | *-s, --staging*:: | ||||||
| 	Build against the staging counterpart of the auto-detected repo | 	Build against the staging counterpart of the auto-detected repo | ||||||
| @@ -44,6 +46,6 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-db-update[1] | pkgctl-db-update(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
							
								
								
									
										40
									
								
								doc/man/pkgctl-repo-clean.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								doc/man/pkgctl-repo-clean.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | pkgctl-repo-clean(1) | ||||||
|  | ==================== | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  |  | ||||||
|  | pkgctl-repo-clean - Remove untracked files from the working tree | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl repo clean [OPTION] [PATH]... | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Cleans the working tree by recursively removing files that are not under | ||||||
|  | version control, starting from the current directory. | ||||||
|  |  | ||||||
|  | Files unknown to Git as well as ignored files are removed. This can, for | ||||||
|  | example, be useful to remove all build products. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-i, --interactive*:: | ||||||
|  | 	Show what would be done and clean files interactively | ||||||
|  |  | ||||||
|  | *-n, --dry-run*:: | ||||||
|  | 	Don't actually remove anything, just show what would be done | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | git-clean(1) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
| @@ -46,7 +46,7 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-repo-configure[1] | pkgctl-repo-configure(1) | ||||||
| linkman:pkgctl-repo-switch[1] | pkgctl-repo-switch(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -22,6 +22,8 @@ The remote protocol is automatically determined from the author email | |||||||
| address by choosing SSH for all official packager identities and | address by choosing SSH for all official packager identities and | ||||||
| read-only HTTPS otherwise. | read-only HTTPS otherwise. | ||||||
|  |  | ||||||
|  | Git default excludes and hooks are applied to the configured repo. | ||||||
|  |  | ||||||
| Options | Options | ||||||
| ------- | ------- | ||||||
|  |  | ||||||
|   | |||||||
| @@ -33,8 +33,8 @@ Options | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-auth[1] | pkgctl-auth(1) | ||||||
| linkman:pkgctl-repo-clone[1] | pkgctl-repo-clone(1) | ||||||
| linkman:pkgctl-repo-configure[1] | pkgctl-repo-configure(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -18,6 +18,9 @@ no arguments, open the package cloned in the current working directory. | |||||||
| Options | Options | ||||||
| ------- | ------- | ||||||
|  |  | ||||||
|  | *--print*:: | ||||||
|  | 	Print the url instead of opening it with xdg-open | ||||||
|  |  | ||||||
| *-h, --help*:: | *-h, --help*:: | ||||||
| 	Show a help text | 	Show a help text | ||||||
|  |  | ||||||
|   | |||||||
| @@ -32,6 +32,9 @@ Options | |||||||
| Subcommands | Subcommands | ||||||
| ----------- | ----------- | ||||||
|  |  | ||||||
|  | pkgctl repo clean:: | ||||||
|  | 	Remove untracked files from the working tree | ||||||
|  |  | ||||||
| pkgctl repo clone:: | pkgctl repo clone:: | ||||||
| 	Clone a package repository | 	Clone a package repository | ||||||
|  |  | ||||||
| @@ -50,10 +53,11 @@ pkgctl repo web:: | |||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-repo-clone[1] | pkgctl-repo-clean(1) | ||||||
| linkman:pkgctl-repo-configure[1] | pkgctl-repo-clone(1) | ||||||
| linkman:pkgctl-repo-create[1] | pkgctl-repo-configure(1) | ||||||
| linkman:pkgctl-repo-switch[1] | pkgctl-repo-create(1) | ||||||
| linkman:pkgctl-repo-web[1] | pkgctl-repo-switch(1) | ||||||
|  | pkgctl-repo-web(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
							
								
								
									
										71
									
								
								doc/man/pkgctl-search.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								doc/man/pkgctl-search.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | pkgctl-search(1) | ||||||
|  | ================ | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-search - Search for an expression across the GitLab packaging group | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl search [OPTIONS] QUERY | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Search for an expression across the GitLab packaging group. | ||||||
|  |  | ||||||
|  | To use a filter, include it in your query. You may use wildcards (*) to | ||||||
|  | use glob matching. | ||||||
|  |  | ||||||
|  | Available filters for the blobs scope: path, extension | ||||||
|  |  | ||||||
|  | Every usage of the search command must be authenticated. Consult the | ||||||
|  | `'pkgctl auth'` command to authenticate with GitLab or view the authentication | ||||||
|  | status. | ||||||
|  |  | ||||||
|  | Search Tips | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | 	Syntax  Description    Example | ||||||
|  | 	─────────────────────────────────────── | ||||||
|  | 	"       Exact search   "gem sidekiq" | ||||||
|  | 	~       Fuzzy search   J~ Doe | ||||||
|  | 	|       Or             display | banner | ||||||
|  | 	+       And            display +banner | ||||||
|  | 	-       Exclude        display -banner | ||||||
|  | 	*       Partial        bug error 50* | ||||||
|  | 	\       Escape         \*md | ||||||
|  | 	#       Issue ID       #23456 | ||||||
|  | 	!       Merge request  !23456 | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | Filter Options | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | *--no-default-filter*:: | ||||||
|  | 	Do not apply default filter (like -path:keys/pgp/*.asc) | ||||||
|  |  | ||||||
|  | Output Options | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | *--json*:: | ||||||
|  | 	Enable printing in JSON; Shorthand for `'--format json'` | ||||||
|  |  | ||||||
|  | *-F, --format* 'FORMAT':: | ||||||
|  | 	Controls the formatting of the results; `FORMAT` is `'pretty'`, `'plain'`, | ||||||
|  | 	or `'json'` (default `pretty`) | ||||||
|  |  | ||||||
|  | *-N, --no-line-number*:: | ||||||
|  | 	Don't show line numbers when formatting results | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-auth(1) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										79
									
								
								doc/man/pkgctl-version-check.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								doc/man/pkgctl-version-check.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,79 @@ | |||||||
|  | pkgctl-version-check(1) | ||||||
|  | ======================= | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-version-check - Compares local package versions against upstream | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl version check [OPTIONS] [PKGBASE...] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Compares the versions of packages in the local packaging repository against | ||||||
|  | their latest upstream versions. | ||||||
|  |  | ||||||
|  | Upon execution, it generates a grouped list that provides detailed insights | ||||||
|  | into each package's status. For each package, it displays the current local | ||||||
|  | version alongside the latest version available upstream. | ||||||
|  |  | ||||||
|  | Outputs a summary of up-to-date packages, out-of-date packages, and any check | ||||||
|  | failures. | ||||||
|  |  | ||||||
|  | This simplifies the maintenance of PKGBUILD files, reducing the manual effort | ||||||
|  | required to track version changes from upstream sources. | ||||||
|  |  | ||||||
|  | Configuration | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | Uses nvchecker(1) and a `.nvchecker.toml` file located alongside the | ||||||
|  | PKGBUILD. Refer to the configuration section in pkgctl-version(1). | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | Filter Options | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | *-v, --verbose*:: | ||||||
|  | 	Display all results including up-to-date versions | ||||||
|  |  | ||||||
|  | Output Options | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | *--json*:: | ||||||
|  | 	Enable printing in JSON; Shorthand for `'--format json'` | ||||||
|  |  | ||||||
|  | *-F, --format* 'FORMAT':: | ||||||
|  | 	Controls the output format of the results; `FORMAT` is `'pretty'`, | ||||||
|  | 	or `'json'` (default `pretty`) | ||||||
|  |  | ||||||
|  | Exit Codes | ||||||
|  | ---------- | ||||||
|  |  | ||||||
|  | On exit, return one of the following codes: | ||||||
|  |  | ||||||
|  | *0*:: | ||||||
|  | 	Normal exit condition, all checked versions are up-to-date | ||||||
|  |  | ||||||
|  | *1*:: | ||||||
|  | 	Unknown cause of failure | ||||||
|  |  | ||||||
|  | *2*:: | ||||||
|  | 	Normal exit condition, but there are out-of-date versions | ||||||
|  |  | ||||||
|  | *3*:: | ||||||
|  | 	Failed to run some version checks | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-version(1) | ||||||
|  | nvchecker(1) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										125
									
								
								doc/man/pkgctl-version-setup.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								doc/man/pkgctl-version-setup.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,125 @@ | |||||||
|  | pkgctl-version-setup(1) | ||||||
|  | ======================= | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-version-setup - Automatically detect and setup a basic nvchecker config | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl version setup [OPTIONS] [PKGBASE...] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | This subcommand automates the creation of a basic nvchecker(1) configuration | ||||||
|  | file by analyzing the source array specified in the PKGBUILD(1) file of a | ||||||
|  | package. This command intelligently detects various platforms and APIs (e.g., | ||||||
|  | GitHub, GitLab, PyPI) used by the package sources and generates a corresponding | ||||||
|  | `.nvchecker.toml` configuration based on its best guess. | ||||||
|  |  | ||||||
|  | This is particularly useful for initializing nvchecker(1) settings for a | ||||||
|  | package without manually crafting the `.nvchecker.toml` file. It simplifies the | ||||||
|  | process of setting up version checks, especially when transitioning a package's | ||||||
|  | monitoring from one source platform to another or starting version checks for a | ||||||
|  | new package. | ||||||
|  |  | ||||||
|  | If no `PKGBASE` is specified, the command defaults to using the current working | ||||||
|  | directory. | ||||||
|  |  | ||||||
|  | To obtain a list of supported sources and their expected URL formats, please | ||||||
|  | consult the sources section. | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *-f, --force*:: | ||||||
|  | 	Overwrite existing nvchecker(1) configuration | ||||||
|  |  | ||||||
|  | *--prefer-platform-api*:: | ||||||
|  | 	Prefer platform specific GitHub/GitLab API over git for complex cases | ||||||
|  |  | ||||||
|  | *--url* 'URL':: | ||||||
|  | 	Derive check target from the given URL instead of the source array entries | ||||||
|  |  | ||||||
|  | *--no-check*:: | ||||||
|  | 	Do not run pkgctl-version-check(1) after setup | ||||||
|  |  | ||||||
|  | *--no-upstream*:: | ||||||
|  | 	Setup a blank config for packages without upstream sources, like meta | ||||||
|  | 	packages. This must only be used for cases without an upstream, please | ||||||
|  | 	reach out to the developer team for guidance regarding upstream sources | ||||||
|  | 	that are hard to configure. | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | Sources | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | Here are the currently supported platforms and sources, along with examples of | ||||||
|  | URL formats that enable their automatic detection as specific source types: | ||||||
|  |  | ||||||
|  | *Git*:: | ||||||
|  | 	* https://github.com/example/project | ||||||
|  | 	* https://gitlab.com/example/group/project | ||||||
|  | 	* git://git.foobar.org/example | ||||||
|  | 	* git+https://git.foobar.org/example | ||||||
|  |  | ||||||
|  | *GitHub*:: | ||||||
|  | 	* https://github.com/example/project | ||||||
|  | 	* https://github.com/example/project/archive/v1.0/project-v1.0.tar.gz | ||||||
|  |  | ||||||
|  | *GitLab*:: | ||||||
|  | 	* https://gitlab.com/example/group/project | ||||||
|  | 	* https://gitlab.archlinux.org/archlinux/devtools.git | ||||||
|  | 	* https://gitlab.archlinux.org/archlinux/devtools/-/releases/v1.1.0/downloads/devtools-v1.1.0.tar.gz | ||||||
|  |  | ||||||
|  | *Hackage*:: | ||||||
|  | 	* https://hackage.haskell.org/package/xmonad | ||||||
|  | 	* https://hackage.haskell.org/package/xmonad-0.18.0/xmonad-0.18.0.tar.gz | ||||||
|  | 	* https://hackage.haskell.org/packages/archive/xmonad/0.18.0/xmonad-0.18.0.tar.gz | ||||||
|  |  | ||||||
|  | *NPM*:: | ||||||
|  | 	* https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz | ||||||
|  | 	* https://www.npmjs.com/package/node-gyp | ||||||
|  |  | ||||||
|  | *PyPI*:: | ||||||
|  | 	* https://pypi.io/packages/source/p/pyflakes | ||||||
|  | 	* https://pypi.org/packages/source/b/bleach | ||||||
|  | 	* https://files.pythonhosted.org/packages/source/p/pyflakes | ||||||
|  | 	* https://pypi.org/project/SQLAlchemy/ | ||||||
|  |  | ||||||
|  | *RubyGems*:: | ||||||
|  | 	* https://rubygems.org/downloads/diff-lcs-1.5.1.gem | ||||||
|  | 	* https://rubygems.org/gems/diff-lcs | ||||||
|  |  | ||||||
|  | *CPAN*:: | ||||||
|  | 	* https://search.cpan.org/CPAN/authors/id/C/CO/COSIMO/Locale-PO-0.27.tar.gz | ||||||
|  | 	* https://cpan.metacpan.org/authors/id/C/CO/COSIMO/Locale-PO-0.27.tar.gz | ||||||
|  |  | ||||||
|  | *crates.io*:: | ||||||
|  | 	* https://static.crates.io/crates/shotgun/shotgun-1.0.crate | ||||||
|  | 	* https://crates.io/api/v1/crates/shotgun/1.0/download | ||||||
|  | 	* https://crates.io/crates/git-smash | ||||||
|  |  | ||||||
|  | Examples | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | *pkgctl version setup*:: | ||||||
|  | 	Detects the source from the current directory's PKGBUILD(1) and | ||||||
|  | 	sets up a basic `.nvchecker.toml`. | ||||||
|  |  | ||||||
|  | *pkgctl version setup --url https://github.com/example/project*:: | ||||||
|  | 	Generates an `.nvchecker.toml` for the current PKGBUILD(1) but | ||||||
|  | 	overrides the source URL with the specified GitHub project. | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-version(1) | ||||||
|  | pkgctl-version-check(1) | ||||||
|  | nvchecker(1) | ||||||
|  | PKGBUILD(5) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
							
								
								
									
										53
									
								
								doc/man/pkgctl-version-upgrade.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								doc/man/pkgctl-version-upgrade.1.asciidoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | |||||||
|  | pkgctl-version-upgrade(1) | ||||||
|  | ========================= | ||||||
|  |  | ||||||
|  | Name | ||||||
|  | ---- | ||||||
|  | pkgctl-version-upgrade - Adjust the PKGBUILD to match the latest upstream version | ||||||
|  |  | ||||||
|  | Synopsis | ||||||
|  | -------- | ||||||
|  | pkgctl version upgrade [OPTIONS] [PKGBASE...] | ||||||
|  |  | ||||||
|  | Description | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | Streamlines the process of keeping PKGBUILD files up-to-date with the latest | ||||||
|  | upstream versions. | ||||||
|  |  | ||||||
|  | Upon execution, it automatically adjusts the PKGBUILD file, ensuring that the | ||||||
|  | pkgver field is set to match the latest version available from the upstream | ||||||
|  | source. In addition to updating the pkgver, this command also resets the pkgrel | ||||||
|  | to 1 and updates checksums. | ||||||
|  |  | ||||||
|  | Outputs a summary of upgraded packages, up-to-date packages, and any check | ||||||
|  | failures. | ||||||
|  |  | ||||||
|  | This simplifies the maintenance of PKGBUILD files, reducing the manual effort | ||||||
|  | required to track and implement version changes from upstream sources. | ||||||
|  |  | ||||||
|  | Configuration | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | Uses nvchecker(1) and a `.nvchecker.toml` file located alongside the | ||||||
|  | PKGBUILD. Refer to the configuration section in pkgctl-version(1). | ||||||
|  |  | ||||||
|  | Options | ||||||
|  | ------- | ||||||
|  |  | ||||||
|  | *--no-update-checksums*:: | ||||||
|  | 	Disable computation and update of the checksums | ||||||
|  |  | ||||||
|  | *-v, --verbose*:: | ||||||
|  | 	Display results including up-to-date versions | ||||||
|  |  | ||||||
|  | *-h, --help*:: | ||||||
|  | 	Show a help text | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-version(1) | ||||||
|  | nvchecker(1) | ||||||
|  |  | ||||||
|  | include::include/footer.asciidoc[] | ||||||
| @@ -3,16 +3,41 @@ pkgctl-version(1) | |||||||
|  |  | ||||||
| Name | Name | ||||||
| ---- | ---- | ||||||
| pkgctl-version - Show pkgctl version information | pkgctl-version - Check and manage package versions against upstream | ||||||
|  |  | ||||||
|  |  | ||||||
| Synopsis | Synopsis | ||||||
| -------- | -------- | ||||||
| pkgctl version [OPTIONS] | pkgctl version [OPTIONS] [SUBCOMMAND] | ||||||
|  |  | ||||||
| Description | Description | ||||||
| ----------- | ----------- | ||||||
|  |  | ||||||
| Shows the current version information of pkgctl. | Commands related to package versions, including checks for outdated packages. | ||||||
|  |  | ||||||
|  | Uses nvchecker(1) and a `.nvchecker.toml` file located alongside the | ||||||
|  | PKGBUILD. | ||||||
|  |  | ||||||
|  | Configuration | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | The `.nvchecker.toml` file must contain a section that matches the | ||||||
|  | package's pkgbase. The pkgbase section within the `.nvchecker.toml` file | ||||||
|  | specifies the source and method for checking the latest version of the | ||||||
|  | corresponding package. | ||||||
|  |  | ||||||
|  | Use pkgctl-version-setup(1) to automatically detect and setup a basic nvchecker | ||||||
|  | config based on the source array of the package PKGBUILD. | ||||||
|  |  | ||||||
|  | For detailed information on the various configuration options available for the | ||||||
|  | `.nvchecker.toml` file, refer to the configuration files section in | ||||||
|  | nvchecker(1). This documentation provides insights into the possible | ||||||
|  | options that can be utilized to customize the version checking process. | ||||||
|  |  | ||||||
|  | To supply GitHub or GitLab tokens to nvchecker, a `keyfile.toml` should be | ||||||
|  | placed in the `$XDG_CONFIG_HOME`/nvchecker` directory. This keyfile is | ||||||
|  | used for providing the necessary authentication tokens required for | ||||||
|  | accessing the GitHub or GitLab API. | ||||||
|  |  | ||||||
| Options | Options | ||||||
| ------- | ------- | ||||||
| @@ -20,4 +45,23 @@ Options | |||||||
| *-h, --help*:: | *-h, --help*:: | ||||||
| 	Show a help text | 	Show a help text | ||||||
|  |  | ||||||
|  | Subcommands | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | pkgctl version check:: | ||||||
|  | 	Compares local package versions against upstream | ||||||
|  |  | ||||||
|  | pkgctl version setup:: | ||||||
|  | 	Automatically detect and setup a basic nvchecker config | ||||||
|  |  | ||||||
|  | pkgctl version upgrade:: | ||||||
|  | 	Adjust the PKGBUILD to match the latest upstream version | ||||||
|  |  | ||||||
|  | See Also | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | pkgctl-version-check(1) | ||||||
|  | pkgctl-version-setup(1) | ||||||
|  | pkgctl-version-upgrade(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -12,7 +12,12 @@ pkgctl [SUBCOMMAND] [OPTIONS] | |||||||
| Description | Description | ||||||
| ----------- | ----------- | ||||||
|  |  | ||||||
| TODO | Command-line utility serving as a unified interface for multiple development tools. | ||||||
|  | This tool aims to simplify and optimize interactions with devtools by offering | ||||||
|  | various subcommands for executing tasks related to package management, repository management, | ||||||
|  | version control, among others. | ||||||
|  |  | ||||||
|  | Utilizing pkgctl enables users to efficiently administer their development workflows. | ||||||
|  |  | ||||||
| Options | Options | ||||||
| ------- | ------- | ||||||
| @@ -26,6 +31,9 @@ Options | |||||||
| Subcommands | Subcommands | ||||||
| ----------- | ----------- | ||||||
|  |  | ||||||
|  | pkgctl aur:: | ||||||
|  | 	Interact with the Arch User Repository | ||||||
|  |  | ||||||
| pkgctl auth:: | pkgctl auth:: | ||||||
| 	Authenticate with services like GitLab | 	Authenticate with services like GitLab | ||||||
|  |  | ||||||
| @@ -38,24 +46,33 @@ pkgctl db:: | |||||||
| pkgctl diff:: | pkgctl diff:: | ||||||
| 	Compare package files using different modes | 	Compare package files using different modes | ||||||
|  |  | ||||||
|  | pkgctl issue:: | ||||||
|  | 	Work with GitLab packaging issues | ||||||
|  |  | ||||||
| pkgctl release:: | pkgctl release:: | ||||||
| 	Release step to commit, tag and upload build artifacts | 	Release step to commit, tag and upload build artifacts | ||||||
|  |  | ||||||
| pkgctl repo:: | pkgctl repo:: | ||||||
| 	Manage Git packaging repositories and their configuration | 	Manage Git packaging repositories and their configuration | ||||||
|  |  | ||||||
|  | pkgctl search:: | ||||||
|  | 	Search for an expression across the GitLab packaging group | ||||||
|  |  | ||||||
| pkgctl version:: | pkgctl version:: | ||||||
| 	Show pkgctl version information | 	Check and manage package versions against upstream | ||||||
|  |  | ||||||
| See Also | See Also | ||||||
| -------- | -------- | ||||||
|  |  | ||||||
| linkman:pkgctl-auth[1] | pkgctl-aur(1) | ||||||
| linkman:pkgctl-build[1] | pkgctl-auth(1) | ||||||
| linkman:pkgctl-db[1] | pkgctl-build(1) | ||||||
| linkman:pkgctl-diff[1] | pkgctl-db(1) | ||||||
| linkman:pkgctl-release[1] | pkgctl-diff(1) | ||||||
| linkman:pkgctl-repo[1] | pkgctl-issue(1) | ||||||
| linkman:pkgctl-version[1] | pkgctl-release(1) | ||||||
|  | pkgctl-repo(1) | ||||||
|  | pkgctl-search(1) | ||||||
|  | pkgctl-version(1) | ||||||
|  |  | ||||||
| include::include/footer.asciidoc[] | include::include/footer.asciidoc[] | ||||||
|   | |||||||
| @@ -22,12 +22,13 @@ usage() { | |||||||
| 	echo "A wrapper around systemd-nspawn. Provides support for pacman." | 	echo "A wrapper around systemd-nspawn. Provides support for pacman." | ||||||
| 	echo | 	echo | ||||||
| 	echo ' options:' | 	echo ' options:' | ||||||
| 	echo '    -C <file>     Location of a pacman config file' | 	echo '    -C <file>           Location of a pacman config file' | ||||||
| 	echo '    -M <file>     Location of a makepkg config file' | 	echo '    -M <file>           Location of a makepkg config file' | ||||||
| 	echo '    -c <dir>      Set pacman cache' | 	echo '    -c <dir>            Set pacman cache' | ||||||
| 	echo '    -f <file>     Copy file from the host to the chroot' | 	echo '    -f <src>[:<dst>]    Copy src file from the host to the chroot.' | ||||||
| 	echo '    -s            Do not run setarch' | 	echo '                        If dst file is not provided, it defaults to src' | ||||||
| 	echo '    -h            This message' | 	echo '    -s                  Do not run setarch' | ||||||
|  | 	echo '    -h                  This message' | ||||||
| 	exit 1 | 	exit 1 | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -63,6 +64,8 @@ nspawn_args=( | |||||||
| 	--slice="devtools-$(systemd-escape "${SUDO_USER:-$USER}")" | 	--slice="devtools-$(systemd-escape "${SUDO_USER:-$USER}")" | ||||||
| 	--machine="arch-nspawn-$$" | 	--machine="arch-nspawn-$$" | ||||||
| 	--as-pid2 | 	--as-pid2 | ||||||
|  | 	--console=autopipe | ||||||
|  | 	--timezone=off | ||||||
| ) | ) | ||||||
|  |  | ||||||
| if (( ${#cache_dirs[@]} == 0 )); then | if (( ${#cache_dirs[@]} == 0 )); then | ||||||
| @@ -71,6 +74,7 @@ fi | |||||||
|  |  | ||||||
| # shellcheck disable=2016 | # shellcheck disable=2016 | ||||||
| host_mirrors=($(pacman-conf --repo extra Server 2> /dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')) | host_mirrors=($(pacman-conf --repo extra Server 2> /dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')) | ||||||
|  | host_cachemirrors=($(pacman-conf --repo extra CacheServer 2> /dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')) | ||||||
|  |  | ||||||
| for host_mirror in "${host_mirrors[@]}"; do | for host_mirror in "${host_mirrors[@]}"; do | ||||||
| 	if [[ $host_mirror == *file://* ]]; then | 	if [[ $host_mirror == *file://* ]]; then | ||||||
| @@ -105,13 +109,23 @@ copy_hostconf () { | |||||||
|  |  | ||||||
| 	printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist" | 	printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist" | ||||||
|  |  | ||||||
|  | 	[[ -n $host_cachemirrors ]] && printf 'CacheServer = %s\n' "${host_cachemirrors[@]}" >>"$working_dir/etc/pacman.d/mirrorlist" | ||||||
|  |  | ||||||
| 	[[ -n $pac_conf ]] && cp "$pac_conf" "$working_dir/etc/pacman.conf" | 	[[ -n $pac_conf ]] && cp "$pac_conf" "$working_dir/etc/pacman.conf" | ||||||
| 	[[ -n $makepkg_conf ]] && cp "$makepkg_conf" "$working_dir/etc/makepkg.conf" | 	if [[ -n $makepkg_conf ]]; then | ||||||
|  | 		cp "$makepkg_conf" "$working_dir/etc/makepkg.conf" | ||||||
|  | 		if [[ -d "${makepkg_conf}.d" ]] && is_globfile "${makepkg_conf}.d"/*.conf; then | ||||||
|  | 			mkdir --parents "$working_dir/etc/makepkg.conf.d/" | ||||||
|  | 			cp "${makepkg_conf}.d/"*.conf "$working_dir/etc/makepkg.conf.d/" | ||||||
|  | 		fi | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| 	local file | 	local file | ||||||
| 	for file in "${files[@]}"; do | 	for file in "${files[@]}"; do | ||||||
| 		mkdir -p "$(dirname "$working_dir$file")" | 		src="${file%%:*}" | ||||||
| 		cp -T "$file" "$working_dir$file" | 		dst="${file#*:}" | ||||||
|  | 		mkdir -p "$(dirname "$working_dir$dst")" | ||||||
|  | 		cp -T "$src" "$working_dir$dst" | ||||||
| 	done | 	done | ||||||
|  |  | ||||||
| 	sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "$working_dir/etc/pacman.conf" | 	sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "$working_dir/etc/pacman.conf" | ||||||
|   | |||||||
| @@ -79,6 +79,13 @@ check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAG | |||||||
| # Pass all arguments after -- right to makepkg | # Pass all arguments after -- right to makepkg | ||||||
| makechrootpkg_args+=("${@:$OPTIND}") | makechrootpkg_args+=("${@:$OPTIND}") | ||||||
|  |  | ||||||
|  | # Automatically recreate the root chroot if a version mismatch is detected | ||||||
|  | CURRENT_CHROOT_VERSION=$(cat "${chroots}/${repo}-${arch}/root/.arch-chroot") | ||||||
|  | if [[ -f "${chroots}/${repo}-${arch}/root/.arch-chroot" ]] && [[ "$CURRENT_CHROOT_VERSION" != "$CHROOT_VERSION" ]]; then | ||||||
|  | 	warning "Recreating chroot '%s' (%s) as it is not at version %s" "${chroots}/${repo}-${arch}/root" "$CURRENT_CHROOT_VERSION" "$CHROOT_VERSION" | ||||||
|  | 	clean_first=true | ||||||
|  | fi | ||||||
|  |  | ||||||
| if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then | if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then | ||||||
| 	msg "Creating chroot for [%s] (%s)..." "${repo}" "${arch}" | 	msg "Creating chroot for [%s] (%s)..." "${repo}" "${arch}" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,8 +7,6 @@ _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | |||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | ||||||
| # shellcheck source=src/lib/valid-tags.sh | # shellcheck source=src/lib/valid-tags.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-tags.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-tags.sh | ||||||
| # shellcheck source=src/lib/util/git.sh |  | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/git.sh |  | ||||||
|  |  | ||||||
| set -e | set -e | ||||||
|  |  | ||||||
| @@ -37,7 +35,7 @@ fi | |||||||
| # validate repo is really repo-arch | # validate repo is really repo-arch | ||||||
| if [[ -z $FORCE ]]; then | if [[ -z $FORCE ]]; then | ||||||
| 	for tag in "$@"; do | 	for tag in "$@"; do | ||||||
| 		if ! in_array "$tag" "${_tags[@]}"; then | 		if ! in_array "$tag" "${DEVTOOLS_VALID_TAGS[@]}"; then | ||||||
| 			die "archrelease: Invalid tag: '%s' (use -f to force release)" "$tag" | 			die "archrelease: Invalid tag: '%s' (use -f to force release)" "$tag" | ||||||
| 		fi | 		fi | ||||||
| 	done | 	done | ||||||
| @@ -57,8 +55,8 @@ gittag=$(get_tag_from_pkgver "$pkgver") | |||||||
| if ! branchname=$(git symbolic-ref --short HEAD); then | if ! branchname=$(git symbolic-ref --short HEAD); then | ||||||
| 	die 'not on any branch' | 	die 'not on any branch' | ||||||
| fi | fi | ||||||
| if ! is_valid_release_branch "${branchname}"; then | if [[ "${branchname}" != main ]]; then | ||||||
| 	die 'must be run from a valid release branch (%s)' "${VALID_RELEASE_BRANCHES[@]}" | 	die 'must be run from the main branch' | ||||||
| fi | fi | ||||||
|  |  | ||||||
| # Check if remote origin is setup properly | # Check if remote origin is setup properly | ||||||
| @@ -87,10 +85,10 @@ if git tag --verify "$gittag" &> /dev/null; then | |||||||
| 	if [[ "$cwd_checksum" != "$tag_checksum" ]]; then | 	if [[ "$cwd_checksum" != "$tag_checksum" ]]; then | ||||||
| 		die "tagged PKGBUILD is not the same as the working dir PKGBUILD" | 		die "tagged PKGBUILD is not the same as the working dir PKGBUILD" | ||||||
| 	fi | 	fi | ||||||
| 	git push --tags --set-upstream origin "${branchname}" || abort | 	git push --tags --set-upstream origin main || abort | ||||||
| 	exit 0 | 	exit 0 | ||||||
| fi | fi | ||||||
|  |  | ||||||
| msg "Releasing package" | msg "Releasing package" | ||||||
| git tag --sign --message="Package release ${pkgver}" "$gittag" || abort | git tag --sign --message="Package release ${pkgver}" "$gittag" || abort | ||||||
| git push --tags --set-upstream origin "${branchname}" || abort | git push --tags --set-upstream origin main || abort | ||||||
|   | |||||||
| @@ -140,7 +140,7 @@ for _pkgname in "${pkgname[@]}"; do | |||||||
| 	bsdtar tf "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old" | 	bsdtar tf "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old" | ||||||
| 	bsdtar tf "$pkgfile" | sort > "$TEMPDIR/filelist-$_pkgname" | 	bsdtar tf "$pkgfile" | sort > "$TEMPDIR/filelist-$_pkgname" | ||||||
|  |  | ||||||
| 	sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname" | 	diff --side-by-side --suppress-common-lines --width="${COLUMNS:-130}" --color=auto "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname" | ||||||
|  |  | ||||||
| 	find-libprovides "$TEMPDIR/$oldpkg" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname-old" | 	find-libprovides "$TEMPDIR/$oldpkg" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname-old" | ||||||
| 	find-libprovides "$pkgfile" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname" | 	find-libprovides "$pkgfile" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname" | ||||||
|   | |||||||
| @@ -5,11 +5,13 @@ | |||||||
| _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | ||||||
| # shellcheck source=src/lib/common.sh | # shellcheck source=src/lib/common.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | ||||||
| # shellcheck source=src/lib/util/git.sh | # shellcheck source=src/lib/util/srcinfo.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/git.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/srcinfo.sh | ||||||
|  |  | ||||||
| source /usr/share/makepkg/util/util.sh | source /usr/share/makepkg/util/util.sh | ||||||
|  |  | ||||||
|  | set -eo pipefail | ||||||
|  |  | ||||||
|  |  | ||||||
| check_pkgbuild_validity() { | check_pkgbuild_validity() { | ||||||
| 	# shellcheck source=contrib/makepkg/PKGBUILD.proto | 	# shellcheck source=contrib/makepkg/PKGBUILD.proto | ||||||
| @@ -72,12 +74,14 @@ if ! repo_spec=$(git config --local devtools.version) || [[ ${repo_spec} != "${G | |||||||
| 	exit 1 | 	exit 1 | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if ! branchname=$(git symbolic-ref --short HEAD); then | if ! repo_variant=$(git config --local devtools.variant) || [[ ${repo_variant} != canonical ]]; then | ||||||
| 	die 'not on any branch' | 	error "cannot release from a repository with none canonical specs (%s), try:" "${repo_variant:-development}" | ||||||
|  | 	msg2 'pkgctl repo configure' | ||||||
|  | 	exit 1 | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if ! is_valid_release_branch "${branchname}"; then | if [[ "$(git symbolic-ref --short HEAD)" != main ]]; then | ||||||
| 	die 'must be run from a valid release branch (%s)' "${VALID_RELEASE_BRANCHES[@]}" | 	die 'must be run from the main branch' | ||||||
| fi | fi | ||||||
|  |  | ||||||
| source=() | source=() | ||||||
| @@ -101,9 +105,6 @@ case "$cmd" in | |||||||
| 		;; | 		;; | ||||||
| esac | esac | ||||||
|  |  | ||||||
| if [[ "${branchname}" == "unstable" ]] && [[ "$repo" != *"unstable" ]]; then |  | ||||||
| 	die 'Cannot release from unstable branch into non-unstable repo: %s' "${repo}" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if (( ${#validpgpkeys[@]} != 0 )); then | if (( ${#validpgpkeys[@]} != 0 )); then | ||||||
| 	if [[ -d keys ]]; then | 	if [[ -d keys ]]; then | ||||||
| @@ -119,8 +120,20 @@ if (( ${#validpgpkeys[@]} != 0 )); then | |||||||
| 	git add --force -- keys/pgp/* | 	git add --force -- keys/pgp/* | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | needsversioning=() | ||||||
|  |  | ||||||
|  | if [[ ! -e REUSE.toml || ! -e LICENSE || ! -d LICENSES ]]; then | ||||||
|  | 	# TODO: Make this a hard failure in the future after packagers have had | ||||||
|  | 	# some time to add licenses to all packages. | ||||||
|  | 	warning "package doesn't have proper licensing information, set it up using:" | ||||||
|  | 	msg2 'pkgctl license setup' | ||||||
|  | else | ||||||
|  | 	pkgctl license check | ||||||
|  | 	needsversioning+=(REUSE.toml LICENSE LICENSES/*) | ||||||
|  | fi | ||||||
|  |  | ||||||
| # find files which should be under source control | # find files which should be under source control | ||||||
| needsversioning=(PKGBUILD) | needsversioning+=(PKGBUILD) | ||||||
| for s in "${source[@]}"; do | for s in "${source[@]}"; do | ||||||
| 	[[ $s != *://* ]] && needsversioning+=("$s") | 	[[ $s != *://* ]] && needsversioning+=("$s") | ||||||
| done | done | ||||||
| @@ -142,7 +155,7 @@ if (( ${#needsversioning[*]} )); then | |||||||
| 		if [[ ! -f "${file}" ]]; then | 		if [[ ! -f "${file}" ]]; then | ||||||
| 			continue | 			continue | ||||||
| 		fi | 		fi | ||||||
| 		if ! git ls-files --error-unmatch "$file"; then | 		if ! git ls-files --error-unmatch "$file" >/dev/null; then | ||||||
| 			die "%s is not under version control" "$file" | 			die "%s is not under version control" "$file" | ||||||
| 		fi | 		fi | ||||||
| 	done | 	done | ||||||
| @@ -150,7 +163,7 @@ fi | |||||||
|  |  | ||||||
|  |  | ||||||
| server=${PACKAGING_REPO_RELEASE_HOST} | server=${PACKAGING_REPO_RELEASE_HOST} | ||||||
| rsyncopts=(-e ssh -p '--chmod=ug=rw,o=r' -c -h -L --progress --partial -y) | rsyncopts=("${RSYNC_OPTS[@]}" --perms --chmod='ug=rw,o=r') | ||||||
| archreleaseopts=() | archreleaseopts=() | ||||||
| while getopts ':l:a:s:f' flag; do | while getopts ':l:a:s:f' flag; do | ||||||
| 	case $flag in | 	case $flag in | ||||||
| @@ -186,13 +199,10 @@ done | |||||||
| # check for PKGBUILD standards | # check for PKGBUILD standards | ||||||
| check_pkgbuild_validity | check_pkgbuild_validity | ||||||
|  |  | ||||||
| # auto generate .SRCINFO if present | # auto generate .SRCINFO | ||||||
| if [[ -f .SRCINFO ]]; then | # shellcheck disable=SC2119 | ||||||
| 	stat_busy 'Generating .SRCINFO' | write_srcinfo_file | ||||||
| 	makepkg --printsrcinfo > .SRCINFO | git add --force .SRCINFO | ||||||
| 	git add .SRCINFO |  | ||||||
| 	stat_done |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [[ -n $(git status --porcelain --untracked-files=no) ]]; then | if [[ -n $(git status --porcelain --untracked-files=no) ]]; then | ||||||
| 	stat_busy 'Staging files' | 	stat_busy 'Staging files' | ||||||
| @@ -215,14 +225,14 @@ if [[ -n $(git status --porcelain --untracked-files=no) ]]; then | |||||||
| 		echo "$msgtemplate" > "$msgfile" | 		echo "$msgtemplate" > "$msgfile" | ||||||
| 		if [[ -n $GIT_EDITOR ]]; then | 		if [[ -n $GIT_EDITOR ]]; then | ||||||
| 			$GIT_EDITOR "$msgfile" || die | 			$GIT_EDITOR "$msgfile" || die | ||||||
|  | 		elif giteditor=$(git config --get core.editor); then | ||||||
|  | 			$giteditor "$msgfile" || die | ||||||
| 		elif [[ -n $VISUAL ]]; then | 		elif [[ -n $VISUAL ]]; then | ||||||
| 			$VISUAL "$msgfile" || die | 			$VISUAL "$msgfile" || die | ||||||
| 		elif [[ -n $EDITOR ]]; then | 		elif [[ -n $EDITOR ]]; then | ||||||
| 			$EDITOR "$msgfile" || die | 			$EDITOR "$msgfile" || die | ||||||
| 		elif giteditor=$(git config --get core.editor); then |  | ||||||
| 			$giteditor "$msgfile" || die |  | ||||||
| 		else | 		else | ||||||
| 			die "No usable editor found (tried \$GIT_EDITOR, \$VISUAL, \$EDITOR, git config [core.editor])." | 			die "No usable editor found (tried \$GIT_EDITOR, git config [core.editor], \$VISUAL, \$EDITOR)." | ||||||
| 		fi | 		fi | ||||||
| 		[[ -s $msgfile ]] || die | 		[[ -s $msgfile ]] || die | ||||||
| 		stat_busy 'Committing changes' | 		stat_busy 'Committing changes' | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ mkdir -p keys/pgp | |||||||
| error=0 | error=0 | ||||||
|  |  | ||||||
| for key in "${validpgpkeys[@]}"; do | for key in "${validpgpkeys[@]}"; do | ||||||
| 	gpg --output "$TEMPDIR/$key.asc" --armor --export --export-options export-minimal "$key" 2>/dev/null | 	gpg --output "$TEMPDIR/$key.asc" --armor --export --export-options export-clean "$key" 2>/dev/null | ||||||
|  |  | ||||||
| 	# gpg does not give a non-zero return value if it fails to export... | 	# gpg does not give a non-zero return value if it fails to export... | ||||||
| 	if [[ -f $TEMPDIR/$key.asc ]]; then | 	if [[ -f $TEMPDIR/$key.asc ]]; then | ||||||
|   | |||||||
							
								
								
									
										60
									
								
								src/lib/api/archweb.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								src/lib/api/archweb.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | #!/hint/bash | ||||||
|  | # | ||||||
|  | # SPDX-License-Identifier: GPL-3.0-or-later | ||||||
|  |  | ||||||
|  | [[ -z ${DEVTOOLS_INCLUDE_API_ARCHWEB_SH:-} ]] || return 0 | ||||||
|  | DEVTOOLS_INCLUDE_API_ARCHWEB_SH=1 | ||||||
|  |  | ||||||
|  | _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | ||||||
|  | # shellcheck source=src/lib/common.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | ||||||
|  |  | ||||||
|  | set -e | ||||||
|  | set -o pipefail | ||||||
|  |  | ||||||
|  |  | ||||||
|  | archweb_query_all_packages() { | ||||||
|  | 	local -a pkgbases | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  |  | ||||||
|  | 	stat_busy "Query all released packages" | ||||||
|  | 	mapfile -t pkgbases < <( | ||||||
|  | 		curl --location --show-error --no-progress-meter --fail --retry 3 --retry-delay 3 \ | ||||||
|  | 			"${PKGBASE_MAINTAINER_URL}" 2> "${WORKDIR}/error" \ | ||||||
|  | 			| jq --raw-output --exit-status 'keys[]' 2> "${WORKDIR}/error" | ||||||
|  | 	) | ||||||
|  | 	if ! wait $!; then | ||||||
|  | 		stat_failed | ||||||
|  | 		print_workdir_error | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  | 	stat_done | ||||||
|  |  | ||||||
|  | 	printf "%s\n" "${pkgbases[@]}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | archweb_query_maintainer_packages() { | ||||||
|  | 	local maintainer=$1 | ||||||
|  | 	local -a pkgbases | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  |  | ||||||
|  | 	stat_busy "Query maintainer packages" | ||||||
|  | 	mapfile -t pkgbases < <( | ||||||
|  | 		curl --location --show-error --no-progress-meter --fail --retry 3 --retry-delay 3 \ | ||||||
|  | 			"${PKGBASE_MAINTAINER_URL}" 2> "${WORKDIR}/error" \ | ||||||
|  | 			| jq --raw-output --exit-status '. as $parent | keys[] | select(. as $key | $parent[$key] | index("'"${maintainer}"'"))' 2> "${WORKDIR}/error" | ||||||
|  | 	) | ||||||
|  | 	if ! wait $!; then | ||||||
|  | 		stat_failed | ||||||
|  | 		print_workdir_error | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  | 	stat_done | ||||||
|  |  | ||||||
|  | 	printf "%s\n" "${pkgbases[@]}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
| @@ -8,18 +8,72 @@ DEVTOOLS_INCLUDE_API_GITLAB_SH=1 | |||||||
| _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | ||||||
| # shellcheck source=src/lib/common.sh | # shellcheck source=src/lib/common.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh | ||||||
|  | # shellcheck source=src/lib/cache.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/cache.sh | ||||||
| # shellcheck source=src/lib/config.sh | # shellcheck source=src/lib/config.sh | ||||||
| source "${_DEVTOOLS_LIBRARY_DIR}"/lib/config.sh | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/config.sh | ||||||
|  | # shellcheck source=src/lib/valid-issue.sh | ||||||
|  | source "${_DEVTOOLS_LIBRARY_DIR}"/lib/valid-issue.sh | ||||||
|  |  | ||||||
| set -e | set -e | ||||||
|  |  | ||||||
|  | graphql_api_call() { | ||||||
|  | 	local outfile=$1 | ||||||
|  | 	local request=$2 | ||||||
|  | 	local node_type=$3 | ||||||
|  | 	local data=$4 | ||||||
|  | 	local hasNextPage cursor | ||||||
|  |  | ||||||
|  | 	# empty token | ||||||
|  | 	if [[ -z "${GITLAB_TOKEN}" ]]; then | ||||||
|  | 		msg_error "  api call failed: No token provided" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	api_workdir=$(mktemp --tmpdir="${WORKDIR}" --directory pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	# normalize graphql data and prepare query | ||||||
|  | 	data="${data//\"/\\\"}" | ||||||
|  | 	data='{ | ||||||
|  | 		"query": "'"${data}"'" | ||||||
|  | 	}' | ||||||
|  | 	data="${data//$'\t'/ }" | ||||||
|  | 	data="${data//$'\n'/}" | ||||||
|  |  | ||||||
|  | 	cursor="" | ||||||
|  | 	hasNextPage=true | ||||||
|  | 	while [[ ${hasNextPage} == true ]]; do | ||||||
|  | 		data=$(sed -E 's|after: \\"[a-zA-Z0-9]*\\"|after: \\"'"${cursor}"'\\"|' <<< "${data}") | ||||||
|  | 		result="${api_workdir}/result.${cursor}" | ||||||
|  |  | ||||||
|  | 		if ! curl --request "${request}" \ | ||||||
|  | 				--url "https://${GITLAB_HOST}/api/graphql" \ | ||||||
|  | 				--header "Authorization: Bearer ${GITLAB_TOKEN}" \ | ||||||
|  | 				--header "Content-Type: application/json" \ | ||||||
|  | 				--data "${data}" \ | ||||||
|  | 				--output "${result}" \ | ||||||
|  | 				--silent; then | ||||||
|  | 			msg_error "  api call failed: $(cat "${outfile}")" | ||||||
|  | 			return 1 | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		hasNextPage=$(jq --raw-output ".data | .${node_type} | .pageInfo | .hasNextPage" < "${result}") | ||||||
|  | 		cursor=$(jq --raw-output ".data | .${node_type} | .pageInfo | .endCursor" < "${result}") | ||||||
|  |  | ||||||
|  | 		cp "${result}" "${api_workdir}/tmp" | ||||||
|  | 		jq ".data.${node_type}.nodes" "${api_workdir}/tmp" > "${result}" | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	jq --slurp add "${api_workdir}"/result.* > "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
| gitlab_api_call() { | gitlab_api_call() { | ||||||
| 	local outfile=$1 | 	local outfile=$1 | ||||||
| 	local request=$2 | 	local request=$2 | ||||||
| 	local endpoint=$3 | 	local endpoint=$3 | ||||||
| 	local data=${4:-} | 	local data=${4:-} | ||||||
| 	local error |  | ||||||
|  |  | ||||||
| 	# empty token | 	# empty token | ||||||
| 	if [[ -z "${GITLAB_TOKEN}" ]]; then | 	if [[ -z "${GITLAB_TOKEN}" ]]; then | ||||||
| @@ -38,27 +92,124 @@ gitlab_api_call() { | |||||||
| 		return 1 | 		return 1 | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
|  | 	if ! gitlab_check_api_errors "${outfile}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_api_call_paged() { | ||||||
|  | 	local outfile=$1 | ||||||
|  | 	local status_file=$2 | ||||||
|  | 	local request=$3 | ||||||
|  | 	local endpoint=$4 | ||||||
|  | 	local data=${5:-} | ||||||
|  | 	local result header | ||||||
|  |  | ||||||
|  | 	# empty token | ||||||
|  | 	if [[ -z "${GITLAB_TOKEN}" ]]; then | ||||||
|  | 		msg_error "  api call failed: No token provided" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	api_workdir=$(mktemp --tmpdir="${WORKDIR}" --directory pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  | 	tmp_file=$(mktemp --tmpdir="${api_workdir}" spinner.tmp.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	local next_page=1 | ||||||
|  | 	local total_pages=1 | ||||||
|  | 	local known_total_pages=1 | ||||||
|  | 	local percentage=100 | ||||||
|  |  | ||||||
|  | 	while [[ -n "${next_page}" ]]; do | ||||||
|  | 		percentage=$(( 100 * next_page / total_pages )) | ||||||
|  | 		printf "📡 Querying GitLab: %s/%s [%s] %%spinner%%" \ | ||||||
|  | 			"${BOLD}${next_page}" "${known_total_pages}" "${percentage}%${ALL_OFF}"  \ | ||||||
|  | 			> "${tmp_file}" | ||||||
|  | 		mv "${tmp_file}" "${status_file}" | ||||||
|  |  | ||||||
|  | 		result="${api_workdir}/result.${next_page}" | ||||||
|  | 		header="${api_workdir}/header" | ||||||
|  | 		if ! curl --request "${request}" \ | ||||||
|  | 				--get \ | ||||||
|  | 				--url "https://${GITLAB_HOST}/api/v4/${endpoint}&per_page=100&page=${next_page}" \ | ||||||
|  | 				--header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ | ||||||
|  | 				--header "Content-Type: application/json" \ | ||||||
|  | 				--data-urlencode "${data}" \ | ||||||
|  | 				--dump-header "${header}" \ | ||||||
|  | 				--output "${result}" \ | ||||||
|  | 				--silent; then | ||||||
|  | 			msg_error "  api call failed: $(cat "${result}")" | ||||||
|  | 			return 1 | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		if ! gitlab_check_api_errors "${result}"; then | ||||||
|  | 			return 1 | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		next_page=$(grep "x-next-page" "${header}" | tr -d '\r' | awk '{ print $2 }') | ||||||
|  | 		total_pages=$(grep "x-total-pages" "${header}" | tr -d '\r' | awk '{ print $2 }') | ||||||
|  | 		# The api is not guaranteed to return x-total-pages for larger query results | ||||||
|  | 		# https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/23931 | ||||||
|  | 		# https://gitlab.com/gitlab-org/gitlab/-/issues/436373 | ||||||
|  | 		if (( total_pages == 0 )); then | ||||||
|  | 			total_pages=${next_page} | ||||||
|  | 			known_total_pages="?" | ||||||
|  | 		else | ||||||
|  | 			known_total_pages=${total_pages} | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	jq --slurp add "${api_workdir}"/result.* > "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_check_api_errors() { | ||||||
|  | 	local file=$1 | ||||||
|  | 	local error | ||||||
|  |  | ||||||
|  | 	# search API only returns an array, no errors | ||||||
|  | 	if [[ $(jq --raw-output 'type' < "${file}") == "array" ]]; then | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| 	# check for general purpose api error | 	# check for general purpose api error | ||||||
| 	if error=$(jq --raw-output --exit-status '.error' < "${outfile}"); then | 	if error=$(jq --raw-output --exit-status '.error' < "${file}"); then | ||||||
| 		msg_error "  api call failed: ${error}" | 		msg_error "  api call failed: ${error}" | ||||||
| 		return 1 | 		return 1 | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	# check for api specific error messages | 	# check for api specific error messages | ||||||
| 	if ! jq --raw-output --exit-status '.id' < "${outfile}" >/dev/null; then | 	if ! jq --raw-output --exit-status '.id' < "${file}" >/dev/null; then | ||||||
| 		if jq --raw-output --exit-status '.message | keys[]' < "${outfile}" &>/dev/null; then | 		if jq --raw-output --exit-status '.message | keys[]' < "${file}" &>/dev/null; then | ||||||
| 			while read -r error; do | 			while read -r error; do | ||||||
| 				msg_error "  api call failed: ${error}" | 				msg_error "  api call failed: ${error}" | ||||||
| 			done < <(jq --raw-output --exit-status '.message|to_entries|map("\(.key) \(.value[])")[]' < "${outfile}") | 			done < <(jq --raw-output --exit-status '.message|to_entries|map("\(.key) \(.value[])")[]' < "${file}") | ||||||
| 		elif error=$(jq --raw-output --exit-status '.message' < "${outfile}"); then | 		elif error=$(jq --raw-output --exit-status '.message' < "${file}"); then | ||||||
| 			msg_error "  api call failed: ${error}" | 			msg_error "  api call failed: ${error}" | ||||||
| 		fi | 		fi | ||||||
| 		return 1 | 		return 1 | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	return 0 | 	return 0 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | graphql_check_api_errors() { | ||||||
|  | 	local file=$1 | ||||||
|  | 	local error | ||||||
|  |  | ||||||
|  | 	# early exit if we do not have errors | ||||||
|  | 	if ! jq --raw-output --exit-status '.errors[]' < "${file}" &>/dev/null; then | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	# check for api specific error messages | ||||||
|  | 	while read -r error; do | ||||||
|  | 		msg_error "  api call failed: ${error}" | ||||||
|  | 	done < <(jq --raw-output --exit-status '.errors[].message' < "${file}") | ||||||
|  | 	return 1 | ||||||
|  | } | ||||||
|  |  | ||||||
| gitlab_api_get_user() { | gitlab_api_get_user() { | ||||||
| 	local outfile username | 	local outfile username | ||||||
|  |  | ||||||
| @@ -81,6 +232,118 @@ gitlab_api_get_user() { | |||||||
| 	return 0 | 	return 0 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | gitlab_api_get_project_name_mapping() { | ||||||
|  | 	local query=$1 | ||||||
|  | 	local outfile | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	# query user details | ||||||
|  | 	if ! graphql_api_call "${outfile}" POST projects "${query}"; then | ||||||
|  | 		msg_warn "  Invalid token provided?" | ||||||
|  | 		exit 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_lookup_project_names() { | ||||||
|  | 	local status_file=$1; shift | ||||||
|  | 	local project_ids=("$@") | ||||||
|  | 	local graphql_lookup_batch=200 | ||||||
|  |  | ||||||
|  | 	local project_name_cache_file tmp_file from length percentage | ||||||
|  | 	local project_slice query projects mapping_output | ||||||
|  |  | ||||||
|  | 	# collect project ids whose name needs to be looked up | ||||||
|  | 	project_name_cache_file=$(get_cache_file gitlab/project_id_to_name) | ||||||
|  | 	lock 11 "${project_name_cache_file}" "Locking project name cache" | ||||||
|  |  | ||||||
|  | 	# early exit if there is nothing new to look up | ||||||
|  | 	if (( ! ${#project_ids[@]} )); then | ||||||
|  | 		cat "${project_name_cache_file}" | ||||||
|  | 		# close project name cache lock | ||||||
|  | 		lock_close 11 | ||||||
|  | 		return | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	# reduce project_ids to uncached entries | ||||||
|  | 	mapfile -t project_ids < <( | ||||||
|  | 		printf "%s\n" "${project_ids[@]}" | \ | ||||||
|  | 			grep --invert-match --file <(awk '{ print $1 }' < "${project_name_cache_file}" )) | ||||||
|  |  | ||||||
|  | 	# look up project names | ||||||
|  | 	tmp_file=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api-spinner.tmp.XXXXXXXXXX) | ||||||
|  | 	local entries="${#project_ids[@]}" | ||||||
|  | 	local until=0 | ||||||
|  | 	while (( until < entries )); do | ||||||
|  | 		from=${until} | ||||||
|  | 		until=$(( until + graphql_lookup_batch )) | ||||||
|  | 		if (( until > entries )); then | ||||||
|  | 			until=${entries} | ||||||
|  | 		fi | ||||||
|  | 		length=$(( until - from )) | ||||||
|  |  | ||||||
|  | 		percentage=$(( 100 * until / entries )) | ||||||
|  | 		printf "📡 Querying GitLab project names: %s/%s [%s] %%spinner%%" \ | ||||||
|  | 			"${BOLD}${until}" "${entries}" "${percentage}%${ALL_OFF}"  \ | ||||||
|  | 			> "${tmp_file}" | ||||||
|  | 		mv "${tmp_file}" "${status_file}" | ||||||
|  |  | ||||||
|  | 		project_slice=("${project_ids[@]:${from}:${length}}") | ||||||
|  | 		printf -v projects '"gid://gitlab/Project/%s",' "${project_slice[@]}" | ||||||
|  | 		query='{ | ||||||
|  | 			projects(after: "" ids: ['"${projects}"']) { | ||||||
|  | 				pageInfo { | ||||||
|  | 					startCursor | ||||||
|  | 					endCursor | ||||||
|  | 					hasNextPage | ||||||
|  | 				} | ||||||
|  | 				nodes { | ||||||
|  | 					id | ||||||
|  | 					name | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		}' | ||||||
|  | 		mapping_output=$(gitlab_api_get_project_name_mapping "${query}") | ||||||
|  |  | ||||||
|  | 		# update cache | ||||||
|  | 		while read -r project_id project_name; do | ||||||
|  | 			printf "%s %s\n" "${project_id}" "${project_name}" >> "${project_name_cache_file}" | ||||||
|  | 		done < <(jq --raw-output \ | ||||||
|  | 			'.[] | "\(.id | rindex("/") as $lastSlash | .[$lastSlash+1:]) \(.name)"' \ | ||||||
|  | 			<<< "${mapping_output}") | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	cat "${project_name_cache_file}" | ||||||
|  |  | ||||||
|  | 	# close project name cache lock | ||||||
|  | 	lock_close 11 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | longest_package_name_from_ids() { | ||||||
|  | 	local project_ids=("$@") | ||||||
|  | 	local longest=0 | ||||||
|  |  | ||||||
|  | 	# collect project ids whose name needs to be looked up | ||||||
|  | 	project_name_cache_file=$(get_cache_file gitlab/project_id_to_name) | ||||||
|  | 	lock 11 "${project_name_cache_file}" "Locking project name cache" | ||||||
|  |  | ||||||
|  | 	# read project_id to name mapping from cache | ||||||
|  | 	while read -r project_id project_name; do | ||||||
|  | 		if (( ${#project_name} > longest )) && in_array "${project_id}" "${project_ids[@]}"; then | ||||||
|  | 			longest="${#project_name}" | ||||||
|  | 		fi | ||||||
|  | 	done < "${project_name_cache_file}" | ||||||
|  |  | ||||||
|  | 	# close project name cache lock | ||||||
|  | 	lock_close 11 | ||||||
|  |  | ||||||
|  | 	printf "%s" "${longest}" | ||||||
|  | } | ||||||
|  |  | ||||||
| # Convert arbitrary project names to GitLab valid path names. | # Convert arbitrary project names to GitLab valid path names. | ||||||
| # | # | ||||||
| # GitLab has several limitations on project and group names and also maintains | # GitLab has several limitations on project and group names and also maintains | ||||||
| @@ -130,3 +393,511 @@ gitlab_api_create_project() { | |||||||
| 	printf "%s" "${path}" | 	printf "%s" "${path}" | ||||||
| 	return 0 | 	return 0 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | # TODO: parallelize | ||||||
|  | # https://docs.gitlab.com/ee/api/search.html#scope-blobs | ||||||
|  | gitlab_api_search() { | ||||||
|  | 	local search=$1 | ||||||
|  | 	local status_file=$2 | ||||||
|  | 	local outfile | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	if ! gitlab_api_call_paged "${outfile}" "${status_file}" GET "/groups/archlinux%2fpackaging%2fpackages/search?scope=blobs" "search=${search}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # https://docs.gitlab.com/ee/api/projects.html#get-single-project | ||||||
|  | gitlab_project() { | ||||||
|  | 	local project=$1 | ||||||
|  | 	local outfile project_path | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	project_path=$(gitlab_project_name_to_path "${project}") | ||||||
|  |  | ||||||
|  | 	if ! gitlab_api_call "${outfile}" GET "projects/archlinux%2fpackaging%2fpackages%2f${project_path}/"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # TODO: parallelize | ||||||
|  | # https://docs.gitlab.com/ee/api/issues.html#list-project-issues | ||||||
|  | gitlab_projects_issues_list() { | ||||||
|  | 	local project=$1 | ||||||
|  | 	local status_file=$2 | ||||||
|  | 	local params=${3:-} | ||||||
|  | 	local data=${4:-} | ||||||
|  | 	local outfile | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	if ! gitlab_api_call_paged "${outfile}" "${status_file}" GET "/projects/archlinux%2fpackaging%2fpackages%2f${project}/issues?${params}" "${data}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # TODO: parallelize | ||||||
|  | # https://docs.gitlab.com/ee/api/issues.html#list-project-issues | ||||||
|  | gitlab_group_issue_list() { | ||||||
|  | 	local group=$1 | ||||||
|  | 	local status_file=$2 | ||||||
|  | 	local params=${3:-} | ||||||
|  | 	local data=${4:-} | ||||||
|  | 	local outfile | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	group=${group//\//%2f} | ||||||
|  | 	params=${params//\[/%5B} | ||||||
|  | 	params=${params//\]/%5D} | ||||||
|  |  | ||||||
|  | 	if ! gitlab_api_call_paged "${outfile}" "${status_file}" GET "/groups/${group}/issues?${params}" "${data}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # https://docs.gitlab.com/ee/api/issues.html#single-project-issue | ||||||
|  | gitlab_project_issue() { | ||||||
|  | 	local pkgbase=$1 | ||||||
|  | 	local iid=$2 | ||||||
|  | 	local outfile data path project_path | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	project_path=$(gitlab_project_name_to_path "${pkgbase}") | ||||||
|  |  | ||||||
|  | 	if ! gitlab_api_call "${outfile}" GET "projects/archlinux%2fpackaging%2fpackages%2f${project_path}/issues/${iid}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if ! path=$(jq --raw-output --exit-status '.title' < "${outfile}"); then | ||||||
|  | 		msg_error "  failed to query path: $(cat "${outfile}")" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_project_issue_create() { | ||||||
|  | 	local pkgbase=$1 | ||||||
|  | 	local title=$2 | ||||||
|  | 	local description=$3 | ||||||
|  | 	local confidential=$4 | ||||||
|  | 	shift 4 | ||||||
|  | 	local labels=("${@}") | ||||||
|  | 	local outfile data iid project_path | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	project_path=$(gitlab_project_name_to_path "${pkgbase}") | ||||||
|  |  | ||||||
|  | 	data=$(jq --null-input \ | ||||||
|  | 		--arg title "${title}" \ | ||||||
|  | 		--arg description "${description}" \ | ||||||
|  | 		--arg confidential "${confidential}" \ | ||||||
|  | 		--arg labels "$(join_by , "${labels[@]}")" \ | ||||||
|  | 		'$ARGS.named') | ||||||
|  | 	if ! gitlab_api_call "${outfile}" POST "/projects/archlinux%2fpackaging%2fpackages%2f${project_path}/issues" "${data}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if ! iid=$(jq --raw-output --exit-status '.iid' < "${outfile}"); then | ||||||
|  | 		msg_error "  failed to query note: $(cat "${outfile}")" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # TODO: parallelize | ||||||
|  | # https://docs.gitlab.com/ee/api/notes.html#list-project-issue-notes | ||||||
|  | gitlab_project_issue_notes() { | ||||||
|  | 	local project=$1 | ||||||
|  | 	local iid=$2 | ||||||
|  | 	local status_file=$3 | ||||||
|  | 	local params=${4:-} | ||||||
|  | 	local outfile | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	if ! gitlab_api_call_paged "${outfile}" "${status_file}" GET "/projects/archlinux%2fpackaging%2fpackages%2f${project}/issues/${iid}/notes?${params}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # https://docs.gitlab.com/ee/api/issues.html#edit-an-issue | ||||||
|  | gitlab_project_issue_edit() { | ||||||
|  | 	local pkgbase=$1 | ||||||
|  | 	local iid=$2 | ||||||
|  | 	local params=$3 | ||||||
|  | 	local data=${4:-} | ||||||
|  | 	local outfile data path project_path | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	project_path=$(gitlab_project_name_to_path "${pkgbase}") | ||||||
|  |  | ||||||
|  | 	if ! gitlab_api_call "${outfile}" PUT "/projects/archlinux%2fpackaging%2fpackages%2f${project_path}/issues/${iid}?${params}" "${data}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if ! path=$(jq --raw-output --exit-status '.title' < "${outfile}"); then | ||||||
|  | 		msg_error "  failed to query path: $(cat "${outfile}")" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_create_project_issue_note() { | ||||||
|  | 	local pkgbase=$1 | ||||||
|  | 	local iid=$2 | ||||||
|  | 	local body=$3 | ||||||
|  | 	local outfile data path project_path | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	project_path=$(gitlab_project_name_to_path "${pkgbase}") | ||||||
|  |  | ||||||
|  | 	data=$(jq --null-input --arg body "${body}" '$ARGS.named') | ||||||
|  | 	if ! gitlab_api_call "${outfile}" POST "/projects/archlinux%2fpackaging%2fpackages%2f${project_path}/issues/${iid}/notes" "${data}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if ! path=$(jq --raw-output --exit-status '.body' < "${outfile}"); then | ||||||
|  | 		msg_error "  failed to query note: $(cat "${outfile}")" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_project_issue_move() { | ||||||
|  | 	local pkgbase=$1 | ||||||
|  | 	local iid=$2 | ||||||
|  | 	local to_project_id=$3 | ||||||
|  | 	local outfile path project_path | ||||||
|  |  | ||||||
|  | 	[[ -z ${WORKDIR:-} ]] && setup_workdir | ||||||
|  | 	outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX) | ||||||
|  |  | ||||||
|  | 	project_path=$(gitlab_project_name_to_path "${pkgbase}") | ||||||
|  |  | ||||||
|  | 	if ! gitlab_api_call "${outfile}" POST "/projects/archlinux%2fpackaging%2fpackages%2f${project_path}/issues/${iid}/move?to_project_id=${to_project_id}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if ! path=$(jq --raw-output --exit-status '.title' < "${outfile}"); then | ||||||
|  | 		msg_error "  failed to move issue: $(cat "${outfile}")" | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	cat "${outfile}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_severity_from_labels() { | ||||||
|  | 	local labels=("$@") | ||||||
|  | 	local severity="unknown" | ||||||
|  | 	local label | ||||||
|  | 	for label in "${labels[@]}"; do | ||||||
|  | 		if [[ ${label} == severity::* ]]; then | ||||||
|  | 			severity="${label#*-}" | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  | 	printf "%s" "${severity}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | severity_as_gitlab_label() { | ||||||
|  | 	local severity=$1 | ||||||
|  | 	case "${severity}" in | ||||||
|  | 		lowest) | ||||||
|  | 			printf "severity::5-%s" "${severity}" ;; | ||||||
|  | 		low) | ||||||
|  | 			printf "severity::4-%s" "${severity}" ;; | ||||||
|  | 		medium) | ||||||
|  | 			printf "severity::3-%s" "${severity}" ;; | ||||||
|  | 		high) | ||||||
|  | 			printf "severity::2-%s" "${severity}" ;; | ||||||
|  | 		critical) | ||||||
|  | 			printf "severity::1-%s" "${severity}" ;; | ||||||
|  | 		*) | ||||||
|  | 			return 1 ;; | ||||||
|  | 	esac | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_priority_from_labels() { | ||||||
|  | 	local labels=("$@") | ||||||
|  | 	local priority="normal" | ||||||
|  | 	local label | ||||||
|  | 	for label in "${labels[@]}"; do | ||||||
|  | 		if [[ ${label} == priority::* ]]; then | ||||||
|  | 			priority="${label#*-}" | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  | 	printf "%s" "${priority}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | priority_as_gitlab_label() { | ||||||
|  | 	local priority=$1 | ||||||
|  | 	case "${priority}" in | ||||||
|  | 		low) | ||||||
|  | 			printf "priority::4-%s" "${priority}" ;; | ||||||
|  | 		normal) | ||||||
|  | 			printf "priority::3-%s" "${priority}" ;; | ||||||
|  | 		high) | ||||||
|  | 			printf "priority::2-%s" "${priority}" ;; | ||||||
|  | 		urgent) | ||||||
|  | 			printf "priority::1-%s" "${priority}" ;; | ||||||
|  | 		*) | ||||||
|  | 			return 1 ;; | ||||||
|  | 	esac | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_scope_from_labels() { | ||||||
|  | 	local labels=("$@") | ||||||
|  | 	local scope="unknown" | ||||||
|  | 	local label | ||||||
|  | 	for label in "${labels[@]}"; do | ||||||
|  | 		if [[ ${label} == scope::* ]]; then | ||||||
|  | 			scope="${label#*::}" | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  | 	printf "%s" "${scope}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | scope_as_gitlab_label() { | ||||||
|  | 	local scope=$1 | ||||||
|  | 	if ! in_array "${scope}" "${DEVTOOLS_VALID_ISSUE_SCOPE[@]}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  | 	printf "scope::%s" "${scope}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_scope_short() { | ||||||
|  | 	local scope=$1 | ||||||
|  | 	case "${scope}" in | ||||||
|  | 		regression) | ||||||
|  | 			scope=regress ;; | ||||||
|  | 		enhancement) | ||||||
|  | 			scope=enhance ;; | ||||||
|  | 		documentation) | ||||||
|  | 			scope=doc ;; | ||||||
|  | 		reproducibility) | ||||||
|  | 			scope=repro ;; | ||||||
|  | 		out-of-date) | ||||||
|  | 			scope=ood ;; | ||||||
|  | 	esac | ||||||
|  | 	printf "%s" "${scope}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_scope_color() { | ||||||
|  | 	local scope=$1 | ||||||
|  | 	local color="${GRAY}" | ||||||
|  |  | ||||||
|  | 	case "${scope}" in | ||||||
|  | 		bug) | ||||||
|  | 			color="${DARK_RED}" ;; | ||||||
|  | 		feature) | ||||||
|  | 			color="${DARK_BLUE}" ;; | ||||||
|  | 		security) | ||||||
|  | 			color="${RED}" ;; | ||||||
|  | 		question) | ||||||
|  | 			color="${PURPLE}" ;; | ||||||
|  | 		regression) | ||||||
|  | 			color="${DARK_RED}" ;; | ||||||
|  | 		enhancement) | ||||||
|  | 			color="${DARK_BLUE}" ;; | ||||||
|  | 		documentation) | ||||||
|  | 			color="${ALL_OFF}" ;; | ||||||
|  | 		reproducibility) | ||||||
|  | 			color="${DARK_GREEN}" ;; | ||||||
|  | 		out-of-date) | ||||||
|  | 			color="${DARK_YELLOW}" ;; | ||||||
|  | 	esac | ||||||
|  |  | ||||||
|  | 	printf "%s" "${color}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | status_as_gitlab_label() { | ||||||
|  | 	local status=$1 | ||||||
|  | 	if ! in_array "${status}" "${DEVTOOLS_VALID_ISSUE_STATUS[@]}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  | 	printf "status::%s" "${status}" | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_issue_state_display() { | ||||||
|  | 	local state=$1 | ||||||
|  | 	if [[ ${state} == opened ]]; then | ||||||
|  | 		state=open | ||||||
|  | 	fi | ||||||
|  | 	printf "%s" "${state}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_issue_status_from_labels() { | ||||||
|  | 	local labels=("$@") | ||||||
|  | 	local status=unconfirmed | ||||||
|  | 	local label | ||||||
|  | 	for label in "${labels[@]}"; do | ||||||
|  | 		if [[ ${label} == status::* ]]; then | ||||||
|  | 			status="${label#*::}" | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  | 	printf "%s" "${status}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_issue_status_short() { | ||||||
|  | 	local status=$1 | ||||||
|  | 	if [[ ${status} == waiting-* ]]; then | ||||||
|  | 		status=waiting | ||||||
|  | 	fi | ||||||
|  | 	printf "%s" "${status}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_issue_status_color() { | ||||||
|  | 	local status=$1 | ||||||
|  | 	local color="${GRAY}" | ||||||
|  |  | ||||||
|  | 	case "${status}" in | ||||||
|  | 		confirmed) | ||||||
|  | 			color="${GREEN}" ;; | ||||||
|  | 		in-progress) | ||||||
|  | 			color="${YELLOW}" ;; | ||||||
|  | 		in-review) | ||||||
|  | 			color="${PURPLE}" ;; | ||||||
|  | 		on-hold|unconfirmed) | ||||||
|  | 			color="${GRAY}" ;; | ||||||
|  | 		waiting-input|waiting-upstream) | ||||||
|  | 			color="${DARK_BLUE}" ;; | ||||||
|  | 	esac | ||||||
|  |  | ||||||
|  | 	printf "%s" "${color}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | resolution_as_gitlab_label() { | ||||||
|  | 	local resolution=$1 | ||||||
|  | 	if ! in_array "${resolution}" "${DEVTOOLS_VALID_ISSUE_RESOLUTION[@]}"; then | ||||||
|  | 		return 1 | ||||||
|  | 	fi | ||||||
|  | 	printf "resolution::%s" "${resolution}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_resolution_from_labels() { | ||||||
|  | 	local labels=("$@") | ||||||
|  | 	local label | ||||||
|  | 	for label in "${labels[@]}"; do | ||||||
|  | 		if [[ ${label} == resolution::* ]]; then | ||||||
|  | 			printf "%s" "${label#*::}" | ||||||
|  | 			return 0 | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  | 	return 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_resolution_color() { | ||||||
|  | 	local resolution=$1 | ||||||
|  | 	local color="" | ||||||
|  |  | ||||||
|  | 	case "${resolution}" in | ||||||
|  | 		cant-reproduce) | ||||||
|  | 			color="${DARK_YELLOW}" ;; | ||||||
|  | 		completed) | ||||||
|  | 			color="${GREEN}" ;; | ||||||
|  | 		duplicate) | ||||||
|  | 			color="${GRAY}" ;; | ||||||
|  | 		invalid) | ||||||
|  | 			color="${DARK_YELLOW}" ;; | ||||||
|  | 		not-a-bug) | ||||||
|  | 			color="${GRAY}" ;; | ||||||
|  | 		upstream) | ||||||
|  | 			color="${PURPLE}" ;; | ||||||
|  | 		wont-fix) | ||||||
|  | 			color="${DARK_BLUE}" ;; | ||||||
|  | 	esac | ||||||
|  |  | ||||||
|  | 	printf "%s" "${color}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_severity_color() { | ||||||
|  | 	local severity=$1 | ||||||
|  | 	local color="${PURPLE}" | ||||||
|  |  | ||||||
|  | 	case "${severity}" in | ||||||
|  | 		lowest) | ||||||
|  | 			color="${DARK_GREEN}" ;; | ||||||
|  | 		low) | ||||||
|  | 			color="${GREEN}" ;; | ||||||
|  | 		medium) | ||||||
|  | 			color="${YELLOW}" ;; | ||||||
|  | 		high) | ||||||
|  | 			color="${RED}" ;; | ||||||
|  | 		critical) | ||||||
|  | 			color="${RED}${UNDERLINE}" ;; | ||||||
|  | 	esac | ||||||
|  |  | ||||||
|  | 	printf "%s" "${color}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_priority_color() { | ||||||
|  | 	local priority=$1 | ||||||
|  | 	local color="${PURPLE}" | ||||||
|  |  | ||||||
|  | 	case "${priority}" in | ||||||
|  | 		low) | ||||||
|  | 			color="${DARK_GREEN}" ;; | ||||||
|  | 		normal) | ||||||
|  | 			color="${GREEN}" ;; | ||||||
|  | 		high) | ||||||
|  | 			color="${YELLOW}" ;; | ||||||
|  | 		urgent) | ||||||
|  | 			color="${RED}" ;; | ||||||
|  | 	esac | ||||||
|  |  | ||||||
|  | 	printf "%s" "${color}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | gitlab_issue_state_color() { | ||||||
|  | 	local state=$1 | ||||||
|  | 	local state_color="${DARK_GREEN}" | ||||||
|  |  | ||||||
|  | 	if [[ ${state} == closed ]]; then | ||||||
|  | 		state_color="${DARK_RED}" | ||||||
|  | 	fi | ||||||
|  | 	printf "%s" "${state_color}" | ||||||
|  | } | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
| : | : | ||||||
|  |  | ||||||
| # shellcheck disable=2034 | # shellcheck disable=2034 | ||||||
| CHROOT_VERSION='v5' | CHROOT_VERSION='v6' | ||||||
|  |  | ||||||
| ## | ## | ||||||
| #  usage : check_root $keepenv | #  usage : check_root $keepenv | ||||||
|   | |||||||
							
								
								
									
										65
									
								
								src/lib/aur.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/lib/aur.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | #!/hint/bash | ||||||
|  | # | ||||||
|  | # SPDX-License-Identifier: GPL-3.0-or-later | ||||||
|  |  | ||||||
|  | [[ -z ${DEVTOOLS_INCLUDE_AUR_SH:-} ]] || return 0 | ||||||
|  | DEVTOOLS_INCLUDE_AUR_SH=1 | ||||||
|  |  | ||||||
|  | _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} | ||||||
|  |  | ||||||
|  | set -eo pipefail | ||||||
|  |  | ||||||
|  |  | ||||||
|  | pkgctl_aur_usage() { | ||||||
|  | 	local -r COMMAND=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}} | ||||||
|  | 	cat <<- _EOF_ | ||||||
|  | 		Usage: ${COMMAND} [COMMAND] [OPTIONS] | ||||||
|  |  | ||||||
|  | 		Interact with the Arch User Repository (AUR). | ||||||
|  |  | ||||||
|  | 		Provides a suite of tools designed for managing and interacting with the Arch | ||||||
|  | 		User Repository (AUR). It simplifies various tasks related to AUR, including | ||||||
|  | 		importing repositories, managing packages, and transitioning packages between | ||||||
|  | 		the official repositories and the AUR. | ||||||
|  |  | ||||||
|  | 		COMMANDS | ||||||
|  | 		    drop-from-repo    Drop a package from the official repository to the AUR | ||||||
|  |  | ||||||
|  | 		OPTIONS | ||||||
|  | 		    -h, --help        Show this help text | ||||||
|  |  | ||||||
|  | 		EXAMPLES | ||||||
|  | 		    $ ${COMMAND} drop-from-repo libfoo | ||||||
|  | _EOF_ | ||||||
|  | } | ||||||
|  |  | ||||||
|  | pkgctl_aur() { | ||||||
|  | 	if (( $# < 1 )); then | ||||||
|  | 		pkgctl_aur_usage | ||||||
|  | 		exit 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	# option checking | ||||||
|  | 	while (( $# )); do | ||||||
|  | 		case $1 in | ||||||
|  | 			-h|--help) | ||||||
|  | 				pkgctl_aur_usage | ||||||
|  | 				exit 0 | ||||||
|  | 				;; | ||||||
|  | 			drop-from-repo) | ||||||
|  | 				_DEVTOOLS_COMMAND+=" $1" | ||||||
|  | 				shift | ||||||
|  | 				# shellcheck source=src/lib/aur/drop-from-repo.sh | ||||||
|  | 				source "${_DEVTOOLS_LIBRARY_DIR}"/lib/aur/drop-from-repo.sh | ||||||
|  | 				pkgctl_aur_drop_from_repo "$@" | ||||||
|  | 				exit 0 | ||||||
|  | 				;; | ||||||
|  | 			-*) | ||||||
|  | 				die "invalid argument: %s" "$1" | ||||||
|  | 				;; | ||||||
|  | 			*) | ||||||
|  | 				die "invalid command: %s" "$1" | ||||||
|  | 				;; | ||||||
|  | 		esac | ||||||
|  | 	done | ||||||
|  | } | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user