Compare commits
	
		
			40 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9e67c31d61 | |||
| 
						
						
							
						
						41c90f8d49
	
				 | 
					
					
						|||
| 
						
						
							
						
						c97a0cdd59
	
				 | 
					
					
						|||
| 
						
						
							
						
						1ba16c45f9
	
				 | 
					
					
						|||
| 
						
						
							
						
						95afc31152
	
				 | 
					
					
						|||
| af81317aad | |||
| 79e12f3d10 | |||
| 917cd188d9 | |||
| 
						
						
							
						
						bfe462432d
	
				 | 
					
					
						|||
| 
						
						
							
						
						896e8e195f
	
				 | 
					
					
						|||
| 12d1b784ff | |||
| 
						
						
							
						
						d8129cbb9a
	
				 | 
					
					
						|||
| 
						
						
							
						
						950e0604a4
	
				 | 
					
					
						|||
| 607fa38500 | |||
| 
						
						
							
						
						39a2158c48
	
				 | 
					
					
						|||
| c67826fd2a | |||
| 3ac0122eac | |||
| 9afe8a863e | |||
| 9b1b1c46ed | |||
| 
						
						
							
						
						525c7dd0ee
	
				 | 
					
					
						|||
| 
						
						
							
						
						744eb3ca96
	
				 | 
					
					
						|||
| 
						
						
							
						
						3dd3f806ef
	
				 | 
					
					
						|||
| fa245021bf | |||
| fd74b22bc2 | |||
| 538e5051e5 | |||
| ba2542c697 | |||
| 23c6cecdcc | |||
| 
						
						
							
						
						828844fd9a
	
				 | 
					
					
						|||
| 760f5e8281 | |||
| bb1585ad7b | |||
| be6506d6ee | |||
| 35a9c2f305 | |||
| 5347f45cc5 | |||
| 
						
						
							
						
						c7f11a5bd5
	
				 | 
					
					
						|||
| f3794ff2ad | |||
| 
						
						
							
						
						c6811cca48
	
				 | 
					
					
						|||
| a1f296ff2b | |||
| ac5e0f4b3d | |||
| 2ecfb04dc6 | |||
| e81eac2021 | 
							
								
								
									
										11
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
SHELL=/bin/bash
 | 
			
		||||
 | 
			
		||||
V=0.33
 | 
			
		||||
V=0.37
 | 
			
		||||
BUILDTOOLVER ?= $(V)
 | 
			
		||||
 | 
			
		||||
CHROOTVER=0.12
 | 
			
		||||
@@ -80,7 +80,7 @@ conf_base:
 | 
			
		||||
 | 
			
		||||
conf_pkg:
 | 
			
		||||
	@install -d $(BUILDDIR)/makepkg.conf.d $(BUILDDIR)/artools
 | 
			
		||||
	@cp -a $(MAKEPKG_CONFIGS) $(BUILDDIR)/makepkg.conf.d
 | 
			
		||||
	@cp -ra $(MAKEPKG_CONFIGS) $(BUILDDIR)/makepkg.conf.d
 | 
			
		||||
	@cp -a $(TOOLS_CONFIGS_PKG) $(BUILDDIR)/artools
 | 
			
		||||
 | 
			
		||||
conf_iso:
 | 
			
		||||
@@ -111,11 +111,13 @@ install_pkg: binprogs_pkg
 | 
			
		||||
 | 
			
		||||
	for conf in $(notdir $(TOOLS_CONFIGS_PKG)); do install -Dm0644 $(BUILDDIR)/$(TOOLS)/$$conf $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)/$${conf##*/}; done
 | 
			
		||||
 | 
			
		||||
	for conf in $(notdir $(MAKEPKG_CONFIGS)); do install -Dm0644 $(BUILDDIR)/makepkg.conf.d/$$conf $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done
 | 
			
		||||
	cp -ra $(BUILDDIR)/makepkg.conf.d -t $(DESTDIR)$(DATADIR)
 | 
			
		||||
 | 
			
		||||
	for a in $(SETARCH_ALIASES); do install -m0644 $$a -t $(DESTDIR)$(DATADIR)/setarch-aliases.d; done
 | 
			
		||||
	ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
 | 
			
		||||
 | 
			
		||||
	install -Dm0644 $(BUILDDIR)/contrib/completion/bash/artixpkg $(DESTDIR)$(PREFIX)/share/bash-completion/completions/artixpkg
 | 
			
		||||
	install -Dm0644 $(BUILDDIR)/contrib/completion/zsh/_artixpkg $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_artixpkg
 | 
			
		||||
 | 
			
		||||
install_iso: binprogs_iso
 | 
			
		||||
	install -dm0755 $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
 | 
			
		||||
@@ -133,13 +135,12 @@ uninstall:
 | 
			
		||||
	for f in $(notdir $(LIBRARY)); do rm -f $(DESTDIR)$(DATADIR)/lib/$$f; done
 | 
			
		||||
	rm -rf $(DESTDIR)$(DATADIR)/lib
 | 
			
		||||
	for conf in $(notdir $(TOOLS_CONFIGS)); do rm -f $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)/$${conf##*/}; done
 | 
			
		||||
	for conf in $(notdir $(MAKEPKG_CONFIGS)); do rm -f $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done
 | 
			
		||||
	rm -rf $(DESTDIR)$(DATADIR)/makepkg.conf.d
 | 
			
		||||
	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
 | 
			
		||||
	rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides
 | 
			
		||||
	rmdir --ignore-fail-on-non-empty \
 | 
			
		||||
		$(DESTDIR)$(DATADIR)/setarch-aliases.d \
 | 
			
		||||
		$(DESTDIR)$(DATADIR)/makepkg.conf.d \
 | 
			
		||||
		$(DESTDIR)$(DATADIR)/pacman.conf.d \
 | 
			
		||||
		$(DESTDIR)$(DATADIR) \
 | 
			
		||||
		$(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
 | 
			
		||||
 
 | 
			
		||||
@@ -36,5 +36,11 @@
 | 
			
		||||
# default archiving org
 | 
			
		||||
# GIT_ORG_ARCHIVE='landfill'
 | 
			
		||||
 | 
			
		||||
# default jenkins agents
 | 
			
		||||
# AGENTS=(orion taurus)
 | 
			
		||||
# whether to include custom maintainer line when importing from arch
 | 
			
		||||
# PATCH_MAINTAINER=false
 | 
			
		||||
 | 
			
		||||
# override the default git url for patches repo
 | 
			
		||||
# PATCH_URL=${GIT_SSH}:artix/artix-patches.git
 | 
			
		||||
 | 
			
		||||
# override the default debug pool
 | 
			
		||||
# PKGDEST_DBG=${WORKSPACE_DIR}/packages-debug
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								config/makepkg/conf.d/fortran.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								config/makepkg/conf.d/fortran.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
#!/hint/bash
 | 
			
		||||
#
 | 
			
		||||
# /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="-O2 -pipe"
 | 
			
		||||
#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="-Cforce-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"
 | 
			
		||||
@@ -43,17 +43,16 @@ CHOST="x86_64-pc-linux-gnu"
 | 
			
		||||
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
 | 
			
		||||
        -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
 | 
			
		||||
        -fstack-clash-protection -fcf-protection"
 | 
			
		||||
        # -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
 | 
			
		||||
CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
 | 
			
		||||
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \
 | 
			
		||||
         -Wl,-z,pack-relative-relocs"
 | 
			
		||||
LTOFLAGS="-flto=auto"
 | 
			
		||||
RUSTFLAGS=""
 | 
			
		||||
#-- Make Flags: change this for DistCC/SMP systems
 | 
			
		||||
#MAKEFLAGS="-j2"
 | 
			
		||||
#-- Debugging flags
 | 
			
		||||
DEBUG_CFLAGS="-g"
 | 
			
		||||
DEBUG_CXXFLAGS="$DEBUG_CFLAGS"
 | 
			
		||||
DEBUG_RUSTFLAGS="-C debuginfo=2"
 | 
			
		||||
 | 
			
		||||
#########################################################################
 | 
			
		||||
# BUILD ENVIRONMENT
 | 
			
		||||
@@ -82,7 +81,7 @@ BUILDENV=(!distcc color !ccache check !sign)
 | 
			
		||||
#   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.
 | 
			
		||||
#
 | 
			
		||||
#-- strip:      Strip symbols from binaries/libraries
 | 
			
		||||
@@ -94,6 +93,7 @@ BUILDENV=(!distcc color !ccache check !sign)
 | 
			
		||||
#-- purge:      Remove files specified by PURGE_TARGETS
 | 
			
		||||
#-- debug:      Add debugging flags as specified in DEBUG_* variables
 | 
			
		||||
#-- 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)
 | 
			
		||||
 | 
			
		||||
@@ -113,6 +113,8 @@ DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
 | 
			
		||||
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
 | 
			
		||||
#-- Directory to store source code in for debug packages
 | 
			
		||||
DBGSRCDIR="/usr/src/debug"
 | 
			
		||||
#-- Prefix and directories for library autodeps
 | 
			
		||||
LIB_DIRS=('lib:usr/lib' 'lib32:usr/lib32')
 | 
			
		||||
 | 
			
		||||
#########################################################################
 | 
			
		||||
# 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
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,8 @@ Color
 | 
			
		||||
CheckSpace
 | 
			
		||||
VerbosePkgLists
 | 
			
		||||
ParallelDownloads = 10
 | 
			
		||||
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.
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,8 @@ Color
 | 
			
		||||
CheckSpace
 | 
			
		||||
VerbosePkgLists
 | 
			
		||||
ParallelDownloads = 10
 | 
			
		||||
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.
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,8 @@ Color
 | 
			
		||||
CheckSpace
 | 
			
		||||
VerbosePkgLists
 | 
			
		||||
ParallelDownloads = 10
 | 
			
		||||
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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,8 @@ NoProgressBar
 | 
			
		||||
#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.
 | 
			
		||||
 
 | 
			
		||||
@@ -3,13 +3,20 @@
 | 
			
		||||
LIBDIR=${LIBDIR:-'@libdir@'}
 | 
			
		||||
 | 
			
		||||
_artixpkg_pkgbase() {
 | 
			
		||||
    source "${LIBDIR}"/pkg/git/config.sh
 | 
			
		||||
    source "${LIBDIR}"/pkg/util.sh
 | 
			
		||||
    ls -1 "${TREE_DIR_ARTIX}" | tr '\n' ' '
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_artixpkg_remotepkgbase() {
 | 
			
		||||
    curl -s "https://checkupdates.artixlinux.org/api/1.0/packages?startswith=$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_artixpkg_maintainers() {
 | 
			
		||||
    curl -s "https://checkupdates.artixlinux.org/api/1.0/maintainers"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_artixpkg_completion() {
 | 
			
		||||
    local cur prev comps comps_all repos autorepos teams agents cwords comp_cword_exflag
 | 
			
		||||
    local cur prev comps comps_all repos autorepos teams agents cwords comp_cword_exflag agent_flag_present
 | 
			
		||||
    source "${LIBDIR}"/pkg/db/db.sh 2>/dev/null
 | 
			
		||||
 | 
			
		||||
    cur="${COMP_WORDS[COMP_CWORD]}"
 | 
			
		||||
@@ -26,6 +33,7 @@ _artixpkg_completion() {
 | 
			
		||||
    comps_all=""
 | 
			
		||||
    comp_cword_exflag=0
 | 
			
		||||
    comp_cword_all=0
 | 
			
		||||
    agent_flag_present=false
 | 
			
		||||
    for ((i = 0; i < ${#COMP_WORDS[@]} - 1; i++)); do
 | 
			
		||||
        word="${COMP_WORDS[i]}"
 | 
			
		||||
        comps_all+=" $word"
 | 
			
		||||
@@ -34,6 +42,10 @@ _artixpkg_completion() {
 | 
			
		||||
            comps+=" $word"
 | 
			
		||||
            ((comp_cword_exflag++))
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ $word == -a || $word == --agent ]]; then
 | 
			
		||||
            # -a can also refer to --adopt
 | 
			
		||||
            agent_flag_present=true
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    comps="${comps:1}"
 | 
			
		||||
    comps_all="${comps_all:1}"
 | 
			
		||||
@@ -67,10 +79,9 @@ _artixpkg_completion() {
 | 
			
		||||
    done
 | 
			
		||||
    agents="${agents:1}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    case "${comp_cword_exflag}" in
 | 
			
		||||
        1)
 | 
			
		||||
            COMPREPLY=($(compgen -W "admin ci git repo version -h --help" -- "${cur}"))
 | 
			
		||||
            COMPREPLY=($(compgen -W "admin git repo version -h --help" -- "${cur}"))
 | 
			
		||||
            return 0
 | 
			
		||||
            ;;
 | 
			
		||||
        2)
 | 
			
		||||
@@ -78,9 +89,6 @@ _artixpkg_completion() {
 | 
			
		||||
                admin)
 | 
			
		||||
                    COMPREPLY=($(compgen -W "maintainer query team topic transfer -h --help" -- ${cur}))
 | 
			
		||||
                    ;;
 | 
			
		||||
                ci)
 | 
			
		||||
                    COMPREPLY=($(compgen -W "config -h --help" -- ${cur}))
 | 
			
		||||
                    ;;
 | 
			
		||||
                git)
 | 
			
		||||
                    COMPREPLY=($(compgen -W "clone config create pull push -h --help" -- ${cur}))
 | 
			
		||||
                    ;;
 | 
			
		||||
@@ -94,37 +102,6 @@ _artixpkg_completion() {
 | 
			
		||||
            ;;  
 | 
			
		||||
        *)
 | 
			
		||||
            case "${comps}" in
 | 
			
		||||
                "artixpkg repo add"*)
 | 
			
		||||
                    local repoAddCommon="-p --push -r --rebuild -n --nocheck -h --help"
 | 
			
		||||
                    case "${comp_cword_exflag}" in
 | 
			
		||||
                        3)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$repoAddCommon $autorepos $repos" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$repoAddCommon $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg repo remove"*)
 | 
			
		||||
                    case "${comp_cword_exflag}" in
 | 
			
		||||
                        3)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-p --push -h --help $autorepos $repos" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-p --push -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg repo move"*)
 | 
			
		||||
                    case "${comp_cword_exflag}" in
 | 
			
		||||
                        3|4)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-p --push -h --help $autorepos $repos" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-p --push -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg repo import"*)
 | 
			
		||||
                    case "${prev}" in
 | 
			
		||||
                        "--tag")
 | 
			
		||||
@@ -139,23 +116,68 @@ _artixpkg_completion() {
 | 
			
		||||
                "artixpkg repo show")
 | 
			
		||||
                    COMPREPLY=($(compgen -W "-b --base -p --pkgs -h --help" -- ${cur}))
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg git clone"*)
 | 
			
		||||
                "artixpkg repo"*)
 | 
			
		||||
                    if [ "$agent_flag_present" = true ] ; then
 | 
			
		||||
                        ((comp_cword_exflag--))
 | 
			
		||||
                    fi
 | 
			
		||||
                    case "${prev}" in
 | 
			
		||||
                        "-a"|"--agent")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$agents" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            case "${comps}" in
 | 
			
		||||
                                "artixpkg repo add"*)
 | 
			
		||||
                                    local repoAddCommon="-p --push -r --rebuild -n --nocheck -a --agent -h --help"
 | 
			
		||||
                                    case "${comp_cword_exflag}" in
 | 
			
		||||
                                        3)
 | 
			
		||||
                                            COMPREPLY=($(compgen -W "$repoAddCommon $autorepos $repos" -- ${cur}))
 | 
			
		||||
                                            ;;
 | 
			
		||||
                                        *)
 | 
			
		||||
                                            COMPREPLY=($(compgen -W "$repoAddCommon $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                                            ;;
 | 
			
		||||
                                    esac
 | 
			
		||||
                                    ;;
 | 
			
		||||
                                "artixpkg repo remove"*)
 | 
			
		||||
                                    case "${comp_cword_exflag}" in
 | 
			
		||||
                                        3)
 | 
			
		||||
                                            COMPREPLY=($(compgen -W "-p --push -a --agent -h --help $autorepos $repos" -- ${cur}))
 | 
			
		||||
                                            ;;
 | 
			
		||||
                                        *)
 | 
			
		||||
                                            COMPREPLY=($(compgen -W "-p --push -a --agent -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                                            ;;
 | 
			
		||||
                                    esac
 | 
			
		||||
                                    ;;
 | 
			
		||||
                                "artixpkg repo move"*)
 | 
			
		||||
                                    case "${comp_cword_exflag}" in
 | 
			
		||||
                                        3|4)
 | 
			
		||||
                                            COMPREPLY=($(compgen -W "-p --push -a --agent -h --help $autorepos $repos" -- ${cur}))
 | 
			
		||||
                                            ;;
 | 
			
		||||
                                        *)
 | 
			
		||||
                                            COMPREPLY=($(compgen -W "-p --push -a --agent -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                                            ;;
 | 
			
		||||
                                    esac
 | 
			
		||||
                                    ;;
 | 
			
		||||
                            esac
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg git clone"*)
 | 
			
		||||
                    case "${prev}" in
 | 
			
		||||
                        "--protocol")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "https" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        "-t"|"--team")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$teams" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        "-m"|"--maintainer"|"-s"|"--search"|"-t"|"--team"|"-j"|"--jobs")
 | 
			
		||||
                        "-m"|"--maintainer")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        "-s"|"--search"|"-j"|"--jobs")
 | 
			
		||||
                            # these flags expect a parameter
 | 
			
		||||
                            COMPREPLY=()
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-m --maintainer --protocol -s --search -t --team -a --agent -j --jobs --all -h --help" -- ${cur}))
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-m --maintainer --protocol -s --search -t --team -j --jobs --all -h --help $(_artixpkg_remotepkgbase ${cur})" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
@@ -175,20 +197,20 @@ _artixpkg_completion() {
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg git create"*)
 | 
			
		||||
                    case "${prev}" in
 | 
			
		||||
                        "-a"|"--agent")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$agents" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        "-t"|"--team")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$teams" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-c --clone -a --agent -t --team -h --help" -- ${cur}))
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-c --clone -t --team -h --help" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg git pull"*)
 | 
			
		||||
                    case "${prev}" in
 | 
			
		||||
                        "-t"|"--topic"|"-m"|"--maintainer"|"-j"|"--jobs")
 | 
			
		||||
                        "-m"|"--maintainer")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        "-t"|"--topic"|"-j"|"--jobs")
 | 
			
		||||
                            # these flags expect a parameter
 | 
			
		||||
                            COMPREPLY=()
 | 
			
		||||
                            ;;
 | 
			
		||||
@@ -206,33 +228,22 @@ _artixpkg_completion() {
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg git push"*)
 | 
			
		||||
                    case "${prev}" in
 | 
			
		||||
                        "-m"|"--maintainer"|"-t"|"--topic"|"-j"|"--jobs")
 | 
			
		||||
                        "-m"|"--maintainer")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        "-t"|"--topic")
 | 
			
		||||
                            # this flag expects a parameter
 | 
			
		||||
                            COMPREPLY=()
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-m --maintainer -t --topic -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg ci config"*)
 | 
			
		||||
                    case "${prev}" in
 | 
			
		||||
                        "-j"|"--jobs")
 | 
			
		||||
                            # this flag expects a parameter
 | 
			
		||||
                            COMPREPLY=()
 | 
			
		||||
                            ;;
 | 
			
		||||
                        "-a"|"--agent")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$agents" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-a --agent -s --switch -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-m --maintainer -t --topic -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg admin maintainer"*)
 | 
			
		||||
                    case "${comp_cword_all}" in
 | 
			
		||||
                        3)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-a --adopt --o --orphan -h --help" -- ${cur}))
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-a --adopt -o --orphan -h --help" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
@@ -241,7 +252,10 @@ _artixpkg_completion() {
 | 
			
		||||
                    ;;
 | 
			
		||||
                "artixpkg admin query"*)
 | 
			
		||||
                    case "${prev}" in
 | 
			
		||||
                        "-m"|"--maintainer"|"-t"|"--topic")
 | 
			
		||||
                        "-m"|"--maintainer")
 | 
			
		||||
                            COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                        "-t"|"--topic")
 | 
			
		||||
                            # this flag expects a parameter
 | 
			
		||||
                            COMPREPLY=()
 | 
			
		||||
                            ;;
 | 
			
		||||
@@ -267,7 +281,7 @@ _artixpkg_completion() {
 | 
			
		||||
                            COMPREPLY=()
 | 
			
		||||
                            ;;
 | 
			
		||||
                        *)
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-a --add -r --remove -d --del -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                            COMPREPLY=($(compgen -W "-a --add -r --remove -d --delete -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
			
		||||
                            ;;
 | 
			
		||||
                    esac
 | 
			
		||||
                    ;;
 | 
			
		||||
@@ -279,4 +293,4 @@ _artixpkg_completion() {
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
complete -F _artixpkg_completion artixpkg
 | 
			
		||||
complete -F _artixpkg_completion artixpkg
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										205
									
								
								contrib/completion/zsh/_artixpkg.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										205
									
								
								contrib/completion/zsh/_artixpkg.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,205 @@
 | 
			
		||||
#compdef artixpkg
 | 
			
		||||
 | 
			
		||||
local -a addcmd admincmd cicmd clonecmd configcmd createcmd gitcmd importcmd \
 | 
			
		||||
         initialcmd maintainercmd movecmd querycmd pullcmd pushcmd removecmd \
 | 
			
		||||
         repocmd showcmd teamcmd topiccmd transfercmd versioncmd
 | 
			
		||||
_regex_words maintainer '' \
 | 
			
		||||
                        '-a' \
 | 
			
		||||
                        '--adopt' \
 | 
			
		||||
                        '-h' \
 | 
			
		||||
                        '--help' \
 | 
			
		||||
                        '-o' \
 | 
			
		||||
                        '--orphan'
 | 
			
		||||
maintainercmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words query '' \
 | 
			
		||||
                   '-h' \
 | 
			
		||||
                   '--help' \
 | 
			
		||||
                   '-m' \
 | 
			
		||||
                   '-t'
 | 
			
		||||
querycmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words team '' \
 | 
			
		||||
                  '-a' \
 | 
			
		||||
                  '--add' \
 | 
			
		||||
                  '-c' \
 | 
			
		||||
                  '--check' \
 | 
			
		||||
                  '-h' \
 | 
			
		||||
                  '--help' \
 | 
			
		||||
                  '-r' \
 | 
			
		||||
                  '--remove'
 | 
			
		||||
teamcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words topic '' \
 | 
			
		||||
                   '-a' \
 | 
			
		||||
                   '--add' \
 | 
			
		||||
                   '-d' \
 | 
			
		||||
                   '--delete' \
 | 
			
		||||
                   '-h' \
 | 
			
		||||
                   '--help' \
 | 
			
		||||
                   '-j' \
 | 
			
		||||
                   '--jobs' \
 | 
			
		||||
                   '-r' \
 | 
			
		||||
                   '--remove'
 | 
			
		||||
topiccmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words transfer '' \
 | 
			
		||||
                      '-h' \
 | 
			
		||||
                      '--help'
 | 
			
		||||
transfercmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_regex_words admin '' \
 | 
			
		||||
                   '-h:Help text' \
 | 
			
		||||
                   '--help:Help text' \
 | 
			
		||||
                   'maintainer:Manage repo maintainer:$maintainercmd' \
 | 
			
		||||
                   'query:Query maintainers and topics:$querycmd' \
 | 
			
		||||
                   'team:Manage repo team:$teamcmd' \
 | 
			
		||||
                   'topic:Manage topics:$topiccmd' \
 | 
			
		||||
                   'transfer:Transfer obsolete repositories to landfill:$transfercmd'
 | 
			
		||||
admincmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words ci '' \
 | 
			
		||||
                '-a' \
 | 
			
		||||
                '--agent' \
 | 
			
		||||
                '-h' \
 | 
			
		||||
                '--help'
 | 
			
		||||
cicmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words clone '' \
 | 
			
		||||
                   '-a' \
 | 
			
		||||
                   '--agent' \
 | 
			
		||||
                   '--all' \
 | 
			
		||||
                   '-h' \
 | 
			
		||||
                   '--help' \
 | 
			
		||||
                   '-j' \
 | 
			
		||||
                   '--jobs' \
 | 
			
		||||
                   '-m' \
 | 
			
		||||
                   '--maintainer' \
 | 
			
		||||
                   '--protocol' \
 | 
			
		||||
                   '-s' \
 | 
			
		||||
                   '--search' \
 | 
			
		||||
                   '-t' \
 | 
			
		||||
                   '--team'
 | 
			
		||||
clonecmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words config '' \
 | 
			
		||||
                    '-h' \
 | 
			
		||||
                    '--help' \
 | 
			
		||||
                    '-j' \
 | 
			
		||||
                    '--jobs' \
 | 
			
		||||
                    '--protocol'
 | 
			
		||||
configcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words create '' \
 | 
			
		||||
                    '-a' \
 | 
			
		||||
                    '--agent' \
 | 
			
		||||
                    '-c' \
 | 
			
		||||
                    '--create' \
 | 
			
		||||
                    '-h' \
 | 
			
		||||
                    '--help' \
 | 
			
		||||
                    '-t' \
 | 
			
		||||
                    '--team'
 | 
			
		||||
createcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words pull '' \
 | 
			
		||||
                  '--all' \
 | 
			
		||||
                  '-h' \
 | 
			
		||||
                  '--help' \
 | 
			
		||||
                  '-j' \
 | 
			
		||||
                  '--jobs' \
 | 
			
		||||
                  '-m' \
 | 
			
		||||
                  '--maintainer' \
 | 
			
		||||
                  '-t' \
 | 
			
		||||
                  '--topic'
 | 
			
		||||
pullcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words push '' \
 | 
			
		||||
                  '-h' \
 | 
			
		||||
                  '--help' \
 | 
			
		||||
                  '-j' \
 | 
			
		||||
                  '--jobs' \
 | 
			
		||||
                  '-m' \
 | 
			
		||||
                  '--maintainer' \
 | 
			
		||||
                  '-t' \
 | 
			
		||||
                  '--topic'
 | 
			
		||||
pushcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words git '' \
 | 
			
		||||
                 'ci:Configure CI agent:$cicmd' \
 | 
			
		||||
                 'clone:Clone a package:$clonecmd' \
 | 
			
		||||
                 'config:Configure a clone:$configcmd' \
 | 
			
		||||
                 'create:Create a new gitea package repository:$createcmd' \
 | 
			
		||||
                 '-h:Help text' \
 | 
			
		||||
                 '--help:Help text' \
 | 
			
		||||
                 'pull:Pull a package repository:$pullcmd' \
 | 
			
		||||
                 'push:Push a package repository:$pushcmd'
 | 
			
		||||
gitcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words add '' \
 | 
			
		||||
                 '-h' \
 | 
			
		||||
                 '--help' \
 | 
			
		||||
                 '-n' \
 | 
			
		||||
                 '--nocheck' \
 | 
			
		||||
                 '-p' \
 | 
			
		||||
                 '--push' \
 | 
			
		||||
                 '-r' \
 | 
			
		||||
                 '--rebuild'
 | 
			
		||||
addcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words import '' \
 | 
			
		||||
                    '--del' \
 | 
			
		||||
                    '-h' \
 | 
			
		||||
                    '--help' \
 | 
			
		||||
                    '--tag'
 | 
			
		||||
importcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words move '' \
 | 
			
		||||
                  '-h' \
 | 
			
		||||
                  '--help' \
 | 
			
		||||
                  '-p' \
 | 
			
		||||
                  '--push'
 | 
			
		||||
movecmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words remove '' \
 | 
			
		||||
                    '-h' \
 | 
			
		||||
                    '--help' \
 | 
			
		||||
                    '-p' \
 | 
			
		||||
                    '--push'
 | 
			
		||||
removecmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words show '' \
 | 
			
		||||
                  '-b' \
 | 
			
		||||
                  '--base' \
 | 
			
		||||
                  '-h' \
 | 
			
		||||
                  '--help' \
 | 
			
		||||
                  '-p' \
 | 
			
		||||
                  '--pkgs'
 | 
			
		||||
showcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words repo '' \
 | 
			
		||||
                  'add:Add pkgbase to repo:$addcmd' \
 | 
			
		||||
                  '-h:Help text' \
 | 
			
		||||
                  '--help:Help text' \
 | 
			
		||||
                  'import:Import latest tag from arch upstream:$importcmd' \
 | 
			
		||||
                  'move:Move pkgbase between repos:$movecmd' \
 | 
			
		||||
                  'remove:Remove pkgbase from repo:$removecmd' \
 | 
			
		||||
                  'show:Show pkgbase repo db:$showcmd'
 | 
			
		||||
repocmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words version '' \
 | 
			
		||||
                     '-h' \
 | 
			
		||||
                     '--help'
 | 
			
		||||
versioncmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_words initial '' \
 | 
			
		||||
                     'admin:Manage topics:$admincmd' \
 | 
			
		||||
                     'git:Manage git:$gitcmd' \
 | 
			
		||||
                     '-h:Help text' \
 | 
			
		||||
                     '--help:Help text' \
 | 
			
		||||
                     'repo:Pacman database modification:$repocmd' \
 | 
			
		||||
                     'version:Show artixpkg version:$versioncmd'
 | 
			
		||||
initialcmd=("$reply[@]")
 | 
			
		||||
 | 
			
		||||
_regex_arguments _artixpkg /$'[^\0]##\0'/ "${initialcmd[@]}"
 | 
			
		||||
_artixpkg "$@"
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
################ install ################
 | 
			
		||||
 | 
			
		||||
# start services
 | 
			
		||||
# bluetoothd, cupsd, DM are added to the pkglist dynamicly
 | 
			
		||||
# metalog or syslog-ng is added to the pkglist dynamicly
 | 
			
		||||
# connmand or NetworkManager is added to the pkglist dynamicly
 | 
			
		||||
# only added if in array, these pkgs have no list entry
 | 
			
		||||
 | 
			
		||||
SERVICES=('acpid' 'bluetoothd' 'cronie' 'cupsd' 'metalog' 'connmand')
 | 
			
		||||
 | 
			
		||||
################# live-session #################
 | 
			
		||||
 | 
			
		||||
# default value
 | 
			
		||||
# PASSWORD="artix"
 | 
			
		||||
 | 
			
		||||
# Set to false to disable autologin in the live session
 | 
			
		||||
AUTOLOGIN="false"
 | 
			
		||||
							
								
								
									
										28
									
								
								contrib/iso/profile.yaml.example
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								contrib/iso/profile.yaml.example
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
# required
 | 
			
		||||
live-session:
 | 
			
		||||
    user: "artix"
 | 
			
		||||
    password: "artix"
 | 
			
		||||
    autologin: true
 | 
			
		||||
    use-xlibre: false
 | 
			
		||||
    services: []
 | 
			
		||||
    user-services: []
 | 
			
		||||
 | 
			
		||||
# required
 | 
			
		||||
rootfs:
 | 
			
		||||
    packages: []
 | 
			
		||||
    packages-init:
 | 
			
		||||
        dinit: []
 | 
			
		||||
        openrc: []
 | 
			
		||||
        runit: []
 | 
			
		||||
        s6: []
 | 
			
		||||
 | 
			
		||||
# optional
 | 
			
		||||
# livefs:
 | 
			
		||||
#     packages: []
 | 
			
		||||
#     packages-init:
 | 
			
		||||
#         dinit: []
 | 
			
		||||
#         openrc: []
 | 
			
		||||
#         runit: []
 | 
			
		||||
#         s6: []
 | 
			
		||||
@@ -88,7 +88,7 @@ make_rootfs() {
 | 
			
		||||
        msg "Prepare [Base installation] (rootfs)"
 | 
			
		||||
        local rootfs="${work_dir}/rootfs"
 | 
			
		||||
 | 
			
		||||
        load_pkgs "${root_list}"
 | 
			
		||||
        load_pkgs "rootfs"
 | 
			
		||||
 | 
			
		||||
        prepare_dir "${rootfs}"
 | 
			
		||||
 | 
			
		||||
@@ -100,7 +100,9 @@ make_rootfs() {
 | 
			
		||||
 | 
			
		||||
        copy_overlay "${root_overlay}" "${rootfs}"
 | 
			
		||||
 | 
			
		||||
        [[ -z ${live_list} ]] && configure_chroot "${rootfs}"
 | 
			
		||||
        if ! "${HAS_LIVE}"; then
 | 
			
		||||
            configure_chroot "${rootfs}"
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        clean_up_chroot "${rootfs}"
 | 
			
		||||
 | 
			
		||||
@@ -115,7 +117,7 @@ make_livefs() {
 | 
			
		||||
        msg "Prepare [Live installation] (livefs)"
 | 
			
		||||
        local livefs="${work_dir}/livefs"
 | 
			
		||||
 | 
			
		||||
        load_pkgs "${live_list}"
 | 
			
		||||
        load_pkgs "livefs"
 | 
			
		||||
 | 
			
		||||
        prepare_dir "${livefs}"
 | 
			
		||||
 | 
			
		||||
@@ -141,7 +143,7 @@ make_bootfs() {
 | 
			
		||||
    if [[ ! -e ${work_dir}/bootfs.lock ]]; then
 | 
			
		||||
        msg "Prepare [/iso/boot]"
 | 
			
		||||
 | 
			
		||||
        load_pkgs "${common_dir}/Packages-boot"
 | 
			
		||||
        load_pkgs "bootfs"
 | 
			
		||||
 | 
			
		||||
        prepare_dir "${iso_root}/boot"
 | 
			
		||||
 | 
			
		||||
@@ -171,7 +173,9 @@ make_grub(){
 | 
			
		||||
        msg "Prepare [/iso/boot/grub]"
 | 
			
		||||
 | 
			
		||||
        local layer=${work_dir}/rootfs
 | 
			
		||||
        [[ -n ${live_list} ]] && layer=${work_dir}/livefs
 | 
			
		||||
        if "${HAS_LIVE}"; then
 | 
			
		||||
            layer=${work_dir}/livefs
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        prepare_grub "${work_dir}/rootfs" "$layer"
 | 
			
		||||
 | 
			
		||||
@@ -280,7 +284,7 @@ mk_boot(){
 | 
			
		||||
 | 
			
		||||
mk_chroots(){
 | 
			
		||||
    run_safe "make_rootfs"
 | 
			
		||||
    if [[ -n ${live_list} ]]; then
 | 
			
		||||
    if "${HAS_LIVE}"; then
 | 
			
		||||
        run_safe "make_livefs"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,13 +21,22 @@ configure_calamares(){
 | 
			
		||||
            msg2 "Configuring: Calamares %s" "$config"
 | 
			
		||||
 | 
			
		||||
            if [[ -f "$mods"/services-artix.conf ]]; then
 | 
			
		||||
                local svc
 | 
			
		||||
                local svc usvc
 | 
			
		||||
                svc=$(yaml_array "${SERVICES[@]}") \
 | 
			
		||||
                    yq -P 'with(.;
 | 
			
		||||
                            .command = "artix-service" |
 | 
			
		||||
                            .services = env(svc) )' \
 | 
			
		||||
                        -i "$mods"/services-artix.conf
 | 
			
		||||
            fi
 | 
			
		||||
            if [[ -f "$mods"/postcfg.conf ]]; then
 | 
			
		||||
                local  usvc initsys
 | 
			
		||||
                initsys="${INITSYS}" \
 | 
			
		||||
                usvc=$(yaml_array "${USER_SERVICES[@]}") \
 | 
			
		||||
                    yq -P 'with(.;
 | 
			
		||||
                            .initsys = env(initsys) |
 | 
			
		||||
                            .user-services = env(usvc) )' \
 | 
			
		||||
                        -i "$mods"/postcfg.conf
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    if [[ -d "$1"/etc/calamares-offline ]]; then
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,21 @@
 | 
			
		||||
 | 
			
		||||
#{{{ session
 | 
			
		||||
 | 
			
		||||
configure_user(){
 | 
			
		||||
    local -r grps="users,lp,video,network,storage,wheel,audio,power,log,optical,network,scanner"
 | 
			
		||||
 | 
			
		||||
    chroot "$1" useradd -m -G "$grps" -s /bin/bash "${LIVEUSER}"
 | 
			
		||||
    echo "${LIVEUSER}:${PASSWORD}" | chroot "$1" chpasswd
 | 
			
		||||
    echo "root:${PASSWORD}" | chroot "$1" chpasswd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
configure_services(){
 | 
			
		||||
    local mnt="$1"
 | 
			
		||||
    add_svc_"${INITSYS}" "$mnt" "${SERVICES[*]}"
 | 
			
		||||
    add_svc_"${INITSYS}" "$mnt"
 | 
			
		||||
 | 
			
		||||
    if [[ "${INITSYS}" == "openrc" ]] || [[ "${INITSYS}" == "dinit" ]]; then
 | 
			
		||||
        add_user_svc_"${INITSYS}" "$mnt"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -14,13 +26,14 @@ write_live_session_conf(){
 | 
			
		||||
    local conf=''
 | 
			
		||||
    conf+=$(printf '%s\n' '# live session configuration')
 | 
			
		||||
    conf+=$(printf "\nAUTOLOGIN=%s\n" "${AUTOLOGIN}")
 | 
			
		||||
    conf+=$(printf "\nPASSWORD=%s\n" "${PASSWORD}")
 | 
			
		||||
    conf+=$(printf "\nLIVEUSER=%s\n" "${LIVEUSER}")
 | 
			
		||||
    printf '%s' "$conf"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
configure_chroot(){
 | 
			
		||||
    local fs="$1"
 | 
			
		||||
    msg "Configuring [%s]" "${fs##*/}"
 | 
			
		||||
    configure_user "$fs"
 | 
			
		||||
    configure_services "$fs"
 | 
			
		||||
    configure_calamares "$fs"
 | 
			
		||||
    [[ ! -d "$fs/etc/artools" ]] && mkdir -p "$fs/etc/artools"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@
 | 
			
		||||
show_profile(){
 | 
			
		||||
    msg2 "iso_file: %s" "${iso_file}"
 | 
			
		||||
    msg2 "AUTOLOGIN: %s" "${AUTOLOGIN}"
 | 
			
		||||
    msg2 "LIVEUSER: %s" "${LIVEUSER}"
 | 
			
		||||
    msg2 "PASSWORD: %s" "${PASSWORD}"
 | 
			
		||||
    msg2 "SERVICES: %s" "${SERVICES[*]}"
 | 
			
		||||
}
 | 
			
		||||
@@ -15,79 +16,125 @@ load_profile(){
 | 
			
		||||
    local profile_dir="${DATADIR}/iso-profiles"
 | 
			
		||||
    [[ -d "${WORKSPACE_DIR}"/iso-profiles ]] && profile_dir="${WORKSPACE_DIR}"/iso-profiles
 | 
			
		||||
 | 
			
		||||
    root_list="$profile_dir/${profile}/Packages-Root"
 | 
			
		||||
    root_overlay="$profile_dir/${profile}/root-overlay"
 | 
			
		||||
 | 
			
		||||
    [[ -f "$profile_dir/${profile}/Packages-Live" ]] && live_list="$profile_dir/${profile}/Packages-Live"
 | 
			
		||||
    [[ -d "$profile_dir/${profile}/live-overlay" ]] && live_overlay="$profile_dir/${profile}/live-overlay"
 | 
			
		||||
 | 
			
		||||
    common_dir="${DATADIR}/iso-profiles/common"
 | 
			
		||||
    [[ -d "$profile_dir"/common ]] && common_dir="${profile_dir}"/common
 | 
			
		||||
 | 
			
		||||
    [[ -f $profile_dir/${profile}/profile.conf ]] || return 1
 | 
			
		||||
    profile_yaml=$profile_dir/${profile}/profile.yaml
 | 
			
		||||
 | 
			
		||||
    # shellcheck source=contrib/iso/profile.conf.example
 | 
			
		||||
    [[ -r "$profile_dir/${profile}"/profile.conf ]] && . "$profile_dir/${profile}"/profile.conf
 | 
			
		||||
    common_yaml="${common_dir}/common.yaml"
 | 
			
		||||
 | 
			
		||||
    AUTOLOGIN=${AUTOLOGIN:-true}
 | 
			
		||||
    [[ -f $profile_yaml ]] || return 1
 | 
			
		||||
 | 
			
		||||
    PASSWORD=${PASSWORD:-'artix'}
 | 
			
		||||
    LIVEUSER=$(yq -P '.live-session.user' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
    if [[ -z "${SERVICES[*]}" ]];then
 | 
			
		||||
        SERVICES=('acpid' 'bluetoothd' 'cronie' 'cupsd' 'syslog-ng' 'connmand')
 | 
			
		||||
    fi
 | 
			
		||||
    PASSWORD=$(yq -P '.live-session.password' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
    AUTOLOGIN=$(yq -P '.live-session.autologin' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
    USE_XLIBRE=$(yq -P '.live-session.use-xlibre' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
    mapfile -t SERVICES < <(yq -P '.live-session.services[]' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
    mapfile -t USER_SERVICES < <(yq -P '.live-session.user-services[]' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
    HAS_LIVE=$(yq -P '. | has("livefs")' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
    return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
read_from_list() {
 | 
			
		||||
    local list="$1"
 | 
			
		||||
    local _space="s| ||g"
 | 
			
		||||
    #local _clean=':a;N;$!ba;s/\n/ /g'
 | 
			
		||||
    local _clean='/^$/d'
 | 
			
		||||
    local _com_rm="s|#.*||g"
 | 
			
		||||
    local _init="s|@initsys@|${INITSYS}|g"
 | 
			
		||||
 | 
			
		||||
    mapfile -t pkgs < <(sed "$_com_rm" "$list" \
 | 
			
		||||
            | sed "$_space" \
 | 
			
		||||
            | sed "$_init" \
 | 
			
		||||
            | sed "$_clean" | sort -u)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
load_pkgs(){
 | 
			
		||||
    local pkglist="$1"
 | 
			
		||||
    local list="$1"
 | 
			
		||||
 | 
			
		||||
    local common_base
 | 
			
		||||
    local common_apps
 | 
			
		||||
    local common_xorg
 | 
			
		||||
    local common_boot
 | 
			
		||||
    local common_init
 | 
			
		||||
    local packages_root
 | 
			
		||||
    local packages_live
 | 
			
		||||
    local packages_root_init
 | 
			
		||||
    local packages_live_init
 | 
			
		||||
 | 
			
		||||
    local common_key_init=".packages-init.${INITSYS}[]"
 | 
			
		||||
    local root_key_init=".rootfs.packages-init.${INITSYS}[]"
 | 
			
		||||
    local live_key_init=".livefs.packages-init.${INITSYS}[]"
 | 
			
		||||
 | 
			
		||||
    packages=()
 | 
			
		||||
 | 
			
		||||
    if [[ "${pkglist##*/}" == "Packages-Root" ]]; then
 | 
			
		||||
        for l in base apps "${INITSYS}"; do
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "Packages-${l}"
 | 
			
		||||
            read_from_list "${common_dir}/Packages-${l}"
 | 
			
		||||
            packages+=("${pkgs[@]}")
 | 
			
		||||
    case "$list" in
 | 
			
		||||
        rootfs)
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "common.packages-base"
 | 
			
		||||
            mapfile -t common_base < <(yq -P '.packages-base[]' "$common_yaml")
 | 
			
		||||
 | 
			
		||||
        done
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "common.packages-apps"
 | 
			
		||||
            mapfile -t common_apps < <(yq -P '.packages-apps[]' "$common_yaml")
 | 
			
		||||
 | 
			
		||||
        if [[ -n "${live_list}" ]]; then
 | 
			
		||||
            msg2 "Loading Packages: [Packages-xorg] ..."
 | 
			
		||||
            read_from_list "${common_dir}/Packages-xorg"
 | 
			
		||||
            packages+=("${pkgs[@]}")
 | 
			
		||||
        fi
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "common.packages-init.${INITSYS}"
 | 
			
		||||
            mapfile -t common_init < <(common_key_init="$common_key_init" yq -P 'eval(strenv(common_key_init))' "$common_yaml")
 | 
			
		||||
 | 
			
		||||
        for svc in "${SERVICES[@]}"; do
 | 
			
		||||
            case "$svc" in
 | 
			
		||||
                sddm|gdm|lightdm|mdm|greetd|lxdm|xdm)
 | 
			
		||||
                    packages+=("$svc-${INITSYS}"); display_manager="$svc" ;;
 | 
			
		||||
                NetworkManager) packages+=("networkmanager-${INITSYS}") ;;
 | 
			
		||||
                connmand) packages+=("connman-${INITSYS}") ;;
 | 
			
		||||
                cupsd) packages+=("cups-${INITSYS}") ;;
 | 
			
		||||
                bluetoothd) packages+=("bluez-${INITSYS}") ;;
 | 
			
		||||
                syslog-ng|metalog) packages+=("$svc-${INITSYS}") ;;
 | 
			
		||||
            esac
 | 
			
		||||
        done
 | 
			
		||||
            if "${HAS_LIVE}"; then
 | 
			
		||||
                if ${USE_XLIBRE}; then
 | 
			
		||||
                    msg2 "Loading Packages: [%s] ..." "common.packages-xlibre"
 | 
			
		||||
                    mapfile -t common_xorg < <(yq -P '.packages-xlibre[]' "$common_yaml")
 | 
			
		||||
                else
 | 
			
		||||
                    msg2 "Loading Packages: [%s] ..." "common.packages-xorg"
 | 
			
		||||
                    mapfile -t common_xorg < <(yq -P '.packages-xorg[]' "$common_yaml")
 | 
			
		||||
                fi
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
    fi
 | 
			
		||||
    msg2 "Loading Packages: [%s] ..." "${pkglist##*/}"
 | 
			
		||||
    read_from_list "${pkglist}"
 | 
			
		||||
    packages+=("${pkgs[@]}")
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "rootfs.packages"
 | 
			
		||||
            mapfile -t packages_root < <(yq -P '.rootfs.packages[]' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "rootfs.packages-init.${INITSYS}"
 | 
			
		||||
            mapfile -t packages_root_init < <(root_key_init="$root_key_init" yq -P 'eval(strenv(root_key_init))' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
            packages+=(
 | 
			
		||||
                "${common_base[@]}"
 | 
			
		||||
                "${common_apps[@]}"
 | 
			
		||||
                "${common_init[@]}"
 | 
			
		||||
                "${packages_root[@]}"
 | 
			
		||||
                "${packages_root_init[@]}"
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
            if "${HAS_LIVE}"; then
 | 
			
		||||
                packages+=(
 | 
			
		||||
                    "${common_xorg}"
 | 
			
		||||
                )
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            for svc in "${SERVICES[@]}"; do
 | 
			
		||||
                case "$svc" in
 | 
			
		||||
                    sddm|gdm|lightdm|mdm|greetd|lxdm|xdm)
 | 
			
		||||
                        display_manager="$svc"
 | 
			
		||||
                    ;;
 | 
			
		||||
                esac
 | 
			
		||||
            done
 | 
			
		||||
        ;;
 | 
			
		||||
        livefs)
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "livefs.packages"
 | 
			
		||||
            mapfile -t packages_live < <(yq -P '.livefs.packages[]' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "livefs.packages-init.${INITSYS}"
 | 
			
		||||
            mapfile -t packages_live_init < <(live_key_init="$live_key_init" yq -P 'eval(strenv(live_key_init))' "$profile_yaml")
 | 
			
		||||
 | 
			
		||||
            packages+=(
 | 
			
		||||
                "${packages_live[@]}"
 | 
			
		||||
                "${packages_live_init[@]}"
 | 
			
		||||
            )
 | 
			
		||||
        ;;
 | 
			
		||||
        bootfs)
 | 
			
		||||
            msg2 "Loading Packages: [%s] ..." "common.packages-boot"
 | 
			
		||||
            mapfile -t common_boot < <(yq -P '.packages-boot[]' "$common_yaml")
 | 
			
		||||
 | 
			
		||||
            packages+=(
 | 
			
		||||
                "${common_boot[@]}"
 | 
			
		||||
            )
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,8 @@
 | 
			
		||||
#{{{ services
 | 
			
		||||
 | 
			
		||||
add_svc_openrc(){
 | 
			
		||||
    local mnt="$1" names="$2" rlvl="${3:-default}"
 | 
			
		||||
    for svc in $names; do
 | 
			
		||||
    local mnt="$1" rlvl="${2:-default}"
 | 
			
		||||
    for svc in "${SERVICES[@]}"; do
 | 
			
		||||
        if [[ -f $mnt/etc/init.d/$svc ]];then
 | 
			
		||||
            msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
            chroot "$mnt" rc-update add "$svc" "$rlvl" &>/dev/null
 | 
			
		||||
@@ -14,9 +14,22 @@ add_svc_openrc(){
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_user_svc_openrc(){
 | 
			
		||||
    local mnt="$1" rlvl="${2:-default}"
 | 
			
		||||
    for svc in "${USER_SERVICES[@]}"; do
 | 
			
		||||
        if [[ -f "$mnt"/etc/user/init.d/"$svc" ]];then
 | 
			
		||||
            msg2 "Setting user %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
            local rc=".config/rc/runlevels/default"
 | 
			
		||||
            chroot "$mnt" mkdir -p /home/"${LIVEUSER}/$rc"
 | 
			
		||||
            chroot "$mnt" ln -s /etc/user/init.d/"$svc" /home/"${LIVEUSER}/$rc/$svc"
 | 
			
		||||
            chroot "$mnt" chown -R "${LIVEUSER}:${LIVEUSER}" /home/"${LIVEUSER}"/.config/rc
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_svc_runit(){
 | 
			
		||||
    local mnt="$1" names="$2" rlvl="${3:-default}"
 | 
			
		||||
    for svc in $names; do
 | 
			
		||||
    local mnt="$1" rlvl="${2:-default}"
 | 
			
		||||
    for svc in "${SERVICES[@]}"; do
 | 
			
		||||
        if [[ -d $mnt/etc/runit/sv/$svc ]]; then
 | 
			
		||||
            msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
            chroot "$mnt" ln -s /etc/runit/sv/"$svc" /etc/runit/runsvdir/"$rlvl" &>/dev/null
 | 
			
		||||
@@ -25,9 +38,9 @@ add_svc_runit(){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_svc_s6(){
 | 
			
		||||
    local mnt="$1" names="$2" rlvl="${3:-default}" dep
 | 
			
		||||
    local mnt="$1" rlvl="${2:-default}" dep
 | 
			
		||||
    dep="$mnt"/etc/s6/sv/"$display_manager"-srv/dependencies.d
 | 
			
		||||
    for svc in $names; do
 | 
			
		||||
    for svc in "${SERVICES[@]}"; do
 | 
			
		||||
        msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
        chroot "$mnt" s6-service add "$rlvl" "$svc"
 | 
			
		||||
        if [[ "$svc" == "$display_manager" ]]; then
 | 
			
		||||
@@ -47,22 +60,25 @@ add_svc_s6(){
 | 
			
		||||
    chroot "$mnt" cp -a "$src"/bin /usr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_svc_suite66(){
 | 
			
		||||
    local mnt="$1" names="$2"
 | 
			
		||||
    for svc in $names; do
 | 
			
		||||
        if [[ -f "$mnt"/etc/66/service/"$svc" ]]; then
 | 
			
		||||
add_svc_dinit(){
 | 
			
		||||
    local mnt="$1"
 | 
			
		||||
    for svc in "${SERVICES[@]}"; do
 | 
			
		||||
        if [[ -d $mnt/etc/dinit.d/boot.d ]]; then
 | 
			
		||||
            msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
            chroot "$mnt" 66-enable -t default "$svc" &>/dev/null
 | 
			
		||||
            chroot "$mnt" dinitctl enable -o "$svc" &>/dev/null
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_svc_dinit(){
 | 
			
		||||
    local mnt="$1" names="$2"
 | 
			
		||||
    for svc in $names; do
 | 
			
		||||
        if [[ -d $mnt/etc/dinit.d/boot.d ]]; then
 | 
			
		||||
            msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
            chroot "$mnt" ln -s ../"$svc" /etc/dinit.d/boot.d/"$svc" &>/dev/null
 | 
			
		||||
add_user_svc_dinit(){
 | 
			
		||||
    local mnt="$1"
 | 
			
		||||
    for svc in "${USER_SERVICES[@]}"; do
 | 
			
		||||
        if [[ -f "$mnt"/etc/dinit.d/user/"$svc" ]]; then
 | 
			
		||||
            msg2 "Setting user %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
            local usr_sv="/home/${LIVEUSER}/.config/dinit.d"
 | 
			
		||||
            chroot "$mnt" mkdir -p "$usr_sv"/boot.d
 | 
			
		||||
            chroot "$mnt" ln -s /etc/dinit.d/user/"$svc" "$usr_sv"/boot.d/"$svc"
 | 
			
		||||
            chroot "$mnt" chown -R "${LIVEUSER}:${LIVEUSER}" "$usr_sv"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,6 @@
 | 
			
		||||
[[ -z ${ARTOOLS_INCLUDE_ADMIN_MAINTAINER_SH:-} ]] || return 0
 | 
			
		||||
ARTOOLS_INCLUDE_ADMIN_MAINTAINER_SH=1
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/pkg/packager.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/packager.sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
@@ -81,7 +79,9 @@ artixpkg_admin_maintainer() {
 | 
			
		||||
 | 
			
		||||
    pkgbases+=("$@")
 | 
			
		||||
 | 
			
		||||
    load_makepkg_config
 | 
			
		||||
    # shellcheck source=src/lib/pkg/util/packager.sh
 | 
			
		||||
    source "${LIBDIR}"/pkg/util/packager.sh
 | 
			
		||||
 | 
			
		||||
    if [[ -n ${PACKAGER} ]]; then
 | 
			
		||||
        if ! packager_name=$(get_packager_name "${PACKAGER}") || \
 | 
			
		||||
            ! packager_email=$(get_packager_email "${PACKAGER}"); then
 | 
			
		||||
@@ -90,9 +90,11 @@ artixpkg_admin_maintainer() {
 | 
			
		||||
        if ! is_packager_name_valid "${packager_name}"; then
 | 
			
		||||
            die "invalid PACKAGER '${PACKAGER}' in makepkg.conf"
 | 
			
		||||
        fi
 | 
			
		||||
        if is_packager_email_official "${packager_email}"; then
 | 
			
		||||
            maintainer="maintainer-${packager_name}"
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    maintainer="maintainer-${packager_name}"
 | 
			
		||||
 | 
			
		||||
    if [[ -n ${GIT_TOKEN} ]]; then
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,9 +17,9 @@ artixpkg_admin_team_usage() {
 | 
			
		||||
        -c, --check                 Check if team is assigned
 | 
			
		||||
        -l, --list                  List repo teams
 | 
			
		||||
        -a, --add NAME              Add team to repo
 | 
			
		||||
                                    Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
 | 
			
		||||
                                    Possible values: (${ARTIX_TEAMS[@]})
 | 
			
		||||
        -r, --remove NAME           Remove team from repo
 | 
			
		||||
                                    Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
 | 
			
		||||
                                    Possible values: (${ARTIX_TEAMS[@]})
 | 
			
		||||
        -h, --help                  Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,11 @@ readonly ARTIX_DB_MAP=(
 | 
			
		||||
    stable
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
readonly AGENTS=(
 | 
			
		||||
    orion
 | 
			
		||||
    taurus
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
readonly ARTIX_TEAMS=(
 | 
			
		||||
    "${ARTIX_DB[2]}"
 | 
			
		||||
    "${ARTIX_DB[5]}"
 | 
			
		||||
@@ -30,27 +35,30 @@ readonly ARTIX_TEAMS=(
 | 
			
		||||
    "${ARTIX_DB[11]}"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
declare -A AGENT_MAP=(
 | 
			
		||||
    ["${ARTIX_TEAMS[0]}"]=${AGENTS[0]}
 | 
			
		||||
    ["${ARTIX_TEAMS[1]}"]=${AGENTS[0]}
 | 
			
		||||
    ["${ARTIX_TEAMS[2]}"]=${AGENTS[1]}
 | 
			
		||||
    ["${ARTIX_TEAMS[3]}"]=${AGENTS[1]}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
readonly REPO_DB='.artixlinux/pkgbase.yaml'
 | 
			
		||||
 | 
			
		||||
readonly REPO_CI='.artixlinux/Jenkinsfile'
 | 
			
		||||
 | 
			
		||||
yaml_array() {
 | 
			
		||||
    local array
 | 
			
		||||
readonly SRCINFO='.artixlinux/srcinfo.yaml'
 | 
			
		||||
 | 
			
		||||
    for entry in "$@"; do
 | 
			
		||||
        array="${array:-}${array:+,} ${entry}"
 | 
			
		||||
    done
 | 
			
		||||
    printf "%s\n" "[${array}]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print_package_names() {
 | 
			
		||||
    local version
 | 
			
		||||
    local array
 | 
			
		||||
    local architecture pkg
 | 
			
		||||
    version=$(get_full_version)
 | 
			
		||||
    for pkg in "${pkgname[@]}"; do
 | 
			
		||||
        architecture=$(get_pkg_arch "${pkg}")
 | 
			
		||||
        printf "%s-%s-%s%s\n" "$pkg" "$version" "$architecture" "$PKGEXT"
 | 
			
		||||
        array="${array:-}${array:+,} $pkg-$version-$architecture$PKGEXT"
 | 
			
		||||
    done
 | 
			
		||||
    printf "%s\n" "[${array}]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print_debug_package_names() {
 | 
			
		||||
@@ -59,7 +67,9 @@ print_debug_package_names() {
 | 
			
		||||
    version=$(get_full_version)
 | 
			
		||||
    if check_option "debug" "y" && check_option "strip" "y"; then
 | 
			
		||||
        architecture=$(get_pkg_arch)
 | 
			
		||||
        printf "%s-%s-%s-%s%s\n" "$pkgbase" "debug" "$version" "$architecture" "$PKGEXT"
 | 
			
		||||
        printf "[%s-%s-%s-%s%s]\n" "$pkgbase" "debug" "$version" "$architecture" "$PKGEXT"
 | 
			
		||||
    else
 | 
			
		||||
        printf "%s\n" "[]"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -71,17 +81,6 @@ version_from_yaml() {
 | 
			
		||||
    printf "%s\n" "${version}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
packages_from_yaml() {
 | 
			
		||||
    local dest="$1"
 | 
			
		||||
    local repo pkgs packages
 | 
			
		||||
    repo=".repos.${dest}"
 | 
			
		||||
    mapfile -t packages < <(repo="${repo}" yq -r 'eval(strenv(repo)).packages[]' "${REPO_DB}")
 | 
			
		||||
    for p in "${packages[@]}"; do
 | 
			
		||||
        pkgs="${pkgs:-}${pkgs:+,} ${p}"
 | 
			
		||||
    done
 | 
			
		||||
    printf "%s\n" "[${pkgs}]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
to_bool() {
 | 
			
		||||
    local int="$1"
 | 
			
		||||
    case "${int}" in
 | 
			
		||||
@@ -113,17 +112,9 @@ create_repo_db() {
 | 
			
		||||
 | 
			
		||||
    yq -n '"---"' > "${REPO_DB}"
 | 
			
		||||
 | 
			
		||||
    yq -P '.team = null' -i "${REPO_DB}"
 | 
			
		||||
 | 
			
		||||
    yq -P 'with(
 | 
			
		||||
        .pkgbase;
 | 
			
		||||
            .name = null |
 | 
			
		||||
            .version = null |
 | 
			
		||||
            .arch = [] |
 | 
			
		||||
            .pkgname = [] )' \
 | 
			
		||||
        -i "${REPO_DB}"
 | 
			
		||||
 | 
			
		||||
    yq -P 'with(
 | 
			
		||||
    yq -P '
 | 
			
		||||
        .team = null |
 | 
			
		||||
        with(
 | 
			
		||||
        .actions;
 | 
			
		||||
            .addRepo = null |
 | 
			
		||||
            .removeRepo = null |
 | 
			
		||||
@@ -131,39 +122,20 @@ create_repo_db() {
 | 
			
		||||
            .triggersRebuild = false |
 | 
			
		||||
            .triggersRepoAdd = false |
 | 
			
		||||
            .triggersRepoRemove = false |
 | 
			
		||||
            .triggersNoCheck = false )' \
 | 
			
		||||
        -i "${REPO_DB}"
 | 
			
		||||
 | 
			
		||||
    yq -P '.repos = {}' -i "${REPO_DB}"
 | 
			
		||||
            .triggersNoCheck = false ) |
 | 
			
		||||
            .repos = {}
 | 
			
		||||
        ' -i "${REPO_DB}"
 | 
			
		||||
 | 
			
		||||
    for r in "${ARTIX_DB[@]}"; do
 | 
			
		||||
        local repo
 | 
			
		||||
        repo=".repos.${r}" \
 | 
			
		||||
            yq -P 'with(
 | 
			
		||||
                    eval(strenv(repo));
 | 
			
		||||
                        .version = null |
 | 
			
		||||
                        .packages = [] )' \
 | 
			
		||||
                -i "${REPO_DB}"
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
has_repos_map_key() {
 | 
			
		||||
    local _r="$1"
 | 
			
		||||
    local r
 | 
			
		||||
    if ! $(r="$_r" yq -r '.repos | has(strenv(r))' "${REPO_DB}"); then
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
    return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
delete_obsolete_map_keys() {
 | 
			
		||||
    local _r
 | 
			
		||||
    for r in asteroids{-goblins,-gremlins,}; do
 | 
			
		||||
        if $(_r="$r" yq -r '.repos | has(strenv(_r))' "${REPO_DB}"); then
 | 
			
		||||
            local repo
 | 
			
		||||
            repo=".repos.${r}" \
 | 
			
		||||
                yq 'del(eval(strenv(repo)))' -i "${REPO_DB}"
 | 
			
		||||
        fi
 | 
			
		||||
        yq -P '
 | 
			
		||||
            with(
 | 
			
		||||
            eval(strenv(repo));
 | 
			
		||||
                .version = null |
 | 
			
		||||
                .packages = [] |
 | 
			
		||||
                .debug = [] )
 | 
			
		||||
            ' -i "${REPO_DB}"
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -172,27 +144,6 @@ update_yaml_team() {
 | 
			
		||||
    team="$team" yq -P '.team = env(team)' -i "${REPO_DB}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_yaml_base() {
 | 
			
		||||
    local version
 | 
			
		||||
    local name
 | 
			
		||||
    local pkgnames
 | 
			
		||||
    local arches
 | 
			
		||||
 | 
			
		||||
    pkgbase="${pkgbase:-${pkgname}}"
 | 
			
		||||
    version="$(get_full_version)"
 | 
			
		||||
    pkgnames=$(yaml_array "${pkgname[@]}")
 | 
			
		||||
    arches=$(yaml_array "${arch[@]}")
 | 
			
		||||
 | 
			
		||||
    name="${pkgbase}" version="${version}" pkgnames="${pkgnames}" arches="${arches}" \
 | 
			
		||||
        yq -P 'with(
 | 
			
		||||
            .pkgbase;
 | 
			
		||||
                .name = env(name) |
 | 
			
		||||
                .version = env(version) |
 | 
			
		||||
                .arch = env(arches) |
 | 
			
		||||
                .pkgname = env(pkgnames) )' \
 | 
			
		||||
            -i "${REPO_DB}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_yaml_add() {
 | 
			
		||||
    local rebuild="$1"
 | 
			
		||||
    local add="$2"
 | 
			
		||||
@@ -213,36 +164,41 @@ update_yaml_add() {
 | 
			
		||||
        local pkgs
 | 
			
		||||
        local version
 | 
			
		||||
        local pkgfiles
 | 
			
		||||
        local debug_pkgfiles
 | 
			
		||||
 | 
			
		||||
        mapfile -t pkgfiles < <(print_package_names)
 | 
			
		||||
        pkgs=$(print_package_names)
 | 
			
		||||
 | 
			
		||||
        pkgs=$(yaml_array "${pkgfiles[@]}")
 | 
			
		||||
        debug_pkgs=$(print_debug_package_names)
 | 
			
		||||
 | 
			
		||||
        version=$(get_full_version)
 | 
			
		||||
        repo=".repos.${dest}"
 | 
			
		||||
 | 
			
		||||
        version="${version}" pkgs="${pkgs}" repo="${repo}" \
 | 
			
		||||
            yq -P 'with(
 | 
			
		||||
                    eval(strenv(repo));
 | 
			
		||||
                        .version = env(version) |
 | 
			
		||||
                        .packages = env(pkgs) )' \
 | 
			
		||||
                -i "${REPO_DB}"
 | 
			
		||||
        version="${version}" repo="${repo}" \
 | 
			
		||||
        pkgs="${pkgs}" debug_pkgs="${debug_pkgs}" \
 | 
			
		||||
        yq -P '
 | 
			
		||||
            with(
 | 
			
		||||
            eval(strenv(repo));
 | 
			
		||||
                .version = env(version) |
 | 
			
		||||
                .packages = env(pkgs) |
 | 
			
		||||
                .debug = env(debug_pkgs) )
 | 
			
		||||
            ' -i "${REPO_DB}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    nocheck=$(to_bool "${nocheck}")
 | 
			
		||||
 | 
			
		||||
    nocheck="${nocheck}" add="${add}" \
 | 
			
		||||
    rebuild="${rebuild}" build="${build}" dest="${dest}" \
 | 
			
		||||
        yq -P 'with(
 | 
			
		||||
            .actions;
 | 
			
		||||
                .addRepo = env(dest) |
 | 
			
		||||
                .removeRepo = null |
 | 
			
		||||
                .triggersBuild = env(build) |
 | 
			
		||||
                .triggersRebuild = env(rebuild) |
 | 
			
		||||
                .triggersRepoAdd = env(add) |
 | 
			
		||||
                .triggersRepoRemove = false |
 | 
			
		||||
                .triggersNoCheck = env(nocheck) )' \
 | 
			
		||||
            -i "${REPO_DB}"
 | 
			
		||||
    yq -P '
 | 
			
		||||
        with(
 | 
			
		||||
        .actions;
 | 
			
		||||
            .addRepo = env(dest) |
 | 
			
		||||
            .removeRepo = null |
 | 
			
		||||
            .triggersBuild = env(build) |
 | 
			
		||||
            .triggersRebuild = env(rebuild) |
 | 
			
		||||
            .triggersRepoAdd = env(add) |
 | 
			
		||||
            .triggersRepoRemove = false |
 | 
			
		||||
            .triggersNoCheck = env(nocheck) )
 | 
			
		||||
        ' -i "${REPO_DB}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_yaml_remove() {
 | 
			
		||||
@@ -251,30 +207,30 @@ update_yaml_remove() {
 | 
			
		||||
    local repo
 | 
			
		||||
    repo=".repos.${dest}"
 | 
			
		||||
 | 
			
		||||
    repo="${repo}" \
 | 
			
		||||
        yq -P 'with(
 | 
			
		||||
                eval(strenv(repo));
 | 
			
		||||
                    .version = null |
 | 
			
		||||
                    .packages = [] )' \
 | 
			
		||||
            -i "${REPO_DB}"
 | 
			
		||||
 | 
			
		||||
    dest="${dest}" \
 | 
			
		||||
        yq -P 'with(
 | 
			
		||||
            .actions;
 | 
			
		||||
                .addRepo = null |
 | 
			
		||||
                .removeRepo = env(dest) |
 | 
			
		||||
                .triggersBuild = false |
 | 
			
		||||
                .triggersRebuild = false |
 | 
			
		||||
                .triggersRepoAdd = false |
 | 
			
		||||
                .triggersRepoRemove = true |
 | 
			
		||||
                .triggersNoCheck = false )' \
 | 
			
		||||
            -i "${REPO_DB}"
 | 
			
		||||
    repo="${repo}" dest="${dest}" \
 | 
			
		||||
    yq -P '
 | 
			
		||||
        with(
 | 
			
		||||
        eval(strenv(repo));
 | 
			
		||||
            .version = null |
 | 
			
		||||
            .packages = [] |
 | 
			
		||||
            .debug = [] ) |
 | 
			
		||||
        with(
 | 
			
		||||
        .actions;
 | 
			
		||||
            .addRepo = null |
 | 
			
		||||
            .removeRepo = env(dest) |
 | 
			
		||||
            .triggersBuild = false |
 | 
			
		||||
            .triggersRebuild = false |
 | 
			
		||||
            .triggersRepoAdd = false |
 | 
			
		||||
            .triggersRepoRemove = true |
 | 
			
		||||
            .triggersNoCheck = false )
 | 
			
		||||
        ' -i "${REPO_DB}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_yaml_move() {
 | 
			
		||||
    local src="$1"
 | 
			
		||||
    local dest="$2"
 | 
			
		||||
    local pkgs
 | 
			
		||||
    local debug_pkgs
 | 
			
		||||
    local version
 | 
			
		||||
    local src_repo
 | 
			
		||||
    local dest_repo
 | 
			
		||||
@@ -283,41 +239,34 @@ update_yaml_move() {
 | 
			
		||||
    dest_repo=".repos.${dest}"
 | 
			
		||||
 | 
			
		||||
    version=$(version_from_yaml "${src}")
 | 
			
		||||
    pkgs=$(packages_from_yaml "${src}")
 | 
			
		||||
 | 
			
		||||
    src_repo="${src_repo}" \
 | 
			
		||||
        yq -P 'with(
 | 
			
		||||
                eval(strenv(src_repo));
 | 
			
		||||
                    .version = null |
 | 
			
		||||
                    .packages = [] )' \
 | 
			
		||||
            -i "${REPO_DB}"
 | 
			
		||||
    pkgs=$(src_repo="${src_repo}" yq -Pr -o json 'eval(strenv(src_repo)).packages' "${REPO_DB}")
 | 
			
		||||
    debug_pkgs=$(src_repo="${src_repo}" yq -Pr -o json 'eval(strenv(src_repo)).debug' "${REPO_DB}")
 | 
			
		||||
 | 
			
		||||
    version="${version}" pkgs="${pkgs}" dest_repo="${dest_repo}" \
 | 
			
		||||
        yq -P 'with(
 | 
			
		||||
                eval(strenv(dest_repo));
 | 
			
		||||
                    .version = env(version) |
 | 
			
		||||
                    .packages = env(pkgs) )' \
 | 
			
		||||
            -i "${REPO_DB}"
 | 
			
		||||
 | 
			
		||||
    src=${src} dest="${dest}" \
 | 
			
		||||
        yq -P 'with(
 | 
			
		||||
            .actions;
 | 
			
		||||
                .addRepo = env(dest) |
 | 
			
		||||
                .removeRepo = env(src) |
 | 
			
		||||
                .triggersBuild = false |
 | 
			
		||||
                .triggersRebuild = false |
 | 
			
		||||
                .triggersRepoAdd = true |
 | 
			
		||||
                .triggersRepoRemove = true |
 | 
			
		||||
                .triggersNoCheck = false )' \
 | 
			
		||||
            -i "${REPO_DB}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_agent() {
 | 
			
		||||
    local agent="${AGENTS[0]}"
 | 
			
		||||
    if grep @${AGENTS[1]} "${REPO_CI}" &>/dev/null; then
 | 
			
		||||
        agent="${AGENTS[1]}"
 | 
			
		||||
    fi
 | 
			
		||||
    msg2 "agent: %s" "$agent"
 | 
			
		||||
    src_repo="${src_repo}" dest_repo="${dest_repo}" \
 | 
			
		||||
    version="${version}" src=${src} dest="${dest}" \
 | 
			
		||||
    pkgs="${pkgs}" debug_pkgs="${debug_pkgs}" \
 | 
			
		||||
    yq -P '
 | 
			
		||||
        with(
 | 
			
		||||
        eval(strenv(src_repo));
 | 
			
		||||
            .version = null |
 | 
			
		||||
            .packages = [] |
 | 
			
		||||
            .debug = [] ) |
 | 
			
		||||
        with(
 | 
			
		||||
        eval(strenv(dest_repo));
 | 
			
		||||
            .version = env(version) |
 | 
			
		||||
            .packages = env(pkgs) |
 | 
			
		||||
            .debug = env(debug_pkgs) ) |
 | 
			
		||||
        with(
 | 
			
		||||
        .actions;
 | 
			
		||||
            .addRepo = env(dest) |
 | 
			
		||||
            .removeRepo = env(src) |
 | 
			
		||||
            .triggersBuild = false |
 | 
			
		||||
            .triggersRebuild = false |
 | 
			
		||||
            .triggersRepoAdd = true |
 | 
			
		||||
            .triggersRepoRemove = true |
 | 
			
		||||
            .triggersNoCheck = false )
 | 
			
		||||
        ' -i "${REPO_DB}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
team_from_yaml() {
 | 
			
		||||
@@ -326,11 +275,12 @@ team_from_yaml() {
 | 
			
		||||
    printf "$team"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto_detect() {
 | 
			
		||||
detect_team() {
 | 
			
		||||
    local team
 | 
			
		||||
 | 
			
		||||
    for repo in "${ARTIX_TEAMS[@]}"; do
 | 
			
		||||
        local _r res
 | 
			
		||||
        res=$(_r=".$repo" yq -rP '.repos | eval(strenv(_r)) | .version' "${REPO_DB}")
 | 
			
		||||
        local key res
 | 
			
		||||
        res=$(key=".repos.$repo" yq -rP 'eval(strenv(key)) | .version' "${REPO_DB}")
 | 
			
		||||
        if [[ "${res}" != "null" ]]; then
 | 
			
		||||
            team=${repo}
 | 
			
		||||
        fi
 | 
			
		||||
@@ -338,41 +288,34 @@ auto_detect() {
 | 
			
		||||
    printf "%s\n" "$team"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_agent() {
 | 
			
		||||
    local agent
 | 
			
		||||
    local ci
 | 
			
		||||
    local branch
 | 
			
		||||
    agent="${AGENTS[0]}"
 | 
			
		||||
    ci=$(head -n 1 "${REPO_CI}" | cut -d "'" -f2)
 | 
			
		||||
    branch=${ci#*@}
 | 
			
		||||
    if [[ -n "$branch" ]]; then
 | 
			
		||||
        agent="$branch"
 | 
			
		||||
    fi
 | 
			
		||||
    msg2 "agent: %s" "$agent"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_db() {
 | 
			
		||||
    show_agent
 | 
			
		||||
    if ! yq -r "${REPO_DB}" 1>/dev/null 2>/dev/null; then
 | 
			
		||||
        die "${REPO_DB} invalid!"
 | 
			
		||||
    fi
 | 
			
		||||
    yq -rP 'with_entries(select(.key == "team" or .key == "pkgbase"))' "${REPO_DB}"
 | 
			
		||||
    yq -rP '. | .repos | with_entries(select(.value.version))' "${REPO_DB}"
 | 
			
		||||
    yq -rP 'with_entries(select(.key == "team"))' "${REPO_DB}"
 | 
			
		||||
    yq -rP '.repos | with_entries(select(.value.version))' "${REPO_DB}"
 | 
			
		||||
    return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_srcinfo_base() {
 | 
			
		||||
    pkg2yaml . | yq '.pkgbase'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_srcinfo_pkgs() {
 | 
			
		||||
    pkg2yaml . | yq '.pkgnames'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_jenkinsfile() {
 | 
			
		||||
    printf "@Library('artix-ci@%s') import org.artixlinux.RepoPackage\n" "${1}" > "${REPO_CI}"
 | 
			
		||||
    local branch="$1"
 | 
			
		||||
    {
 | 
			
		||||
        printf "@Library('artix-ci@%s') import org.artixlinux.RepoPackage\n" "${branch}"
 | 
			
		||||
        printf '\n'
 | 
			
		||||
        printf 'PackagePipeline(new RepoPackage(this))\n'
 | 
			
		||||
    } >> "${REPO_CI}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
migrate_agent_branch() {
 | 
			
		||||
    local branch=${AGENTS[0]}
 | 
			
		||||
    for a in "${AGENTS[@]}"; do
 | 
			
		||||
        if grep @"$a" "${REPO_CI}" &>/dev/null; then
 | 
			
		||||
            branch="$a"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    if grep @galaxy "${REPO_CI}" &>/dev/null; then
 | 
			
		||||
        branch=${AGENTS[1]}
 | 
			
		||||
    fi
 | 
			
		||||
    write_jenkinsfile "${branch}"
 | 
			
		||||
    } > "${REPO_CI}"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								src/lib/pkg/db/upgrade.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/lib/pkg/db/upgrade.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
#!/hint/bash
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
upgrade_db() {
 | 
			
		||||
    local d
 | 
			
		||||
    for db in "${ARTIX_DB[@]}"; do
 | 
			
		||||
        local res
 | 
			
		||||
        res=$(d=".repos.$db" yq 'eval(strenv(d)) | has("debug")' "${REPO_DB}")
 | 
			
		||||
        if ! "${res}"; then
 | 
			
		||||
            d=".repos.$db" \
 | 
			
		||||
            yq 'eval(strenv(d)).debug = []' -i "${REPO_DB}"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    if $(yq '. | has("pkgbase") ' "${REPO_DB}"); then
 | 
			
		||||
        yq 'del(.pkgbase)' -i "${REPO_DB}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
@@ -18,7 +18,6 @@ artixpkg_git_usage() {
 | 
			
		||||
        create         Create a new Gitea package repository
 | 
			
		||||
        pull           Pull a package repository
 | 
			
		||||
        push           Push a package repository
 | 
			
		||||
        ci             Configure CI agent
 | 
			
		||||
 | 
			
		||||
    OPTIONS
 | 
			
		||||
        -h, --help     Show this help text
 | 
			
		||||
@@ -26,10 +25,9 @@ artixpkg_git_usage() {
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
        $ ${COMMAND} clone libfoo linux libbar
 | 
			
		||||
        $ ${COMMAND} clone --maintainer tux
 | 
			
		||||
        $ ${COMMAND} config --topic mytopic
 | 
			
		||||
        $ ${COMMAND} config --maintainer tux
 | 
			
		||||
        $ ${COMMAND} clone --search mytopic
 | 
			
		||||
        $ ${COMMAND} config libfoo
 | 
			
		||||
        $ ${COMMAND} create -c libfoo
 | 
			
		||||
        $ ${COMMAND} ci -a taurus
 | 
			
		||||
_EOF_
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -62,14 +60,6 @@ artixpkg_git() {
 | 
			
		||||
            artixpkg_git_config "$@"
 | 
			
		||||
            exit 0
 | 
			
		||||
        ;;
 | 
			
		||||
        ci)
 | 
			
		||||
            _ARTOOLS_COMMAND+=" $1"
 | 
			
		||||
            shift
 | 
			
		||||
            # shellcheck source=src/lib/pkg/git/ci.sh
 | 
			
		||||
            source "${LIBDIR}"/pkg/git/ci.sh
 | 
			
		||||
            artixpkg_git_ci "$@"
 | 
			
		||||
            exit 0
 | 
			
		||||
        ;;
 | 
			
		||||
        create)
 | 
			
		||||
            _ARTOOLS_COMMAND+=" $1"
 | 
			
		||||
            shift
 | 
			
		||||
 
 | 
			
		||||
@@ -1,126 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
[[ -z ${ARTOOLS_INCLUDE_GIT_CI_SH:-} ]] || return 0
 | 
			
		||||
ARTOOLS_INCLUDE_GIT_CI_SH=1
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/pkg/db/db.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/db/db.sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
artixpkg_git_ci_usage() {
 | 
			
		||||
    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
			
		||||
    cat <<- _EOF_
 | 
			
		||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
			
		||||
 | 
			
		||||
    OPTIONS
 | 
			
		||||
        -a, --agent NAME       Set the CI agent (default: ${AGENTS[0]})
 | 
			
		||||
                               Possible values: $(yaml_array ${AGENTS[@]})
 | 
			
		||||
        -h, --help             Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
        $ ${COMMAND} --agent ${AGENTS[1]} libfoo
 | 
			
		||||
_EOF_
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
artixpkg_git_ci() {
 | 
			
		||||
    # options
 | 
			
		||||
    local paths=()
 | 
			
		||||
 | 
			
		||||
    local AGENT=${AGENTS[0]}
 | 
			
		||||
    local SWITCH=0
 | 
			
		||||
 | 
			
		||||
    # variables
 | 
			
		||||
    local path realpath pkgbase
 | 
			
		||||
 | 
			
		||||
    while (( $# )); do
 | 
			
		||||
        case $1 in
 | 
			
		||||
        -h|--help)
 | 
			
		||||
            artixpkg_git_ci_usage
 | 
			
		||||
            exit 0
 | 
			
		||||
        ;;
 | 
			
		||||
        -a|--agent)
 | 
			
		||||
            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
			
		||||
            AGENT="$2"
 | 
			
		||||
            SWITCH=1
 | 
			
		||||
            shift 2
 | 
			
		||||
        ;;
 | 
			
		||||
        --)
 | 
			
		||||
            shift
 | 
			
		||||
            break
 | 
			
		||||
        ;;
 | 
			
		||||
        -*)
 | 
			
		||||
            die "invalid argument: %s" "$1"
 | 
			
		||||
        ;;
 | 
			
		||||
        *)
 | 
			
		||||
            paths=("$@")
 | 
			
		||||
            break
 | 
			
		||||
        ;;
 | 
			
		||||
        esac
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    # check if invoked without any path from within a packaging repo
 | 
			
		||||
    if (( ${#paths[@]} == 0 )); then
 | 
			
		||||
        if [[ -f PKGBUILD ]]; then
 | 
			
		||||
            paths=(".")
 | 
			
		||||
        else
 | 
			
		||||
            artixpkg_git_ci_usage
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    for path in "${paths[@]}"; do
 | 
			
		||||
        if ! realpath=$(realpath -e "${path}"); then
 | 
			
		||||
            error "No such directory: ${path}"
 | 
			
		||||
            continue
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        pkgbase=$(basename "${realpath}")
 | 
			
		||||
        pkgbase=${pkgbase%.git}
 | 
			
		||||
 | 
			
		||||
        if [[ ! -d "${path}/.git" ]]; then
 | 
			
		||||
            error "Not a Git repository: ${path}"
 | 
			
		||||
            continue
 | 
			
		||||
        fi
 | 
			
		||||
        ( cd "${path}" || return
 | 
			
		||||
 | 
			
		||||
            if [[ ! -f ${REPO_CI} ]]; then
 | 
			
		||||
 | 
			
		||||
                [[ -d .artixlinux ]] || mkdir .artixlinux
 | 
			
		||||
 | 
			
		||||
                msg "Adding ci support ..."
 | 
			
		||||
                write_jenkinsfile "${AGENT}"
 | 
			
		||||
 | 
			
		||||
                git add "${REPO_CI}"
 | 
			
		||||
                git commit -m "add ci support"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            if [[ ! -f ${REPO_DB} ]]; then
 | 
			
		||||
 | 
			
		||||
                msg "Creating repo db ..."
 | 
			
		||||
                create_repo_db
 | 
			
		||||
 | 
			
		||||
                if [[ -f PKGBUILD ]]; then
 | 
			
		||||
                    # shellcheck source=contrib/makepkg/PKGBUILD.proto
 | 
			
		||||
                    source PKGBUILD
 | 
			
		||||
                    update_yaml_base
 | 
			
		||||
                fi
 | 
			
		||||
                git add "${REPO_DB}"
 | 
			
		||||
                git commit -m "create repo db"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            if (( SWITCH )); then
 | 
			
		||||
                msg "Switching to agent (${AGENT}) ..."
 | 
			
		||||
                write_jenkinsfile "${AGENT}"
 | 
			
		||||
 | 
			
		||||
                git add "${REPO_CI}"
 | 
			
		||||
                git commit -m "switch agent"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
        )
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
@@ -7,8 +7,6 @@ ARTOOLS_INCLUDE_GIT_CLONE_SH=1
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/pkg/git/config.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/git/config.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/git/ci.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/git/ci.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/admin/team.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/admin/team.sh
 | 
			
		||||
 | 
			
		||||
@@ -23,10 +21,8 @@ artixpkg_git_clone_usage() {
 | 
			
		||||
    OPTIONS
 | 
			
		||||
        -m, --maintainer NAME      Clone all packages of the named maintainer
 | 
			
		||||
        -s, --search TOPIC         Clone all packages of the named topic
 | 
			
		||||
        -a, --agent NAME           Set the CI agent (default: ${AGENTS[0]})
 | 
			
		||||
                                   Possible values: $(yaml_array ${AGENTS[@]})
 | 
			
		||||
        -t, --team NAME            Assign team name (default: ${ARTIX_TEAMS[1]})
 | 
			
		||||
                                   Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
 | 
			
		||||
                                   Possible values: (${ARTIX_TEAMS[@]})
 | 
			
		||||
        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
			
		||||
        --protocol https           Clone the repository over https
 | 
			
		||||
        --all                      Clone all existing packages, useful for cache warming
 | 
			
		||||
@@ -37,7 +33,6 @@ artixpkg_git_clone_usage() {
 | 
			
		||||
        $ ${COMMAND} --maintainer tux
 | 
			
		||||
        $ ${COMMAND} --search mytopic
 | 
			
		||||
        $ ${COMMAND} -j 8 --search mytopic
 | 
			
		||||
        $ ${COMMAND} --agent ${AGENTS[1]} libfoo
 | 
			
		||||
_EOF_
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -55,7 +50,6 @@ artixpkg_git_clone() {
 | 
			
		||||
    local MAINTAINER=
 | 
			
		||||
    local TOPIC=
 | 
			
		||||
    local CONFIG_OPTS=()
 | 
			
		||||
    local AGENT_OPTS=()
 | 
			
		||||
    local TEAM_OPTS=()
 | 
			
		||||
    local jobs=
 | 
			
		||||
    jobs=$(nproc)
 | 
			
		||||
@@ -98,11 +92,6 @@ artixpkg_git_clone() {
 | 
			
		||||
                TEAM_OPTS=("--add" "$2")
 | 
			
		||||
                shift 2
 | 
			
		||||
            ;;
 | 
			
		||||
            -a|--agent)
 | 
			
		||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
			
		||||
                AGENT_OPTS=("$1" "$2")
 | 
			
		||||
                shift 2
 | 
			
		||||
            ;;
 | 
			
		||||
            --all)
 | 
			
		||||
                CLONE_ALL=1
 | 
			
		||||
                shift
 | 
			
		||||
@@ -169,7 +158,7 @@ artixpkg_git_clone() {
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        artixpkg_git_config "${CONFIG_OPTS[@]}" "${pkgbase}"
 | 
			
		||||
        artixpkg_git_ci "${AGENT_OPTS[@]}" "${pkgbase}"
 | 
			
		||||
        artixpkg_admin_team "${TEAM_OPTS[@]}" "${pkgbase}"
 | 
			
		||||
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,8 @@
 | 
			
		||||
[[ -z ${ARTOOLS_INCLUDE_GIT_CONFIG_SH:-} ]] || return 0
 | 
			
		||||
ARTOOLS_INCLUDE_GIT_CONFIG_SH=1
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/pkg/packager.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/packager.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/db/db.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/db/db.sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
@@ -91,8 +91,10 @@ artixpkg_git_config() {
 | 
			
		||||
 | 
			
		||||
    # Load makepkg.conf variables to be available for packager identity
 | 
			
		||||
    msg "Collecting packager identity from makepkg.conf"
 | 
			
		||||
    # shellcheck source=config/makepkg/x86_64.conf
 | 
			
		||||
    load_makepkg_config
 | 
			
		||||
 | 
			
		||||
    # shellcheck source=src/lib/pkg/util/packager.sh
 | 
			
		||||
    source "${LIBDIR}"/pkg/util/packager.sh
 | 
			
		||||
 | 
			
		||||
    if [[ -n ${PACKAGER} ]]; then
 | 
			
		||||
        if ! packager_name=$(get_packager_name "${PACKAGER}") || \
 | 
			
		||||
            ! packager_email=$(get_packager_email "${PACKAGER}"); then
 | 
			
		||||
@@ -167,6 +169,33 @@ artixpkg_git_config() {
 | 
			
		||||
                git config user.signingKey "${GPGKEY}"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            if [[ ! -f ${REPO_CI} ]]; then
 | 
			
		||||
 | 
			
		||||
                [[ -d .artixlinux ]] || mkdir .artixlinux
 | 
			
		||||
 | 
			
		||||
                msg "Adding ci support ..."
 | 
			
		||||
                local agent
 | 
			
		||||
                agent="${AGENT_MAP["${TEAM_OPTS[1]}"]}"
 | 
			
		||||
                write_jenkinsfile "$agent"
 | 
			
		||||
 | 
			
		||||
                git add "${REPO_CI}"
 | 
			
		||||
                git commit -m "add ci support"
 | 
			
		||||
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            if [[ ! -f ${REPO_DB} ]]; then
 | 
			
		||||
 | 
			
		||||
                msg "Creating repo db ..."
 | 
			
		||||
                create_repo_db
 | 
			
		||||
 | 
			
		||||
                if [[ -f PKGBUILD ]]; then
 | 
			
		||||
                    pkg2yaml -o "${SRCINFO}"
 | 
			
		||||
                fi
 | 
			
		||||
                git add "${REPO_DB}"
 | 
			
		||||
                git commit -m "create repo db"
 | 
			
		||||
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
        )
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,8 +9,6 @@ ARTOOLS_INCLUDE_GIT_CREATE_SH=1
 | 
			
		||||
source "${LIBDIR}"/pkg/git/clone.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/git/config.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/git/config.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/git/ci.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/git/ci.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/admin/team.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/admin/team.sh
 | 
			
		||||
 | 
			
		||||
@@ -24,10 +22,8 @@ artixpkg_git_create_usage() {
 | 
			
		||||
 | 
			
		||||
    OPTIONS
 | 
			
		||||
        -c, --clone           Clone the Git repository after creation
 | 
			
		||||
        -a, --agent NAME      Set the CI agent (default: ${AGENTS[0]})
 | 
			
		||||
                              Possible values: $(yaml_array ${AGENTS[@]})
 | 
			
		||||
        -t, --team NAME       Assign team name (default: ${ARTIX_TEAMS[1]})
 | 
			
		||||
                              Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
 | 
			
		||||
                              Possible values: (${ARTIX_TEAMS[@]})
 | 
			
		||||
        -h, --help            Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
@@ -42,7 +38,6 @@ artixpkg_git_create() {
 | 
			
		||||
    local CLONE=0
 | 
			
		||||
    local CONFIG=0
 | 
			
		||||
 | 
			
		||||
    local AGENT_OPTS=("--agent" "${AGENTS[0]}")
 | 
			
		||||
    local TEAM_OPTS=("--team" "${ARTIX_TEAMS[1]}")
 | 
			
		||||
 | 
			
		||||
    # variables
 | 
			
		||||
@@ -54,11 +49,6 @@ artixpkg_git_create() {
 | 
			
		||||
            artixpkg_git_create_usage
 | 
			
		||||
            exit 0
 | 
			
		||||
        ;;
 | 
			
		||||
        -a|--agent)
 | 
			
		||||
            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
			
		||||
            AGENT_OPTS=("$1" "$2")
 | 
			
		||||
            shift 2
 | 
			
		||||
        ;;
 | 
			
		||||
        -c|--clone)
 | 
			
		||||
            CLONE=1
 | 
			
		||||
            shift
 | 
			
		||||
@@ -113,10 +103,9 @@ artixpkg_git_create() {
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        if (( CLONE )); then
 | 
			
		||||
            artixpkg_git_clone "${AGENT_OPTS[@]}" "${TEAM_OPTS[@]}" "${pkgbase}"
 | 
			
		||||
            artixpkg_git_clone "${TEAM_OPTS[@]}" "${pkgbase}"
 | 
			
		||||
        elif (( CONFIG )); then
 | 
			
		||||
            artixpkg_git_config "${pkgbase}"
 | 
			
		||||
            artixpkg_git_ci "${AGENT_OPTS[@]}" "${pkgbase}"
 | 
			
		||||
            artixpkg_admin_team "${TEAM_OPTS[@]}" "${pkgbase}"
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,9 @@ ARTOOLS_INCLUDE_GIT_PULL_SH=1
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/pkg/db/db.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/db/db.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
artixpkg_git_pull_usage() {
 | 
			
		||||
    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
			
		||||
@@ -123,6 +126,11 @@ artixpkg_git_pull() {
 | 
			
		||||
                    die 'failed to pull %s' "${pkgbase}"
 | 
			
		||||
                fi
 | 
			
		||||
 | 
			
		||||
                msg "Querying ${pkgbase} ..."
 | 
			
		||||
                if ! show_db; then
 | 
			
		||||
                    warning "Could not query ${REPO_DB}"
 | 
			
		||||
                fi
 | 
			
		||||
 | 
			
		||||
            )
 | 
			
		||||
        else
 | 
			
		||||
            warning "Skip pulling ${pkgbase}: Directory does not exist"
 | 
			
		||||
 
 | 
			
		||||
@@ -16,14 +16,12 @@ artixpkg_git_push_usage() {
 | 
			
		||||
    OPTIONS
 | 
			
		||||
        -m, --maintainer NAME      Push all packages of the named maintainer
 | 
			
		||||
        -t, --topic NAME           Push all packages of the named topic
 | 
			
		||||
        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
			
		||||
        -h, --help                 Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
        $ ${COMMAND} libfoo linux libbar
 | 
			
		||||
        $ ${COMMAND} --maintainer tux
 | 
			
		||||
        $ ${COMMAND} --topic mytopic
 | 
			
		||||
        $ ${COMMAND} -j 8 --topic mytopic
 | 
			
		||||
_EOF_
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -38,11 +36,6 @@ artixpkg_git_push() {
 | 
			
		||||
    # options
 | 
			
		||||
    local MAINTAINER=
 | 
			
		||||
    local TOPIC=
 | 
			
		||||
    local CONFIGURE_OPTIONS=()
 | 
			
		||||
    local jobs=
 | 
			
		||||
    jobs=$(nproc)
 | 
			
		||||
 | 
			
		||||
    local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
			
		||||
 | 
			
		||||
    while (( $# )); do
 | 
			
		||||
        case $1 in
 | 
			
		||||
@@ -60,11 +53,6 @@ artixpkg_git_push() {
 | 
			
		||||
                TOPIC="$2"
 | 
			
		||||
                shift 2
 | 
			
		||||
            ;;
 | 
			
		||||
            -j|--jobs)
 | 
			
		||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
			
		||||
                jobs=$2
 | 
			
		||||
                shift 2
 | 
			
		||||
            ;;
 | 
			
		||||
            --)
 | 
			
		||||
                shift
 | 
			
		||||
                break
 | 
			
		||||
@@ -90,19 +78,6 @@ artixpkg_git_push() {
 | 
			
		||||
        mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # parallelization
 | 
			
		||||
    if [[ ${jobs} != 1 ]] && (( ${#pkgbases[@]} > 1 )); then
 | 
			
		||||
        # force colors in parallel if parent process is colorized
 | 
			
		||||
        if [[ -n ${BOLD} ]]; then
 | 
			
		||||
            export ARTOOLS_COLOR=always
 | 
			
		||||
        fi
 | 
			
		||||
        if ! parallel --bar --jobs "${jobs}" "${command}" ::: "${pkgbases[@]}"; then
 | 
			
		||||
            die 'Failed to push some packages, please check the output'
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
        exit 0
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    for pkgbase in "${pkgbases[@]}"; do
 | 
			
		||||
        if [[ -d ${pkgbase} ]]; then
 | 
			
		||||
            ( cd "${pkgbase}" || return
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,15 @@ ARTOOLS_INCLUDE_REPO_SH=1
 | 
			
		||||
# shellcheck source=src/lib/pkg/db/db.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/db/db.sh
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/pkg/db/upgrade.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/db/upgrade.sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
has_remote_changes() {
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
no_remote_changes() {
 | 
			
		||||
    local status
 | 
			
		||||
    msg "Checking for remote changes ..."
 | 
			
		||||
    git fetch origin &>/dev/null
 | 
			
		||||
@@ -19,10 +24,10 @@ has_remote_changes() {
 | 
			
		||||
    if [[ "$status" == *behind* ]]; then
 | 
			
		||||
        msg2 "changes: yes"
 | 
			
		||||
        error "Remote changes detected! Please pull (%s)" "${pkgbase}"
 | 
			
		||||
        return 0
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
    msg2 "changes: no"
 | 
			
		||||
    return 1
 | 
			
		||||
    return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
artixpkg_repo_usage() {
 | 
			
		||||
@@ -41,9 +46,12 @@ artixpkg_repo_usage() {
 | 
			
		||||
        -h, --help     Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
        $ ${COMMAND} add world libfoo
 | 
			
		||||
        $ ${COMMAND} remove world libfoo
 | 
			
		||||
        $ ${COMMAND} move world-gremlins world libfoo
 | 
			
		||||
        $ ${COMMAND} add ${ARTIX_DB_MAP[2]} libfoo
 | 
			
		||||
        $ ${COMMAND} remove ${ARTIX_DB_MAP[2]} libfoo
 | 
			
		||||
        $ ${COMMAND} move ${ARTIX_DB_MAP[1]} ${ARTIX_DB_MAP[2]} libfoo
 | 
			
		||||
        $ ${COMMAND} add ${ARTIX_DB[4]} libfoo
 | 
			
		||||
        $ ${COMMAND} remove ${ARTIX_DB[4]} libfoo
 | 
			
		||||
        $ ${COMMAND} move ${ARTIX_DB[3]} ${ARTIX_DB[4]} libfoo
 | 
			
		||||
        $ ${COMMAND} import libfoo
 | 
			
		||||
        $ ${COMMAND} show libfoo
 | 
			
		||||
_EOF_
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,9 @@ artixpkg_repo_add_usage() {
 | 
			
		||||
        -p, --push              Push pkgbase
 | 
			
		||||
        -r, --rebuild           Triggers a rebuild
 | 
			
		||||
        -n, --nocheck           Disable the check function
 | 
			
		||||
        -a, --agent NAME        Set the CI agent
 | 
			
		||||
                                [default: auto]
 | 
			
		||||
                                possible values: ${AGENTS[@]}
 | 
			
		||||
        -h, --help              Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
@@ -66,6 +69,7 @@ artixpkg_repo_add() {
 | 
			
		||||
    local NOCHECK=0
 | 
			
		||||
    local ADD=1
 | 
			
		||||
    local AUTO=0
 | 
			
		||||
    local AGENT
 | 
			
		||||
 | 
			
		||||
    while (( $# )); do
 | 
			
		||||
        case $1 in
 | 
			
		||||
@@ -85,6 +89,11 @@ artixpkg_repo_add() {
 | 
			
		||||
                NOCHECK=1
 | 
			
		||||
                shift
 | 
			
		||||
            ;;
 | 
			
		||||
            -a|--agent)
 | 
			
		||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
			
		||||
                AGENT="$2"
 | 
			
		||||
                shift 2
 | 
			
		||||
            ;;
 | 
			
		||||
            -*)
 | 
			
		||||
                die "invalid argument: %s" "$1"
 | 
			
		||||
            ;;
 | 
			
		||||
@@ -116,7 +125,7 @@ artixpkg_repo_add() {
 | 
			
		||||
            fi
 | 
			
		||||
            ( cd "${pkgbase}" || return
 | 
			
		||||
 | 
			
		||||
                if ! has_remote_changes; then
 | 
			
		||||
                if no_remote_changes; then
 | 
			
		||||
 | 
			
		||||
                    if [[ ! -f PKGBUILD ]]; then
 | 
			
		||||
                        die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
			
		||||
@@ -129,27 +138,33 @@ artixpkg_repo_add() {
 | 
			
		||||
 | 
			
		||||
                    manage-pkgbuild-keys --export
 | 
			
		||||
 | 
			
		||||
                    update_yaml_base
 | 
			
		||||
                    pkg2yaml -o "${SRCINFO}"
 | 
			
		||||
 | 
			
		||||
                    local auto
 | 
			
		||||
                    auto=$(auto_detect)
 | 
			
		||||
                    local team
 | 
			
		||||
                    team=$(detect_team)
 | 
			
		||||
 | 
			
		||||
                    if [[ -z "${auto}" ]]; then
 | 
			
		||||
                        auto=$(team_from_yaml)
 | 
			
		||||
                    if [[ -z "${team}" ]]; then
 | 
			
		||||
                        team=$(team_from_yaml)
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    if (( AUTO )); then
 | 
			
		||||
                        if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
 | 
			
		||||
                            DEST="${auto}"
 | 
			
		||||
                            DEST="${team}"
 | 
			
		||||
                        else
 | 
			
		||||
                            DEST="${auto}-${DEST}"
 | 
			
		||||
                            DEST="${team}-${DEST}"
 | 
			
		||||
                        fi
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    upgrade_db
 | 
			
		||||
 | 
			
		||||
                    update_yaml_add "${REBUILD}" "${ADD}" "${NOCHECK}" "${DEST}"
 | 
			
		||||
 | 
			
		||||
                    update_yaml_team "${auto}"
 | 
			
		||||
                    update_yaml_team "${team}"
 | 
			
		||||
 | 
			
		||||
                    if [[ -z ${AGENT} ]]; then
 | 
			
		||||
                        AGENT=${AGENT_MAP["${team}"]}
 | 
			
		||||
                    fi
 | 
			
		||||
                    write_jenkinsfile "${AGENT}"
 | 
			
		||||
 | 
			
		||||
                    local commit_msg
 | 
			
		||||
                    commit_msg=$(get_commit_msg 'add' "${DEST}")
 | 
			
		||||
@@ -158,10 +173,6 @@ artixpkg_repo_add() {
 | 
			
		||||
                        rm .SRCINFO
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    delete_obsolete_map_keys
 | 
			
		||||
 | 
			
		||||
                    migrate_agent_branch
 | 
			
		||||
 | 
			
		||||
                    if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
			
		||||
 | 
			
		||||
                        stat_busy 'Staging files'
 | 
			
		||||
 
 | 
			
		||||
@@ -7,23 +7,60 @@ ARTOOLS_INCLUDE_REPO_IMPORT_SH=1
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
PATCHDIR=${PATCHDIR:-"${WORKSPACE_DIR}/artix-patches"}
 | 
			
		||||
 | 
			
		||||
declare -A arch_map=(
 | 
			
		||||
    ["archlinux-mirrorlist"]="pacman-mirrorlist"
 | 
			
		||||
    ["artix-rebuild-order"]="arch-rebuild-order"
 | 
			
		||||
    ["virtualbox-host-modules-artix"]="virtualbox-host-modules-arch"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
update_patches(){
 | 
			
		||||
    if [[ ! -d "${PATCHDIR}" ]]; then
 | 
			
		||||
        # ${GIT_ORG}
 | 
			
		||||
        if ! git clone "${PATCH_URL}" "${PATCHDIR}"; then
 | 
			
		||||
            error "failed to clone %s" "${PATCHDIR}"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        if ! git -C "${PATCHDIR}" pull; then
 | 
			
		||||
           error "Failed to pull artix-patches"
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
patch_pkgbase(){
 | 
			
		||||
    local name="$1"
 | 
			
		||||
    case "${name}" in
 | 
			
		||||
        linux|linux-lts|linux-zen|linux-hardened|linux-rt*)
 | 
			
		||||
            sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i PKGBUILD
 | 
			
		||||
            sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
 | 
			
		||||
                -i config
 | 
			
		||||
        ;;
 | 
			
		||||
        *)
 | 
			
		||||
            sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
 | 
			
		||||
                -e 's|(Arch Linux)|(Artix Linux)|' \
 | 
			
		||||
                -e 's|arch-meson|artix-meson|' \
 | 
			
		||||
                -i PKGBUILD
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
    git --no-pager diff PKGBUILD
 | 
			
		||||
    local patches="${PATCHDIR}/patches/${name}"
 | 
			
		||||
    sed -e 's|arch-meson|artix-meson|' -i PKGBUILD
 | 
			
		||||
 | 
			
		||||
    if "${PATCH_MAINTAINER}" && [ -n "${PACKAGER}" ]; then
 | 
			
		||||
        sed -e 's|# Maintainer:|# Contributor:|' -i PKGBUILD
 | 
			
		||||
        printf '%s\n%s\n' "# Maintainer: ${PACKAGER}" "$(cat "PKGBUILD")" >"PKGBUILD"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ -d "${patches}" ]; then
 | 
			
		||||
        if [ -f "${patches}/env.txt" ]; then
 | 
			
		||||
            while read -r line; do
 | 
			
		||||
                IFS="=" read -r key value <<< "$line"
 | 
			
		||||
                if [[ -z "${key}" ]] || [[ -z "${value}" ]]; then
 | 
			
		||||
                    die "Invalid key value pair in env.txt"
 | 
			
		||||
                fi
 | 
			
		||||
                if declare -p "${key}" &> /dev/null; then
 | 
			
		||||
                    die "Environment variable %s already exists." "${key}"
 | 
			
		||||
                fi
 | 
			
		||||
                export "${key}=${value}"
 | 
			
		||||
            done < "${patches}/env.txt"
 | 
			
		||||
        fi
 | 
			
		||||
        for file in "${patches}"/*; do
 | 
			
		||||
            if [ -x "${file}" ]; then
 | 
			
		||||
                echo "$> ${name}/$(basename "${file}")"
 | 
			
		||||
                "${file}" "${TREE_DIR_ARTIX}/${name}"
 | 
			
		||||
            elif [[ "${file}" == *.diff ]]; then
 | 
			
		||||
                echo "$> git apply ${name}/$(basename "${file}")"
 | 
			
		||||
                git -C "${TREE_DIR_ARTIX}/${name}" apply "${file}"
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
artixpkg_repo_import_usage() {
 | 
			
		||||
@@ -34,12 +71,14 @@ artixpkg_repo_import_usage() {
 | 
			
		||||
    OPTIONS
 | 
			
		||||
        --tag TAG          Switch the current workspace to a specified version tag
 | 
			
		||||
        --del              Delete files before rsync import
 | 
			
		||||
        -n --no-patch      No patch import
 | 
			
		||||
        -h, --help         Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
        $ ${COMMAND} libfoo
 | 
			
		||||
        $ ${COMMAND} --tag TAG libfoo
 | 
			
		||||
        $ ${COMMAND} --tag TAG --del libfoo
 | 
			
		||||
        $ ${COMMAND} --no-patch libfoo
 | 
			
		||||
_EOF_
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -53,6 +92,7 @@ artixpkg_repo_import() {
 | 
			
		||||
    local pkgbases=()
 | 
			
		||||
    local pkgbase
 | 
			
		||||
    local TAG
 | 
			
		||||
    local NP=0
 | 
			
		||||
    local rsync_args=()
 | 
			
		||||
    rsync_args+=(
 | 
			
		||||
        -axcihW
 | 
			
		||||
@@ -83,6 +123,10 @@ artixpkg_repo_import() {
 | 
			
		||||
                rsync_args+=(--delete-before)
 | 
			
		||||
                shift
 | 
			
		||||
            ;;
 | 
			
		||||
            -n|--no-patch)
 | 
			
		||||
                NP=1
 | 
			
		||||
                shift
 | 
			
		||||
            ;;
 | 
			
		||||
            -h|--help)
 | 
			
		||||
                artixpkg_repo_import_usage
 | 
			
		||||
                exit 0
 | 
			
		||||
@@ -96,6 +140,10 @@ artixpkg_repo_import() {
 | 
			
		||||
        esac
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    if ! (( NP )); then
 | 
			
		||||
        update_patches
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    pkgbases+=("$@")
 | 
			
		||||
 | 
			
		||||
    for pkgbase in "${pkgbases[@]}"; do
 | 
			
		||||
@@ -108,41 +156,48 @@ artixpkg_repo_import() {
 | 
			
		||||
            fi
 | 
			
		||||
            ( cd "${pkgbase}" || return
 | 
			
		||||
 | 
			
		||||
                upstream="${arch_map["$pkgbase"]:-$pkgbase}"
 | 
			
		||||
 | 
			
		||||
                stat_busy "Checking for upstream url"
 | 
			
		||||
                if ! git config --local --get remote.upstream.url &>/dev/null; then
 | 
			
		||||
                    git remote add upstream "${GIT_UPSTREAM_URL}/${pkgbase}".git
 | 
			
		||||
                if ! git config get remote.upstream.url &>/dev/null; then
 | 
			
		||||
                    git remote add upstream "${GIT_UPSTREAM_URL}/${upstream}".git
 | 
			
		||||
                fi
 | 
			
		||||
                stat_done
 | 
			
		||||
 | 
			
		||||
                msg2 "Fetching upstream tags"
 | 
			
		||||
                git fetch --tags upstream main
 | 
			
		||||
                stat_busy "Fetching upstream tags"
 | 
			
		||||
                git fetch -fq --prune --tags upstream main
 | 
			
		||||
                stat_done
 | 
			
		||||
 | 
			
		||||
                local latest version
 | 
			
		||||
                latest=$(git describe --tags FETCH_HEAD)
 | 
			
		||||
 | 
			
		||||
                version="${latest}"
 | 
			
		||||
                if [[ -n "${TAG}" ]]; then
 | 
			
		||||
                    version="${TAG}"
 | 
			
		||||
                fi
 | 
			
		||||
 | 
			
		||||
                if ! has_remote_changes; then
 | 
			
		||||
                if no_remote_changes; then
 | 
			
		||||
                    msg "Querying ${pkgbase} ..."
 | 
			
		||||
                    if ! show_db; then
 | 
			
		||||
                        warning "Could not query ${REPO_DB}"
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    git checkout "${version}" -b "${version}" &>/dev/null
 | 
			
		||||
                    git checkout -q "${version}" -b "${version}"
 | 
			
		||||
                    local temp
 | 
			
		||||
                    temp=$(mktemp -d --tmpdir "${pkgbase}.XXXXXXXXXX")
 | 
			
		||||
 | 
			
		||||
                    rsync "${rsync_args[@]}" "$(pwd)"/ "${temp}"/ &>/dev/null
 | 
			
		||||
                    git checkout master &>/dev/null
 | 
			
		||||
                    git branch -D "${version}" &>/dev/null
 | 
			
		||||
                    rsync "${rsync_args[@]}" -q "$(pwd)"/ "${temp}"/
 | 
			
		||||
                    git checkout -q master
 | 
			
		||||
                    git branch -q -D "${version}"
 | 
			
		||||
 | 
			
		||||
                    msg "Importing upstream changeset for ${version}"
 | 
			
		||||
                    rsync "${rsync_args[@]}" "${temp}"/ "$(pwd)"/ #&>/dev/null
 | 
			
		||||
                    rsync "${rsync_args[@]}" "${temp}"/ "$(pwd)"/
 | 
			
		||||
 | 
			
		||||
                    msg2 "Patching ${pkgbase} ..."
 | 
			
		||||
                    patch_pkgbase "${pkgbase}"
 | 
			
		||||
                    if ! (( NP )); then
 | 
			
		||||
                        msg2 "Patching ${pkgbase} ..."
 | 
			
		||||
                        patch_pkgbase "${pkgbase}"
 | 
			
		||||
                    fi
 | 
			
		||||
                    git --no-pager diff PKGBUILD
 | 
			
		||||
                fi
 | 
			
		||||
            )
 | 
			
		||||
        fi
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,9 @@ artixpkg_repo_move_usage() {
 | 
			
		||||
 | 
			
		||||
    OPTIONS
 | 
			
		||||
        -p, --push              Push pkgbase
 | 
			
		||||
        -a, --agent NAME        Set the CI agent
 | 
			
		||||
                                [default: auto]
 | 
			
		||||
                                possible values: ${AGENTS[@]}
 | 
			
		||||
        -h, --help              Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
@@ -39,6 +42,7 @@ artixpkg_repo_move() {
 | 
			
		||||
 | 
			
		||||
    local DEST
 | 
			
		||||
    local SRC
 | 
			
		||||
    local AGENT
 | 
			
		||||
 | 
			
		||||
    while (( $# )); do
 | 
			
		||||
        case $1 in
 | 
			
		||||
@@ -50,6 +54,11 @@ artixpkg_repo_move() {
 | 
			
		||||
                PUSH=1
 | 
			
		||||
                shift
 | 
			
		||||
            ;;
 | 
			
		||||
            -a|--agent)
 | 
			
		||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
			
		||||
                AGENT="$2"
 | 
			
		||||
                shift 2
 | 
			
		||||
            ;;
 | 
			
		||||
            -*)
 | 
			
		||||
                die "invalid argument: %s" "$1"
 | 
			
		||||
            ;;
 | 
			
		||||
@@ -86,30 +95,30 @@ artixpkg_repo_move() {
 | 
			
		||||
            fi
 | 
			
		||||
            ( cd "${pkgbase}" || return
 | 
			
		||||
 | 
			
		||||
                if ! has_remote_changes; then
 | 
			
		||||
                if no_remote_changes; then
 | 
			
		||||
 | 
			
		||||
                    if [[ ! -f PKGBUILD ]]; then
 | 
			
		||||
                        die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    local auto
 | 
			
		||||
                    auto=$(auto_detect)
 | 
			
		||||
                    local team
 | 
			
		||||
                    team=$(detect_team)
 | 
			
		||||
 | 
			
		||||
                    if [[ -z "${auto}" ]]; then
 | 
			
		||||
                        auto=$(team_from_yaml)
 | 
			
		||||
                    if [[ -z "${team}" ]]; then
 | 
			
		||||
                        team=$(team_from_yaml)
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    if (( AUTO )); then
 | 
			
		||||
                        if [[ "${SRC}" == "${ARTIX_DB_MAP[2]}" ]]; then
 | 
			
		||||
                            SRC="${auto}"
 | 
			
		||||
                            SRC="${team}"
 | 
			
		||||
                        else
 | 
			
		||||
                            SRC="${auto}-${SRC}"
 | 
			
		||||
                            SRC="${team}-${SRC}"
 | 
			
		||||
                        fi
 | 
			
		||||
 | 
			
		||||
                        if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
 | 
			
		||||
                            DEST="${auto}"
 | 
			
		||||
                            DEST="${team}"
 | 
			
		||||
                        else
 | 
			
		||||
                            DEST="${auto}-${DEST}"
 | 
			
		||||
                            DEST="${team}-${DEST}"
 | 
			
		||||
                        fi
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
@@ -120,19 +129,29 @@ artixpkg_repo_move() {
 | 
			
		||||
 | 
			
		||||
                    if [[ "$src_version" != "null" ]]; then
 | 
			
		||||
 | 
			
		||||
                        if ! [[ -f "${SRCINFO}" ]]; then
 | 
			
		||||
                            pkg2yaml -o "${SRCINFO}"
 | 
			
		||||
                        fi
 | 
			
		||||
 | 
			
		||||
                        upgrade_db
 | 
			
		||||
 | 
			
		||||
                        update_yaml_move "${SRC}" "${DEST}"
 | 
			
		||||
 | 
			
		||||
                        team=$(detect_team)
 | 
			
		||||
                        if [[ -z "$team" ]]; then
 | 
			
		||||
                            team=$(team_from_yaml)
 | 
			
		||||
                        fi
 | 
			
		||||
                        update_yaml_team "${team}"
 | 
			
		||||
 | 
			
		||||
                        if [[ -z ${AGENT} ]]; then
 | 
			
		||||
                            AGENT=${AGENT_MAP["${team}"]}
 | 
			
		||||
                        fi
 | 
			
		||||
                        write_jenkinsfile "${AGENT}"
 | 
			
		||||
 | 
			
		||||
                        if [[ -f .SRCINFO ]]; then
 | 
			
		||||
                            rm .SRCINFO
 | 
			
		||||
                        fi
 | 
			
		||||
 | 
			
		||||
                        delete_obsolete_map_keys
 | 
			
		||||
 | 
			
		||||
                        migrate_agent_branch
 | 
			
		||||
 | 
			
		||||
                        update_yaml_team "$(auto_detect)"
 | 
			
		||||
 | 
			
		||||
                        if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
			
		||||
 | 
			
		||||
                            stat_busy 'Staging files'
 | 
			
		||||
@@ -140,6 +159,14 @@ artixpkg_repo_move() {
 | 
			
		||||
                                if [[ "$f" == "${REPO_DB}" ]]; then
 | 
			
		||||
                                    git add "$f"
 | 
			
		||||
                                fi
 | 
			
		||||
                                if [[ "$f" == "${REPO_CI}" ]]; then
 | 
			
		||||
                                    git add "$f"
 | 
			
		||||
                                fi
 | 
			
		||||
                            done
 | 
			
		||||
                            for f in $(git ls-files --others); do
 | 
			
		||||
                                if [[ "$f" == "${SRCINFO}" ]]; then
 | 
			
		||||
                                    git add "$f"
 | 
			
		||||
                                fi
 | 
			
		||||
                            done
 | 
			
		||||
                            stat_done
 | 
			
		||||
 | 
			
		||||
@@ -166,18 +193,18 @@ artixpkg_repo_move() {
 | 
			
		||||
                            # team change on cross repo move system <-> world
 | 
			
		||||
                            if [[ "${SRC}" == ${ARTIX_DB[2]}* ]] \
 | 
			
		||||
                            && [[ "${DEST}" == ${ARTIX_DB[5]}* ]]; then
 | 
			
		||||
                                if ! add_team_to_repo "${pkgbase}" "${ARTIX_DB[5]}"; then
 | 
			
		||||
                                if ! add_team_to_repo "${gitname}" "${ARTIX_DB[5]}"; then
 | 
			
		||||
                                    warning "failed to add team: ${ARTIX_DB[5]}"
 | 
			
		||||
                                fi
 | 
			
		||||
                                if ! remove_team_from_repo "${pkgbase}" "${ARTIX_DB[2]}"; then
 | 
			
		||||
                                if ! remove_team_from_repo "${gitname}" "${ARTIX_DB[2]}"; then
 | 
			
		||||
                                    warning "failed to remove team: ${ARTIX_DB[2]}"
 | 
			
		||||
                                fi
 | 
			
		||||
                            elif [[ "${SRC}" == ${ARTIX_DB[5]}* ]] \
 | 
			
		||||
                            && [[ "${DEST}" == ${ARTIX_DB[2]}* ]]; then
 | 
			
		||||
                                if ! add_team_to_repo "${pkgbase}" "${ARTIX_DB[2]}"; then
 | 
			
		||||
                                if ! add_team_to_repo "${gitname}" "${ARTIX_DB[2]}"; then
 | 
			
		||||
                                    warning "failed to add team: ${ARTIX_DB[2]}"
 | 
			
		||||
                                fi
 | 
			
		||||
                                if ! remove_team_from_repo "${pkgbase}" "${ARTIX_DB[5]}"; then
 | 
			
		||||
                                if ! remove_team_from_repo "${gitname}" "${ARTIX_DB[5]}"; then
 | 
			
		||||
                                    warning "failed to remove team: ${ARTIX_DB[5]}"
 | 
			
		||||
                                fi
 | 
			
		||||
                            fi
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,9 @@ artixpkg_repo_remove_usage() {
 | 
			
		||||
 | 
			
		||||
    OPTIONS
 | 
			
		||||
        -p, --push              Push pkgbase
 | 
			
		||||
        -a, --agent NAME        Set the CI agent
 | 
			
		||||
                                [default: auto]
 | 
			
		||||
                                possible values: ${AGENTS[@]}
 | 
			
		||||
        -h, --help              Show this help text
 | 
			
		||||
 | 
			
		||||
    EXAMPLES
 | 
			
		||||
@@ -37,6 +40,7 @@ artixpkg_repo_remove() {
 | 
			
		||||
    local PUSH=0
 | 
			
		||||
    local AUTO=0
 | 
			
		||||
    local DEST=''
 | 
			
		||||
    local AGENT
 | 
			
		||||
 | 
			
		||||
    while (( $# )); do
 | 
			
		||||
        case $1 in
 | 
			
		||||
@@ -48,6 +52,11 @@ artixpkg_repo_remove() {
 | 
			
		||||
                PUSH=1
 | 
			
		||||
                shift
 | 
			
		||||
            ;;
 | 
			
		||||
            -a|--agent)
 | 
			
		||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
			
		||||
                AGENT="$2"
 | 
			
		||||
                shift 2
 | 
			
		||||
            ;;
 | 
			
		||||
            -*)
 | 
			
		||||
                die "invalid argument: %s" "$1"
 | 
			
		||||
            ;;
 | 
			
		||||
@@ -79,35 +88,42 @@ artixpkg_repo_remove() {
 | 
			
		||||
            fi
 | 
			
		||||
            ( cd "${pkgbase}" || return
 | 
			
		||||
 | 
			
		||||
                if ! has_remote_changes; then
 | 
			
		||||
                if no_remote_changes; then
 | 
			
		||||
 | 
			
		||||
                    if [[ ! -f PKGBUILD ]]; then
 | 
			
		||||
                        die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    local auto
 | 
			
		||||
                    auto=$(auto_detect)
 | 
			
		||||
                    local team
 | 
			
		||||
                    team=$(detect_team)
 | 
			
		||||
 | 
			
		||||
                    if [[ -z "${auto}" ]]; then
 | 
			
		||||
                        auto=$(team_from_yaml)
 | 
			
		||||
                    if [[ -z "${team}" ]]; then
 | 
			
		||||
                        team=$(team_from_yaml)
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    if (( AUTO )); then
 | 
			
		||||
                        if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
 | 
			
		||||
                            DEST="${auto}"
 | 
			
		||||
                            DEST="${team}"
 | 
			
		||||
                        else
 | 
			
		||||
                            DEST="${auto}-${DEST}"
 | 
			
		||||
                            DEST="${team}-${DEST}"
 | 
			
		||||
                        fi
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    local commit_msg
 | 
			
		||||
                    commit_msg=$(get_commit_msg 'remove' "${DEST}")
 | 
			
		||||
 | 
			
		||||
                    if ! [[ -f "${SRCINFO}" ]]; then
 | 
			
		||||
                        pkg2yaml -o "${SRCINFO}"
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    upgrade_db
 | 
			
		||||
 | 
			
		||||
                    update_yaml_remove "${DEST}"
 | 
			
		||||
 | 
			
		||||
                    delete_obsolete_map_keys
 | 
			
		||||
 | 
			
		||||
                    migrate_agent_branch
 | 
			
		||||
                    if [[ -z ${AGENT} ]]; then
 | 
			
		||||
                        AGENT=${AGENT_MAP["${team}"]}
 | 
			
		||||
                    fi
 | 
			
		||||
                    write_jenkinsfile "${AGENT}"
 | 
			
		||||
 | 
			
		||||
                    if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
			
		||||
 | 
			
		||||
@@ -116,6 +132,14 @@ artixpkg_repo_remove() {
 | 
			
		||||
                            if [[ "$f" == "${REPO_DB}" ]]; then
 | 
			
		||||
                                git add "$f"
 | 
			
		||||
                            fi
 | 
			
		||||
                            if [[ "$f" == "${REPO_CI}" ]]; then
 | 
			
		||||
                                git add "$f"
 | 
			
		||||
                            fi
 | 
			
		||||
                        done
 | 
			
		||||
                        for f in $(git ls-files --others); do
 | 
			
		||||
                            if [[ "$f" == "${SRCINFO}" ]]; then
 | 
			
		||||
                                git add "$f"
 | 
			
		||||
                            fi
 | 
			
		||||
                        done
 | 
			
		||||
                        stat_done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -72,7 +72,7 @@ artixpkg_repo_show() {
 | 
			
		||||
            fi
 | 
			
		||||
            ( cd "${pkgbase}" || return
 | 
			
		||||
 | 
			
		||||
                if ! has_remote_changes; then
 | 
			
		||||
                if no_remote_changes; then
 | 
			
		||||
                    if [[ ! -f PKGBUILD ]]; then
 | 
			
		||||
                        die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
			
		||||
                    fi
 | 
			
		||||
@@ -83,13 +83,17 @@ artixpkg_repo_show() {
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    if (( SRC_BASE )); then
 | 
			
		||||
                        msg "Showing srcinfo base ..."
 | 
			
		||||
                        show_srcinfo_base
 | 
			
		||||
                        if [[ -f "${SRCINFO}" ]]; then
 | 
			
		||||
                            msg "Showing srcinfo pkgbase ..."
 | 
			
		||||
                            yq '.pkgbase' "${SRCINFO}"
 | 
			
		||||
                        fi
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    if (( SRC_PKGS )); then
 | 
			
		||||
                        msg "Showing srcinfo pkgs ..."
 | 
			
		||||
                        show_srcinfo_pkgs
 | 
			
		||||
                        if [[ -f "${SRCINFO}" ]]; then
 | 
			
		||||
                            msg "Showing srcinfo pkgname ..."
 | 
			
		||||
                            yq '.pkgname' "${SRCINFO}"
 | 
			
		||||
                        fi
 | 
			
		||||
                    fi
 | 
			
		||||
                fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,37 +0,0 @@
 | 
			
		||||
#!/hint/bash
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
#{{{ table
 | 
			
		||||
 | 
			
		||||
msg_table_header(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_row_yellow(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_row_green(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_row(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_row_red(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${RED} ${mesg} ${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
@@ -60,9 +60,11 @@ load_pkg_config(){
 | 
			
		||||
 | 
			
		||||
    DBEXT=${DBEXT:-'gz'}
 | 
			
		||||
 | 
			
		||||
    if [[ -z "${AGENTS[*]}" ]]; then
 | 
			
		||||
        AGENTS=(orion taurus)
 | 
			
		||||
    fi
 | 
			
		||||
    PATCH_MAINTAINER=${PATCH_MAINTAINER:-false}
 | 
			
		||||
 | 
			
		||||
    PATCH_URL=${PATCH_URL:-"${GIT_SSH}:artix/artix-patches.git"}
 | 
			
		||||
 | 
			
		||||
    PKGDEST_DBG=${PKGDEST_DBG:-"${WORKSPACE_DIR}/packages-debug"}
 | 
			
		||||
 | 
			
		||||
    return 0
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -49,3 +49,6 @@ is_packager_email_official() {
 | 
			
		||||
    fi
 | 
			
		||||
    return 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# shellcheck source=config/makepkg/x86_64.conf
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
@@ -1,30 +0,0 @@
 | 
			
		||||
#!/hint/bash
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
#{{{ yaml
 | 
			
		||||
 | 
			
		||||
write_yaml_header(){
 | 
			
		||||
    printf '%s\n' '---'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_empty_line(){
 | 
			
		||||
    printf '\n'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_yaml_map(){
 | 
			
		||||
    local ident="$1" key="$2" val="$3"
 | 
			
		||||
    printf "\n%${ident}s%s: %s\n" '' "$key" "$val"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_yaml_seq(){
 | 
			
		||||
    local ident="$1" val="$2"
 | 
			
		||||
    printf "\n%${ident}s- %s\n" '' "$val"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_yaml_seq_map(){
 | 
			
		||||
    local ident="$1" key="$2" val="$3"
 | 
			
		||||
    printf "\n%${ident}s- %s: %s\n" '' "$key" "$val"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
@@ -41,8 +41,6 @@ export _ARTOOLS_COMMAND='artixpkg'
 | 
			
		||||
# shellcheck source=src/lib/pkg/util.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/util.sh
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
cd "${TREE_DIR_ARTIX}"
 | 
			
		||||
 | 
			
		||||
# command checking
 | 
			
		||||
 
 | 
			
		||||
@@ -6,10 +6,8 @@ LIBDIR=${LIBDIR:-'@libdir@'}
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/base/message.sh
 | 
			
		||||
source "${LIBDIR}"/base/message.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/diff.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/diff.sh
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
# shellcheck source=src/lib/pkg/util/diff.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/util/diff.sh
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    cat <<- _EOF_
 | 
			
		||||
 
 | 
			
		||||
@@ -10,13 +10,45 @@ SYSCONFDIR=${SYSCONFDIR:-'@sysconfdir@/artools'}
 | 
			
		||||
source "${LIBDIR}"/pkg/util.sh
 | 
			
		||||
# shellcheck source=src/lib/base/message.sh
 | 
			
		||||
source "${LIBDIR}"/base/message.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/table.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/table.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/db/db.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/db/db.sh
 | 
			
		||||
 | 
			
		||||
shopt -s extglob
 | 
			
		||||
 | 
			
		||||
#{{{ table
 | 
			
		||||
 | 
			
		||||
msg_table_header(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_row_yellow(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_row_green(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_row(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_row_red(){
 | 
			
		||||
    local mesg=$1; shift
 | 
			
		||||
    # shellcheck disable=2059
 | 
			
		||||
    printf "${RED} ${mesg} ${ALL_OFF}\n" "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
 | 
			
		||||
extract_db() {
 | 
			
		||||
    local u="$1" cdir="$2"
 | 
			
		||||
    rm -rf "$cdir"
 | 
			
		||||
 
 | 
			
		||||
@@ -181,7 +181,9 @@ else
 | 
			
		||||
    set_arch="${CARCH}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
${CARCH:+setarch "${set_arch}"} chroot "${working_dir}" "$@"
 | 
			
		||||
chroot_args=(/usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/bin)
 | 
			
		||||
 | 
			
		||||
${CARCH:+setarch "${set_arch}"} chroot "${working_dir}" "${chroot_args[@]}" "$@"
 | 
			
		||||
 | 
			
		||||
ret=$?
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,8 @@ LIBDIR=${LIBDIR:-'@libdir@'}
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/base/message.sh
 | 
			
		||||
source "${LIBDIR}"/base/message.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/diff.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/diff.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/util/diff.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/util/diff.sh
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    cat <<- _EOF_
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ LIBDIR=${LIBDIR:-'@libdir@'}
 | 
			
		||||
source "${LIBDIR}"/base/message.sh
 | 
			
		||||
# shellcheck source=src/lib/base/chroot.sh
 | 
			
		||||
source "${LIBDIR}"/base/chroot.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/deploy.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/deploy.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/util/deploy.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/util/deploy.sh
 | 
			
		||||
 | 
			
		||||
# shellcheck source=config/makepkg/x86_64.conf
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 
 | 
			
		||||
@@ -6,136 +6,198 @@ LIBDIR=${LIBDIR:-'@libdir@'}
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/base/message.sh
 | 
			
		||||
source "${LIBDIR}"/base/message.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/yaml.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/yaml.sh
 | 
			
		||||
 | 
			
		||||
# shellcheck disable=1091
 | 
			
		||||
source "${MAKEPKG_LIBRARY}"/util/pkgbuild.sh
 | 
			
		||||
# shellcheck disable=1091
 | 
			
		||||
source "${MAKEPKG_LIBRARY}"/util/schema.sh
 | 
			
		||||
 | 
			
		||||
#{{{ functions
 | 
			
		||||
# {{{ functions
 | 
			
		||||
 | 
			
		||||
srcyaml_write_attr(){
 | 
			
		||||
    local ident1="$1" ident2="$2" ident3="$3"
 | 
			
		||||
    local attrname=$4 attrvalues=("${@:5}")
 | 
			
		||||
yaml_array_str() {
 | 
			
		||||
    local array
 | 
			
		||||
 | 
			
		||||
    # normalize whitespace, strip leading and trailing
 | 
			
		||||
    attrvalues=("${attrvalues[@]//+([[:space:]])/ }")
 | 
			
		||||
    attrvalues=("${attrvalues[@]#[[:space:]]}")
 | 
			
		||||
    attrvalues=("${attrvalues[@]%[[:space:]]}")
 | 
			
		||||
 | 
			
		||||
    case $attrname in
 | 
			
		||||
        pkgver|pkgrel|epoch|url|install|changelog)
 | 
			
		||||
            for v in "${attrvalues[@]}"; do
 | 
			
		||||
                Yaml+=$(write_yaml_map "$ident3" "$attrname" "$v")
 | 
			
		||||
            done
 | 
			
		||||
        ;;
 | 
			
		||||
        pkgdesc)
 | 
			
		||||
            Yaml+=$(write_yaml_map "$ident1" "$attrname" "${attrvalues[@]}")
 | 
			
		||||
        ;;
 | 
			
		||||
        *)
 | 
			
		||||
            Yaml+=$(write_yaml_map "$ident1" "$attrname")
 | 
			
		||||
            for v in "${attrvalues[@]}"; do
 | 
			
		||||
                Yaml+=$(write_yaml_seq "$ident2" "$v")
 | 
			
		||||
            done
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
    for entry in "$@"; do
 | 
			
		||||
        array="${array:-}${array:+,} '${entry}'"
 | 
			
		||||
    done
 | 
			
		||||
    printf "%s\n" "[${array}]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pkgbuild_extract_to_yaml() {
 | 
			
		||||
    local pkgname=$1 attrname=$2 isarray=$3 outvalue=
 | 
			
		||||
pkgbuild_extract_to_srcyaml() {
 | 
			
		||||
    # $1: pkgname
 | 
			
		||||
    # $2: index
 | 
			
		||||
    # $3: attr name
 | 
			
		||||
    # $4: multivalued
 | 
			
		||||
 | 
			
		||||
    local pkgname="$1" i="$2" attrname="$3" isarray="$4"  outvalue=
 | 
			
		||||
 | 
			
		||||
    if get_pkgbuild_attribute "$pkgname" "$attrname" "$isarray" 'outvalue'; then
 | 
			
		||||
        [[ -z $pkgname ]] && srcyaml_write_attr 2 4 2 "$attrname" "${outvalue[@]}"
 | 
			
		||||
        [[ -n $pkgname ]] && srcyaml_write_attr 4 6 2 "$attrname" "${outvalue[@]}"
 | 
			
		||||
        local ov an
 | 
			
		||||
 | 
			
		||||
        if [[ -n $pkgname ]]; then
 | 
			
		||||
            an=".pkgname[$i].$attrname"
 | 
			
		||||
        else
 | 
			
		||||
            an=".pkgbase.$attrname"
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        if (( isarray )); then
 | 
			
		||||
            ov=$(yaml_array_str "${outvalue[@]}")
 | 
			
		||||
        else
 | 
			
		||||
            ov="${outvalue[*]}"
 | 
			
		||||
            if [[ -z "$ov" ]]; then
 | 
			
		||||
                ov="null"
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        an="$an" ov="$ov" \
 | 
			
		||||
        yq -P 'eval(strenv(an)) = env(ov)' -i "${YAML}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
srcyaml_write_section_details() {
 | 
			
		||||
srcyaml_write_node_details() {
 | 
			
		||||
    local attr package_arch a
 | 
			
		||||
    local multivalued_arch_attrs=(source provides conflicts depends replaces
 | 
			
		||||
                                  optdepends makedepends checkdepends
 | 
			
		||||
                                  "${known_hash_algos[@]/%/sums}")
 | 
			
		||||
    local multivalued_arch_attrs=(
 | 
			
		||||
        source
 | 
			
		||||
        provides
 | 
			
		||||
        conflicts
 | 
			
		||||
        depends
 | 
			
		||||
        replaces
 | 
			
		||||
        optdepends
 | 
			
		||||
        makedepends
 | 
			
		||||
        checkdepends
 | 
			
		||||
        "${known_hash_algos[@]/%/sums}"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    for attr in "${singlevalued[@]}"; do
 | 
			
		||||
        pkgbuild_extract_to_yaml "$1" "$attr" 0
 | 
			
		||||
        pkgbuild_extract_to_srcyaml "$1" "$2" "$attr" 0
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    for attr in "${multivalued[@]}"; do
 | 
			
		||||
        pkgbuild_extract_to_yaml "$1" "$attr" 1
 | 
			
		||||
        pkgbuild_extract_to_srcyaml "$1" "$2" "$attr" 1
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    get_pkgbuild_attribute "$1" 'arch' 1 'package_arch'
 | 
			
		||||
    get_pkgbuild_attribute "$pn" 'arch' 1 'package_arch'
 | 
			
		||||
    for a in "${package_arch[@]}"; do
 | 
			
		||||
        # 'any' is special. there's no support for, e.g. depends_any.
 | 
			
		||||
        [[ $a = any ]] && continue
 | 
			
		||||
 | 
			
		||||
        for attr in "${multivalued_arch_attrs[@]}"; do
 | 
			
		||||
            pkgbuild_extract_to_yaml "$1" "${attr}_$a" 1
 | 
			
		||||
            pkgbuild_extract_to_srcyaml "$1" "$2" "${attr}_$a" 1
 | 
			
		||||
        done
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
yaml_write_global() {
 | 
			
		||||
    local singlevalued=(pkgdesc pkgver pkgrel epoch url install changelog)
 | 
			
		||||
    local multivalued=(arch groups license checkdepends makedepends
 | 
			
		||||
                        depends optdepends provides conflicts replaces
 | 
			
		||||
                        noextract options backup
 | 
			
		||||
                        source validpgpkeys "${known_hash_algos[@]/%/sums}")
 | 
			
		||||
srcyaml_write_global() {
 | 
			
		||||
    local singlevalued=(
 | 
			
		||||
        pkgdesc
 | 
			
		||||
        pkgver
 | 
			
		||||
        pkgrel
 | 
			
		||||
        epoch
 | 
			
		||||
        url
 | 
			
		||||
        install
 | 
			
		||||
        changelog
 | 
			
		||||
    )
 | 
			
		||||
    local multivalued=(
 | 
			
		||||
        arch
 | 
			
		||||
        groups
 | 
			
		||||
        license
 | 
			
		||||
        checkdepends
 | 
			
		||||
        makedepends
 | 
			
		||||
        depends
 | 
			
		||||
        optdepends
 | 
			
		||||
        provides
 | 
			
		||||
        conflicts
 | 
			
		||||
        replaces
 | 
			
		||||
        noextract
 | 
			
		||||
        options
 | 
			
		||||
        backup
 | 
			
		||||
        source
 | 
			
		||||
        validpgpkeys
 | 
			
		||||
        "${known_hash_algos[@]/%/sums}"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "pkgbase")
 | 
			
		||||
    Yaml+=$(write_yaml_map 2 "name" "${pkgbase:-${pkgname}}")
 | 
			
		||||
 | 
			
		||||
    srcyaml_write_section_details ""
 | 
			
		||||
    srcyaml_write_node_details '' ''
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
yaml_write_package() {
 | 
			
		||||
    local singlevalued=(pkgdesc url install changelog)
 | 
			
		||||
    local multivalued=(arch groups license checkdepends depends optdepends
 | 
			
		||||
                       provides conflicts replaces options backup)
 | 
			
		||||
srcyaml_write_package() {
 | 
			
		||||
    local singlevalued=(
 | 
			
		||||
        pkgdesc
 | 
			
		||||
        url
 | 
			
		||||
        install
 | 
			
		||||
        changelog
 | 
			
		||||
    )
 | 
			
		||||
    local multivalued=(
 | 
			
		||||
        arch
 | 
			
		||||
        groups
 | 
			
		||||
        license
 | 
			
		||||
        checkdepends
 | 
			
		||||
        depends
 | 
			
		||||
        optdepends
 | 
			
		||||
        provides
 | 
			
		||||
        conflicts
 | 
			
		||||
        replaces
 | 
			
		||||
        options
 | 
			
		||||
        backup
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "pkgnames")
 | 
			
		||||
    for pkg in "${pkgname[@]}"; do
 | 
			
		||||
        Yaml+=$(write_yaml_seq_map 2 "pkgname" "$pkg")
 | 
			
		||||
        srcyaml_write_section_details "$pkg"
 | 
			
		||||
    done
 | 
			
		||||
    srcyaml_write_node_details "$1" "$2"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_srcyaml() {
 | 
			
		||||
    Yaml=$(write_yaml_header)
 | 
			
		||||
    yaml_write_global
 | 
			
		||||
    yaml_write_package
 | 
			
		||||
    yq -n '"---"' > "${YAML}"
 | 
			
		||||
 | 
			
		||||
#     local version
 | 
			
		||||
#     version=$(get_full_version)
 | 
			
		||||
#     Yaml+=$(write_yaml_map 2 "version" "${version}")
 | 
			
		||||
    local ver
 | 
			
		||||
    ver=$(get_full_version) \
 | 
			
		||||
    yq -P '.version = env(ver)' -i "${YAML}"
 | 
			
		||||
 | 
			
		||||
    printf '%s\n' "${Yaml}"
 | 
			
		||||
    # https://github.com/mikefarah/yq/issues/1836
 | 
			
		||||
    # yq '. head_comment="generated with artixpkg @buildtoolver@"' -i "${YAML}"
 | 
			
		||||
 | 
			
		||||
    local name=${pkgbase:-$pkgname}
 | 
			
		||||
    name="$name" \
 | 
			
		||||
    yq -P '.pkgbase.name = env(name)' -i "${YAML}"
 | 
			
		||||
    srcyaml_write_global
 | 
			
		||||
 | 
			
		||||
    local pn
 | 
			
		||||
    local key
 | 
			
		||||
    for ((i = 0 ; i < "${#pkgname[@]}" ; i++)); do
 | 
			
		||||
        pn="${pkgname[$i]}" key=".pkgname[$i]" \
 | 
			
		||||
        yq -P 'eval(strenv(key)).name = env(pn)' -i "${YAML}"
 | 
			
		||||
        srcyaml_write_package "${pkgname[$i]}" "$i"
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    yq '. foot_comment="generated with artixpkg @buildtoolver@"' -i "${YAML}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
# }}}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    printf 'Usage: %s [options]\n' "${0##*/}"
 | 
			
		||||
    printf "    -o <out>      Out file (default: ${YAML})\n"
 | 
			
		||||
    printf '    -h            This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
YAML=/tmp/srcinfo.yaml
 | 
			
		||||
 | 
			
		||||
# shellcheck source=config/makepkg/x86_64.conf
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
opts='h'
 | 
			
		||||
opts='o:h'
 | 
			
		||||
 | 
			
		||||
while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        o) YAML="$OPTARG" ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
shift $(( OPTIND - 1 ))
 | 
			
		||||
srcpath=$(readlink -f "$1")
 | 
			
		||||
 | 
			
		||||
# srcpath=$(readlink -f "$1")
 | 
			
		||||
 | 
			
		||||
[[ -z "$srcpath" ]] && srcpath="."
 | 
			
		||||
 | 
			
		||||
[[ -f "$srcpath"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$srcpath"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,8 @@ SYSCONFDIR=${SYSCONFDIR:-'@sysconfdir@/artools'}
 | 
			
		||||
source "${LIBDIR}"/pkg/util.sh
 | 
			
		||||
# shellcheck source=src/lib/base/message.sh
 | 
			
		||||
source "${LIBDIR}"/base/message.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/deploy.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/deploy.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/util/deploy.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/util/deploy.sh
 | 
			
		||||
 | 
			
		||||
#{{{ deploy
 | 
			
		||||
 | 
			
		||||
@@ -31,6 +31,18 @@ remove(){
 | 
			
		||||
    # pkg removal will be done by a patched repo-remove honoring -R
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_dbg() {
 | 
			
		||||
    local rmp
 | 
			
		||||
    rmp=${pkgname%"${PKGEXT}"}
 | 
			
		||||
    rmp=${rmp%-*}
 | 
			
		||||
    rmp=${rmp%-*}
 | 
			
		||||
    rm -fv "${PKGDEST_DBG}/${rmp}"*
 | 
			
		||||
    if pkgfile=$(find_cached_pkgfile "${pkgname}"); then
 | 
			
		||||
        msg "Found: %s" "${pkgfile}"
 | 
			
		||||
        ln -sfv "${pkgfile}" "${PKGDEST_DBG}"/
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
repo_action() {
 | 
			
		||||
    local repo_path
 | 
			
		||||
    # shellcheck disable=SC2153
 | 
			
		||||
@@ -40,11 +52,13 @@ repo_action() {
 | 
			
		||||
    for pkgname in "${passfiles[@]}"; do
 | 
			
		||||
        "$func"
 | 
			
		||||
    done
 | 
			
		||||
    ( cd "${repo_path}" || return
 | 
			
		||||
        if [[ -n "${action}" ]]; then
 | 
			
		||||
            repo-"${action}" "${action_args[@]}" "${dest_repo}.${db_ext}" "${packages[@]}"
 | 
			
		||||
        fi
 | 
			
		||||
    )
 | 
			
		||||
    if ! "${dbg_pkg}"; then
 | 
			
		||||
        ( cd "${repo_path}" || return
 | 
			
		||||
            if [[ -n "${action}" ]]; then
 | 
			
		||||
                repo-"${action}" "${action_args[@]}" "${dest_repo}.${db_ext}" "${packages[@]}"
 | 
			
		||||
            fi
 | 
			
		||||
        )
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
@@ -55,9 +69,10 @@ db_ext="db.tar.${DBEXT}"
 | 
			
		||||
 | 
			
		||||
add_pkg=false
 | 
			
		||||
rm_pkg=false
 | 
			
		||||
dbg_pkg=false
 | 
			
		||||
 | 
			
		||||
cmd=${0##*/}
 | 
			
		||||
dest_repo=${cmd#*-}
 | 
			
		||||
dest_repo=world #${cmd#*-}
 | 
			
		||||
action_args=(-R)
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
@@ -65,19 +80,21 @@ usage() {
 | 
			
		||||
    printf '    -d <dest>          Destination repository\n'
 | 
			
		||||
    printf '    -a                 Add package(s) to repository\n'
 | 
			
		||||
    printf '    -r                 Remove package(s) from repository\n'
 | 
			
		||||
    printf '    -u                 Update debug repository\n'
 | 
			
		||||
    printf '    -h                 This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
opts='arLRhd:'
 | 
			
		||||
opts='uarhd:'
 | 
			
		||||
 | 
			
		||||
while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        d) dest_repo="$OPTARG" ;;
 | 
			
		||||
        a) add_pkg=true; rm_pkg=false ;;
 | 
			
		||||
        r) rm_pkg=true; add_pkg=false ;;
 | 
			
		||||
        u) dbg_pkg=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
@@ -87,10 +104,14 @@ shift $(( OPTIND - 1 ))
 | 
			
		||||
passfiles=("$@")
 | 
			
		||||
 | 
			
		||||
if [[ -n "${passfiles[*]}" ]]; then
 | 
			
		||||
    if ${add_pkg}; then
 | 
			
		||||
        repo_action add
 | 
			
		||||
    fi
 | 
			
		||||
    if ${rm_pkg}; then
 | 
			
		||||
        repo_action remove
 | 
			
		||||
    if ! "${dbg_pkg}"; then
 | 
			
		||||
        if ${add_pkg}; then
 | 
			
		||||
            repo_action add
 | 
			
		||||
        fi
 | 
			
		||||
        if ${rm_pkg}; then
 | 
			
		||||
            repo_action remove
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        repo_action update_dbg
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,8 @@ LIBDIR=${LIBDIR:-'@libdir@'}
 | 
			
		||||
 | 
			
		||||
# shellcheck source=src/lib/base/message.sh
 | 
			
		||||
source "${LIBDIR}"/base/message.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/deploy.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/deploy.sh
 | 
			
		||||
# shellcheck source=src/lib/pkg/util/deploy.sh
 | 
			
		||||
source "${LIBDIR}"/pkg/util/deploy.sh
 | 
			
		||||
 | 
			
		||||
# shellcheck source=config/makepkg/x86_64.conf
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user