Compare commits
	
		
			31 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						7b67601e44
	
				 | 
					
					
						|||
| 
						
						
							
						
						8db0c1ca39
	
				 | 
					
					
						|||
| 
						
						
							
						
						190340e375
	
				 | 
					
					
						|||
| f7a61731ba | |||
| e959ce10c3 | |||
| d2bbf9d8c4 | |||
| 
						
						
							
						
						1dafa0fb38
	
				 | 
					
					
						|||
| 
						
						
							
						
						982a9ed678
	
				 | 
					
					
						|||
| 19a6ff09f1 | |||
| fac634cf14 | |||
| 71ed464c33 | |||
| f7286a0661 | |||
| aee7c07a04 | |||
| fbcfa79426 | |||
| 87bd203d3e | |||
| ac0472d9ff | |||
| 
						
						
							
						
						e80c07d2fc
	
				 | 
					
					
						|||
| 7584684bea | |||
| e415aa67b9 | |||
| b2512ffe68 | |||
| 1d8b7e83dc | |||
| 
						
						
							
						
						e237afd788
	
				 | 
					
					
						|||
| 
						
						
							
						
						5d7f006ad9
	
				 | 
					
					
						|||
| 
						
						
							
						
						72104728ac
	
				 | 
					
					
						|||
| 
						
						
							
						
						423896750a
	
				 | 
					
					
						|||
| 
						
						
							
						
						ad09046044
	
				 | 
					
					
						|||
| 
						
						
							
						
						c335cab68c
	
				 | 
					
					
						|||
| e744e80c57 | |||
| 06bcd79858 | |||
| 
						
						
							
						
						dbb63dcd5e
	
				 | 
					
					
						|||
| 
						
						
							
						
						4e510b2f1e
	
				 | 
					
					
						
							
								
								
									
										8
									
								
								.github/workflows/lint.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/lint.yaml
									
									
									
									
										vendored
									
									
								
							@@ -3,7 +3,7 @@ run-name: ${{ gitea.actor }}
 | 
				
			|||||||
on:
 | 
					on:
 | 
				
			||||||
  push:
 | 
					  push:
 | 
				
			||||||
    branches:
 | 
					    branches:
 | 
				
			||||||
      - artools/0.32.x
 | 
					      - artools/0.33.x
 | 
				
			||||||
      - master
 | 
					      - master
 | 
				
			||||||
    tags:
 | 
					    tags:
 | 
				
			||||||
      - 0.*
 | 
					      - 0.*
 | 
				
			||||||
@@ -16,13 +16,15 @@ jobs:
 | 
				
			|||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: checkout repo
 | 
					      - name: checkout repo
 | 
				
			||||||
        uses: actions/checkout@main
 | 
					        uses: actions/checkout@main
 | 
				
			||||||
      - name: build artools
 | 
					      - name: build
 | 
				
			||||||
        run: make
 | 
					        run: make
 | 
				
			||||||
      - name: shellcheck artools
 | 
					      - name: shellcheck
 | 
				
			||||||
        uses: ludeeus/action-shellcheck@master
 | 
					        uses: ludeeus/action-shellcheck@master
 | 
				
			||||||
        env:
 | 
					        env:
 | 
				
			||||||
          SHELLCHECK_OPTS: -x -e SC2034
 | 
					          SHELLCHECK_OPTS: -x -e SC2034
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          scandir: './build/bin'
 | 
					          scandir: './build/bin'
 | 
				
			||||||
          format: tty
 | 
					          format: tty
 | 
				
			||||||
 | 
					          severity: error
 | 
				
			||||||
 | 
					          additional_files: 'contrib/completion/bash/artools'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
SHELL=/bin/bash
 | 
					SHELL=/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
V=0.32
 | 
					V=0.33
 | 
				
			||||||
BUILDTOOLVER ?= $(V)
 | 
					BUILDTOOLVER ?= $(V)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CHROOTVER=0.12
 | 
					CHROOTVER=0.12
 | 
				
			||||||
@@ -35,13 +35,16 @@ SETARCH_ALIASES = $(wildcard config/setarch-aliases.d/*)
 | 
				
			|||||||
TOOLS_CONFIGS_PKG=$(wildcard config/conf/*pkg*)
 | 
					TOOLS_CONFIGS_PKG=$(wildcard config/conf/*pkg*)
 | 
				
			||||||
TOOLS_CONFIGS_ISO=$(wildcard config/conf/*iso*)
 | 
					TOOLS_CONFIGS_ISO=$(wildcard config/conf/*iso*)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: binprogs_base binprogs_pkg binprogs_iso library_base library_pkg library_iso conf_base conf_pkg conf_iso
 | 
					COMPLETIONS = $(addprefix $(BUILDDIR)/,$(patsubst %.in,%,$(wildcard contrib/completion/*/*)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					all: binprogs_base binprogs_pkg binprogs_iso library_base library_pkg library_iso conf_base conf_pkg conf_iso completion
 | 
				
			||||||
binprogs_base: $(BINPROGS_BASE)
 | 
					binprogs_base: $(BINPROGS_BASE)
 | 
				
			||||||
binprogs_pkg: $(BINPROGS_PKG)
 | 
					binprogs_pkg: $(BINPROGS_PKG)
 | 
				
			||||||
binprogs_iso: $(BINPROGS_ISO)
 | 
					binprogs_iso: $(BINPROGS_ISO)
 | 
				
			||||||
library_base: $(LIBRARY_BASE)
 | 
					library_base: $(LIBRARY_BASE)
 | 
				
			||||||
library_pkg: $(LIBRARY_PKG)
 | 
					library_pkg: $(LIBRARY_PKG)
 | 
				
			||||||
library_iso: $(LIBRARY_ISO)
 | 
					library_iso: $(LIBRARY_ISO)
 | 
				
			||||||
 | 
					completion: $(COMPLETIONS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
edit = sed -e "s|@datadir[@]|$(DATADIR)|g" \
 | 
					edit = sed -e "s|@datadir[@]|$(DATADIR)|g" \
 | 
				
			||||||
	-e "s|@libdir[@]|$(LIBDIR)|g" \
 | 
						-e "s|@libdir[@]|$(LIBDIR)|g" \
 | 
				
			||||||
@@ -69,6 +72,8 @@ $(eval $(call buildInScript,build/bin,src/pkg/,.in,755))
 | 
				
			|||||||
$(eval $(call buildInScript,build/bin,src/iso/,.in,755))
 | 
					$(eval $(call buildInScript,build/bin,src/iso/,.in,755))
 | 
				
			||||||
$(eval $(call buildInScript,build/lib,src/lib/,,644))
 | 
					$(eval $(call buildInScript,build/lib,src/lib/,,644))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(foreach completion,$(wildcard contrib/completion/*),$(eval $(call buildInScript,build/$(completion),$(completion)/,.in,444)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
conf_base:
 | 
					conf_base:
 | 
				
			||||||
	@install -d $(BUILDDIR)/pacman.conf.d $(BUILDDIR)/artools
 | 
						@install -d $(BUILDDIR)/pacman.conf.d $(BUILDDIR)/artools
 | 
				
			||||||
	@cp -a $(PACMAN_CONFIGS) $(BUILDDIR)/pacman.conf.d
 | 
						@cp -a $(PACMAN_CONFIGS) $(BUILDDIR)/pacman.conf.d
 | 
				
			||||||
@@ -110,6 +115,8 @@ install_pkg: binprogs_pkg
 | 
				
			|||||||
	for a in $(SETARCH_ALIASES); do install -m0644 $$a -t $(DESTDIR)$(DATADIR)/setarch-aliases.d; done
 | 
						for a in $(SETARCH_ALIASES); do install -m0644 $$a -t $(DESTDIR)$(DATADIR)/setarch-aliases.d; done
 | 
				
			||||||
	ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
 | 
						ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						install -Dm0644 $(BUILDDIR)/contrib/completion/bash/artixpkg $(DESTDIR)$(PREFIX)/share/bash-completion/completions/artixpkg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_iso: binprogs_iso
 | 
					install_iso: binprogs_iso
 | 
				
			||||||
	install -dm0755 $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
 | 
						install -dm0755 $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
 | 
				
			||||||
	install -dm0755 $(DESTDIR)$(PREFIX)/bin
 | 
						install -dm0755 $(DESTDIR)$(PREFIX)/bin
 | 
				
			||||||
@@ -144,5 +151,5 @@ dist:
 | 
				
			|||||||
check: $(BINPROGS_SRC_BASE) $(BINPROGS_SRC_PKG) $(BINPROGS_SRC_ISO) config/makepkg/x86_64.conf contrib/makepkg/PKGBUILD.proto
 | 
					check: $(BINPROGS_SRC_BASE) $(BINPROGS_SRC_PKG) $(BINPROGS_SRC_ISO) config/makepkg/x86_64.conf contrib/makepkg/PKGBUILD.proto
 | 
				
			||||||
	shellcheck -x $^
 | 
						shellcheck -x $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: all binprogs_base binprogs_pkg binprogs_iso library_base library_pkg library_iso conf_base conf_pkg conf_iso clean install install_base install_pkg install_iso uninstall dist check
 | 
					.PHONY: all binprogs_base binprogs_pkg binprogs_iso library_base library_pkg library_iso conf_base conf_pkg conf_iso clean install install_base install_pkg install_iso uninstall dist check contrib
 | 
				
			||||||
.DELETE_ON_ERROR:
 | 
					.DELETE_ON_ERROR:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,9 +14,9 @@
 | 
				
			|||||||
# default arch to build
 | 
					# default arch to build
 | 
				
			||||||
# ARCH=$(uname -m)
 | 
					# ARCH=$(uname -m)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# default pacman.conf repos to include
 | 
					# default pacman.conf to include
 | 
				
			||||||
# possible values: {world,galaxy}{-gremlins,-goblins}
 | 
					# possible values: {stable,gremlins,goblins}
 | 
				
			||||||
# REPO="world"
 | 
					# STABILITY="stable"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# default iso storage directory
 | 
					# default iso storage directory
 | 
				
			||||||
# ISO_POOL="${WORKSPACE_DIR}/iso"
 | 
					# ISO_POOL="${WORKSPACE_DIR}/iso"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,3 +32,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# default packaging org
 | 
					# default packaging org
 | 
				
			||||||
# GIT_ORG='packages'
 | 
					# GIT_ORG='packages'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# default archiving org
 | 
				
			||||||
 | 
					# GIT_ORG_ARCHIVE='landfill'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# default jenkins agents
 | 
				
			||||||
 | 
					# AGENTS=(orion taurus)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#-- The package required by makepkg to download VCS sources
 | 
					#-- The package required by makepkg to download VCS sources
 | 
				
			||||||
#  Format: 'protocol::package'
 | 
					#  Format: 'protocol::package'
 | 
				
			||||||
VCSCLIENTS=('bzr::bzr'
 | 
					VCSCLIENTS=('bzr::breezy'
 | 
				
			||||||
            'fossil::fossil'
 | 
					            'fossil::fossil'
 | 
				
			||||||
            'git::git'
 | 
					            'git::git'
 | 
				
			||||||
            'hg::mercurial'
 | 
					            'hg::mercurial'
 | 
				
			||||||
@@ -41,7 +41,7 @@ CHOST="x86_64-pc-linux-gnu"
 | 
				
			|||||||
#-- Compiler and Linker Flags
 | 
					#-- Compiler and Linker Flags
 | 
				
			||||||
#CPPFLAGS=""
 | 
					#CPPFLAGS=""
 | 
				
			||||||
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
 | 
					CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
 | 
				
			||||||
        -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
 | 
					        -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
 | 
				
			||||||
        -fstack-clash-protection -fcf-protection"
 | 
					        -fstack-clash-protection -fcf-protection"
 | 
				
			||||||
CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
 | 
					CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
 | 
				
			||||||
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \
 | 
					LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										115
									
								
								config/pacman/iso-goblins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								config/pacman/iso-goblins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					Color
 | 
				
			||||||
 | 
					#NoProgressBar
 | 
				
			||||||
 | 
					CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# By default, pacman accepts packages signed by keys that its local keyring
 | 
				
			||||||
 | 
					# trusts (see pacman-key and its man page), as well as unsigned packages.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[galaxy-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[galaxy-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[galaxy]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If you want to run 32 bit applications on your x86_64 system,
 | 
				
			||||||
 | 
					# enable the lib32 repositories as required here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# [lib32-goblins]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [lib32-gremlins]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [lib32]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
							
								
								
									
										103
									
								
								config/pacman/iso-gremlins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								config/pacman/iso-gremlins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					Color
 | 
				
			||||||
 | 
					#NoProgressBar
 | 
				
			||||||
 | 
					CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# By default, pacman accepts packages signed by keys that its local keyring
 | 
				
			||||||
 | 
					# trusts (see pacman-key and its man page), as well as unsigned packages.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[galaxy-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[galaxy]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If you want to run 32 bit applications on your x86_64 system,
 | 
				
			||||||
 | 
					# enable the lib32 repositories as required here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# [lib32-gremlins]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [lib32]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
							
								
								
									
										103
									
								
								config/pacman/iso-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								config/pacman/iso-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					Color
 | 
				
			||||||
 | 
					#NoProgressBar
 | 
				
			||||||
 | 
					CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# By default, pacman accepts packages signed by keys that its local keyring
 | 
				
			||||||
 | 
					# trusts (see pacman-key and its man page), as well as unsigned packages.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# [system-gremlins]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# [world-gremlins]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# [galaxy-gremlins]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[galaxy]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If you want to run 32 bit applications on your x86_64 system,
 | 
				
			||||||
 | 
					# enable the lib32 repositories as required here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# [lib32-gremlins]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [lib32]
 | 
				
			||||||
 | 
					# Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
							
								
								
									
										282
									
								
								contrib/completion/bash/artixpkg.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										282
									
								
								contrib/completion/bash/artixpkg.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,282 @@
 | 
				
			|||||||
 | 
					#/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LIBDIR=${LIBDIR:-'@libdir@'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_artixpkg_pkgbase() {
 | 
				
			||||||
 | 
					    source "${LIBDIR}"/pkg/git/config.sh
 | 
				
			||||||
 | 
					    source "${LIBDIR}"/pkg/util.sh
 | 
				
			||||||
 | 
					    ls -1 "${TREE_DIR_ARTIX}" | tr '\n' ' '
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_artixpkg_completion() {
 | 
				
			||||||
 | 
					    local cur prev comps comps_all repos autorepos teams agents cwords comp_cword_exflag
 | 
				
			||||||
 | 
					    source "${LIBDIR}"/pkg/db/db.sh 2>/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cur="${COMP_WORDS[COMP_CWORD]}"
 | 
				
			||||||
 | 
					    prev="${COMP_WORDS[COMP_CWORD-1]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for ((i = COMP_CWORD - 1; i >= 0; i--)); do
 | 
				
			||||||
 | 
					        if [[ ${COMP_WORDS[i]} != -* ]]; then
 | 
				
			||||||
 | 
					            last_non_flag_word="${COMP_WORDS[i]}"
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    comps=""
 | 
				
			||||||
 | 
					    comps_all=""
 | 
				
			||||||
 | 
					    comp_cword_exflag=0
 | 
				
			||||||
 | 
					    comp_cword_all=0
 | 
				
			||||||
 | 
					    for ((i = 0; i < ${#COMP_WORDS[@]} - 1; i++)); do
 | 
				
			||||||
 | 
					        word="${COMP_WORDS[i]}"
 | 
				
			||||||
 | 
					        comps_all+=" $word"
 | 
				
			||||||
 | 
					        ((comp_cword_all++))
 | 
				
			||||||
 | 
					        if [[ $word != -* ]]; then
 | 
				
			||||||
 | 
					            comps+=" $word"
 | 
				
			||||||
 | 
					            ((comp_cword_exflag++))
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    comps="${comps:1}"
 | 
				
			||||||
 | 
					    comps_all="${comps_all:1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    repos=""
 | 
				
			||||||
 | 
					    for word in "${ARTIX_DB[@]}"; do
 | 
				
			||||||
 | 
					        if [[ $word != -* ]]; then
 | 
				
			||||||
 | 
					            repos+=" $word"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    repos="${repos:1}"
 | 
				
			||||||
 | 
					    autorepos=""
 | 
				
			||||||
 | 
					    for word in "${ARTIX_DB_MAP[@]}"; do
 | 
				
			||||||
 | 
					        if [[ $word != -* ]]; then
 | 
				
			||||||
 | 
					            autorepos+=" $word"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    autorepos="${autorepos:1}"
 | 
				
			||||||
 | 
					    teams=""
 | 
				
			||||||
 | 
					    for word in "${ARTIX_TEAMS[@]}"; do
 | 
				
			||||||
 | 
					        if [[ $word != -* ]]; then
 | 
				
			||||||
 | 
					            teams+=" $word"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    teams="${teams:1}"
 | 
				
			||||||
 | 
					    agents=""
 | 
				
			||||||
 | 
					    for word in "${AGENTS[@]}"; do
 | 
				
			||||||
 | 
					        if [[ $word != -* ]]; then
 | 
				
			||||||
 | 
					            agents+=" $word"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    agents="${agents:1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    case "${comp_cword_exflag}" in
 | 
				
			||||||
 | 
					        1)
 | 
				
			||||||
 | 
					            COMPREPLY=($(compgen -W "admin ci git repo version -h --help" -- "${cur}"))
 | 
				
			||||||
 | 
					            return 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        2)
 | 
				
			||||||
 | 
					            case ${prev} in
 | 
				
			||||||
 | 
					                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}))
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                repo)
 | 
				
			||||||
 | 
					                    COMPREPLY=($(compgen -W "add remove move import show -h --help" -- ${cur}))
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                version)
 | 
				
			||||||
 | 
					                    COMPREPLY=($(compgen -W "-h --help" -- ${cur}))
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					            esac
 | 
				
			||||||
 | 
					            ;;  
 | 
				
			||||||
 | 
					        *)
 | 
				
			||||||
 | 
					            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")
 | 
				
			||||||
 | 
					                            # this flag expects a parameter
 | 
				
			||||||
 | 
					                            COMPREPLY=()
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        *)
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "--del -h --help --tag $(_artixpkg_pkgbase)" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg repo show")
 | 
				
			||||||
 | 
					                    COMPREPLY=($(compgen -W "-b --base -p --pkgs -h --help" -- ${cur}))
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg git clone"*)
 | 
				
			||||||
 | 
					                    case "${prev}" in
 | 
				
			||||||
 | 
					                        "-a"|"--agent")
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "$agents" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        "--protocol")
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "https" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        "-t"|"--team")
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "$teams" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        "-m"|"--maintainer"|"-s"|"--search"|"-t"|"--team"|"-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}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg git config"*)
 | 
				
			||||||
 | 
					                    case "${prev}" in
 | 
				
			||||||
 | 
					                        "--protocol")
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "https" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        "-j"|"--jobs")
 | 
				
			||||||
 | 
					                            # these flags expect a parameter
 | 
				
			||||||
 | 
					                            COMPREPLY=()
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        *)
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "--protocol -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "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}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg git pull"*)
 | 
				
			||||||
 | 
					                    case "${prev}" in
 | 
				
			||||||
 | 
					                        "-t"|"--topic"|"-m"|"--maintainer"|"-j"|"--jobs")
 | 
				
			||||||
 | 
					                            # these flags expect a parameter
 | 
				
			||||||
 | 
					                            COMPREPLY=()
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        *)
 | 
				
			||||||
 | 
					                            case "${comps_all}" in
 | 
				
			||||||
 | 
					                                *--all*)
 | 
				
			||||||
 | 
					                                    COMPREPLY=($(compgen -W "-m --maintainer -t --topic -j --jobs -h --help" -- ${cur}))
 | 
				
			||||||
 | 
					                                    ;;
 | 
				
			||||||
 | 
					                                *)
 | 
				
			||||||
 | 
					                                    COMPREPLY=($(compgen -W "-m --maintainer -t --topic -j --jobs --all -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
				
			||||||
 | 
					                                    ;;
 | 
				
			||||||
 | 
					                            esac
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg git push"*)
 | 
				
			||||||
 | 
					                    case "${prev}" in
 | 
				
			||||||
 | 
					                        "-m"|"--maintainer"|"-t"|"--topic"|"-j"|"--jobs")
 | 
				
			||||||
 | 
					                            # 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}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg admin maintainer"*)
 | 
				
			||||||
 | 
					                    case "${comp_cword_all}" in
 | 
				
			||||||
 | 
					                        3)
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "-a --adopt --o --orphan -h --help" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        *)
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "-h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg admin query"*)
 | 
				
			||||||
 | 
					                    case "${prev}" in
 | 
				
			||||||
 | 
					                        "-m"|"--maintainer"|"-t"|"--topic")
 | 
				
			||||||
 | 
					                            # this flag expects a parameter
 | 
				
			||||||
 | 
					                            COMPREPLY=()
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        *)
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "-m --maintainer -t --topic -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg admin team"*)
 | 
				
			||||||
 | 
					                    case "${prev}" in
 | 
				
			||||||
 | 
					                        "-a"|"--add"|"-r"|"--remove")
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "$teams" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        *)
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "-a --add -c --check -l --list -r --remove -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg admin topic"*)
 | 
				
			||||||
 | 
					                    case "${prev}" in
 | 
				
			||||||
 | 
					                        "-a"|"--add"|"-r"|"--remove"|"-j"|"--jobs")
 | 
				
			||||||
 | 
					                            # this flag expects a parameter
 | 
				
			||||||
 | 
					                            COMPREPLY=()
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                        *)
 | 
				
			||||||
 | 
					                            COMPREPLY=($(compgen -W "-a --add -r --remove -d --del -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
				
			||||||
 | 
					                            ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                "artixpkg admin transfer"*)
 | 
				
			||||||
 | 
					                    COMPREPLY=($(compgen -W "-h --help $(_artixpkg_pkgbase)" -- ${cur}))
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					            esac
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					complete -F _artixpkg_completion artixpkg
 | 
				
			||||||
@@ -92,7 +92,11 @@ make_rootfs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        prepare_dir "${rootfs}"
 | 
					        prepare_dir "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        basestrap "${basestrap_args[@]}" "${rootfs}" "${packages[@]}"
 | 
					        local args=()
 | 
				
			||||||
 | 
					        if "${copy_pacconf}"; then
 | 
				
			||||||
 | 
					            args+=(-P)
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        basestrap "${basestrap_args[@]}" "${args[@]}" "${rootfs}" "${packages[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        copy_overlay "${root_overlay}" "${rootfs}"
 | 
					        copy_overlay "${root_overlay}" "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -186,8 +190,8 @@ gen_iso_fn(){
 | 
				
			|||||||
    local vars=("artix") name
 | 
					    local vars=("artix") name
 | 
				
			||||||
    vars+=("${profile}")
 | 
					    vars+=("${profile}")
 | 
				
			||||||
    vars+=("${INITSYS}")
 | 
					    vars+=("${INITSYS}")
 | 
				
			||||||
    case "${repo}" in
 | 
					    case "${STABILITY}" in
 | 
				
			||||||
        *-gremlins|*-goblins) vars+=("${repo#*-}") ;;
 | 
					        gremlins|goblins) vars+=("${STABILITY}") ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    vars+=("${ISO_VERSION}")
 | 
					    vars+=("${ISO_VERSION}")
 | 
				
			||||||
    vars+=("${arch}")
 | 
					    vars+=("${arch}")
 | 
				
			||||||
@@ -197,12 +201,22 @@ gen_iso_fn(){
 | 
				
			|||||||
    printf "%s\n" "$name"
 | 
					    printf "%s\n" "$name"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export_gpg_publickey() {
 | 
				
			||||||
 | 
					    key_export="${WORKSPACE_DIR}"/pubkey.gpg
 | 
				
			||||||
 | 
					    gpg --batch  --no-armor --output "${key_export}" --export "${GPG_KEY}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prepare_build(){
 | 
					prepare_build(){
 | 
				
			||||||
    load_profile
 | 
					    load_profile
 | 
				
			||||||
 | 
					    local pac_conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pacman_conf="${DATADIR}/pacman.conf.d/${repo}-${arch}.conf"
 | 
					    pac_conf=iso-${arch}.conf
 | 
				
			||||||
    if [[ -f "${USER_CONF_DIR}/pacman.conf.d/${repo}-${arch}.conf" ]]; then
 | 
					    if [[ "${STABILITY}" != 'stable' ]]; then
 | 
				
			||||||
        pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}-${arch}.conf"
 | 
					        pac_conf=iso-${STABILITY}-${arch}.conf
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    pacman_conf="${DATADIR}/pacman.conf.d/${pac_conf}"
 | 
				
			||||||
 | 
					    if [[ -f "${USER_CONF_DIR}/pacman.conf.d/${pac_conf}" ]]; then
 | 
				
			||||||
 | 
					        pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${pac_conf}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    iso_file=$(gen_iso_fn).iso
 | 
					    iso_file=$(gen_iso_fn).iso
 | 
				
			||||||
@@ -323,11 +337,11 @@ persist=false
 | 
				
			|||||||
use_dracut=false
 | 
					use_dracut=false
 | 
				
			||||||
squash_only=false
 | 
					squash_only=false
 | 
				
			||||||
boot_only=false
 | 
					boot_only=false
 | 
				
			||||||
 | 
					copy_pacconf=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
basestrap_args=(-GMc)
 | 
					basestrap_args=(-GMc)
 | 
				
			||||||
cmd=${0##*/}
 | 
					cmd=${0##*/}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repo=${REPO}
 | 
					 | 
				
			||||||
owner=${SUDO_USER:-$USER}
 | 
					owner=${SUDO_USER:-$USER}
 | 
				
			||||||
profile='base'
 | 
					profile='base'
 | 
				
			||||||
chroots_iso="${CHROOTS_DIR}/buildiso"
 | 
					chroots_iso="${CHROOTS_DIR}/buildiso"
 | 
				
			||||||
@@ -338,8 +352,8 @@ usage() {
 | 
				
			|||||||
    printf '    -p <profile>       Profile [default: %s]\n' "${profile}"
 | 
					    printf '    -p <profile>       Profile [default: %s]\n' "${profile}"
 | 
				
			||||||
    printf '    -r <dir>           Chroots directory\n'
 | 
					    printf '    -r <dir>           Chroots directory\n'
 | 
				
			||||||
    printf '                       [default: %s]\n' "${chroots_iso}"
 | 
					    printf '                       [default: %s]\n' "${chroots_iso}"
 | 
				
			||||||
    printf '    -R <repo>          Build repo\n'
 | 
					    printf '    -R <stability>     Build stability\n'
 | 
				
			||||||
    printf '                       [default: %s]\n' "${repo}"
 | 
					    printf '                       [default: %s]\n' "${STABILITY}"
 | 
				
			||||||
    printf '    -a <arch>          Build arch\n'
 | 
					    printf '    -a <arch>          Build arch\n'
 | 
				
			||||||
    printf '                       [default: %s]\n' "${arch}"
 | 
					    printf '                       [default: %s]\n' "${arch}"
 | 
				
			||||||
    printf '    -t <dir>           Target directory\n'
 | 
					    printf '    -t <dir>           Target directory\n'
 | 
				
			||||||
@@ -356,6 +370,7 @@ usage() {
 | 
				
			|||||||
    printf '    -z                 Generate iso only\n'
 | 
					    printf '    -z                 Generate iso only\n'
 | 
				
			||||||
    printf '                       Requires pre built images (-x)\n'
 | 
					    printf '                       Requires pre built images (-x)\n'
 | 
				
			||||||
    printf '    -d                 Use dracut instead of mkinitcpio for iso initramfs\n'
 | 
					    printf '    -d                 Use dracut instead of mkinitcpio for iso initramfs\n'
 | 
				
			||||||
 | 
					    printf '    -w                 Copy the pacman.conf used to the rootfs\n'
 | 
				
			||||||
    printf '    -q                 Query settings and pretend build\n'
 | 
					    printf '    -q                 Query settings and pretend build\n'
 | 
				
			||||||
    printf '    -h                 This help\n'
 | 
					    printf '    -h                 This help\n'
 | 
				
			||||||
    printf '\n'
 | 
					    printf '\n'
 | 
				
			||||||
@@ -365,13 +380,13 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_args=("$@")
 | 
					orig_args=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='p:r:R:t:i:g:a:czsbxmdqh'
 | 
					opts='p:r:R:t:i:g:a:czsbxwmdqh'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        p) profile="$OPTARG" ;;
 | 
					        p) profile="$OPTARG" ;;
 | 
				
			||||||
        a) arch="$OPTARG" ;;
 | 
					        a) arch="$OPTARG" ;;
 | 
				
			||||||
        R) repo="$OPTARG" ;;
 | 
					        R) STABILITY="$OPTARG" ;;
 | 
				
			||||||
        r) chroots_iso="$OPTARG" ;;
 | 
					        r) chroots_iso="$OPTARG" ;;
 | 
				
			||||||
        t) ISO_POOL="$OPTARG" ;;
 | 
					        t) ISO_POOL="$OPTARG" ;;
 | 
				
			||||||
        i) INITSYS="$OPTARG" ;;
 | 
					        i) INITSYS="$OPTARG" ;;
 | 
				
			||||||
@@ -383,6 +398,7 @@ while getopts "${opts}" arg; do
 | 
				
			|||||||
        b) boot_only=true ;;
 | 
					        b) boot_only=true ;;
 | 
				
			||||||
        m) persist=true ;;
 | 
					        m) persist=true ;;
 | 
				
			||||||
        d) use_dracut=true ;;
 | 
					        d) use_dracut=true ;;
 | 
				
			||||||
 | 
					        w) copy_pacconf=true ;;
 | 
				
			||||||
        q) pretend=true ;;
 | 
					        q) pretend=true ;;
 | 
				
			||||||
        h|?) usage 0 ;;
 | 
					        h|?) usage 0 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,66 +5,33 @@
 | 
				
			|||||||
#{{{ calamares
 | 
					#{{{ calamares
 | 
				
			||||||
 | 
					
 | 
				
			||||||
yaml_array() {
 | 
					yaml_array() {
 | 
				
			||||||
    local array
 | 
					    local array yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for entry in "$@"; do
 | 
					    for entry in "$@"; do
 | 
				
			||||||
        array="${array:-}${array:+,} ${entry}"
 | 
					        yaml="{name: ${entry}, action: enable}"
 | 
				
			||||||
 | 
					        array="${array:-}${array:+,} ${yaml}"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    printf "%s\n" "[${array}]"
 | 
					    printf "%s\n" "[${array}]"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
write_services_conf() {
 | 
					 | 
				
			||||||
    local key1="$1" key2="$2" val1="$3" val2="$4"
 | 
					 | 
				
			||||||
    local conf="$5"/services-"${INITSYS}".conf
 | 
					 | 
				
			||||||
    local svc
 | 
					 | 
				
			||||||
    svc=$(yaml_array "${SERVICES[@]}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    yq -n '"---"' > "$conf"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    key1="$key1" key2="$key2" val1="$val1" val2="$val2" svc="$svc" \
 | 
					 | 
				
			||||||
    yq -P 'with(
 | 
					 | 
				
			||||||
        .;
 | 
					 | 
				
			||||||
            eval(strenv(key1)) = env(val1) |
 | 
					 | 
				
			||||||
            eval(strenv(key2)) = env(val2) |
 | 
					 | 
				
			||||||
            .services = env(svc))' \
 | 
					 | 
				
			||||||
        -i "$conf"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [[ ${INITSYS} == 's6' ]]; then
 | 
					 | 
				
			||||||
        yq -P '.defaultBundle = "default"' -i "$conf"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
write_services_openrc_conf(){
 | 
					 | 
				
			||||||
    write_services_conf '.initdDir' '.runlevelsDir' '/etc/init.d' '/etc/runlevels' "$1"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
write_services_runit_conf(){
 | 
					 | 
				
			||||||
    write_services_conf '.svDir' '.runsvDir' '/etc/runit/sv' '/etc/runit/runsvdir' "$1"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
write_services_s6_conf(){
 | 
					 | 
				
			||||||
    write_services_conf '.svDir' '.dbDir' '/etc/s6/sv' '/etc/s6/rc/compiled' "$1"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
write_services_dinit_conf(){
 | 
					 | 
				
			||||||
    write_services_conf '.initdDir' '.runsvDir' '/etc/dinit.d' '/etc/dinit.d/boot.d' "$1"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
configure_calamares(){
 | 
					configure_calamares(){
 | 
				
			||||||
    local mods="$1/etc/calamares/modules"
 | 
					    for config in online offline; do
 | 
				
			||||||
 | 
					        local mods="$1/etc/calamares-$config/modules"
 | 
				
			||||||
        if [[ -d "$mods" ]];then
 | 
					        if [[ -d "$mods" ]];then
 | 
				
			||||||
        msg2 "Configuring: Calamares"
 | 
					            msg2 "Configuring: Calamares %s" "$config"
 | 
				
			||||||
        write_services_"${INITSYS}"_conf "$mods"
 | 
					
 | 
				
			||||||
        sed -e "s|-openrc|-${INITSYS}|" -i "$1"/etc/calamares/settings.conf
 | 
					            if [[ -f "$mods"/services-artix.conf ]]; then
 | 
				
			||||||
        if [[ -f "$mods"/netstrap.conf ]]; then
 | 
					                local svc
 | 
				
			||||||
            sed -e "s|-openrc|-${INITSYS}|g" -i "$mods"/netstrap.conf
 | 
					                svc=$(yaml_array "${SERVICES[@]}") \
 | 
				
			||||||
 | 
					                    yq -P 'with(.;
 | 
				
			||||||
 | 
					                            .command = "artix-service" |
 | 
				
			||||||
 | 
					                            .services = env(svc) )' \
 | 
				
			||||||
 | 
					                        -i "$mods"/services-artix.conf
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        if [[ -f "$mods"/netinstall.conf ]]; then
 | 
					 | 
				
			||||||
            sed -e "s|netinstall-openrc|netinstall-${INITSYS}|" -i "$mods"/netinstall.conf
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        if [[ -f "$mods"/netinstall.yaml ]]; then
 | 
					 | 
				
			||||||
            sed -e "s|-openrc|-${INITSYS}|g" -i "$mods"/netinstall.yaml
 | 
					 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    if [[ -d "$1"/etc/calamares-offline ]]; then
 | 
				
			||||||
 | 
					        ln -sf calamares-offline "$1"/etc/calamares
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,6 @@ prepare_boot_extras(){
 | 
				
			|||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cp "$src"/boot/memtest86+/memtest.bin "$dest"/memtest
 | 
					    cp "$src"/boot/memtest86+/memtest.bin "$dest"/memtest
 | 
				
			||||||
    cp "$src"/usr/share/licenses/common/GPL2/license.txt "$dest"/memtest.COPYING
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#}}}
 | 
					#}}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,29 +4,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#{{{ initcpio
 | 
					#{{{ initcpio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
make_checksum(){
 | 
					 | 
				
			||||||
    local file="$1"
 | 
					 | 
				
			||||||
    msg2 "Creating md5sum ..."
 | 
					 | 
				
			||||||
    cd "${iso_root}${live_dir}"
 | 
					 | 
				
			||||||
    md5sum "$file" > "$file".md5
 | 
					 | 
				
			||||||
    cd "${OLDPWD}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
make_sig () {
 | 
					 | 
				
			||||||
    local file="$1"
 | 
					 | 
				
			||||||
    msg2 "Creating signature file..."
 | 
					 | 
				
			||||||
    chown "${owner}:$(id --group "${owner}")" "${iso_root}${live_dir}"
 | 
					 | 
				
			||||||
    su "${owner}" -c "gpg --detach-sign --output $file.sig --default-key ${GPG_KEY} $file"
 | 
					 | 
				
			||||||
    chown "root:root" "${iso_root}${live_dir}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export_gpg_publickey() {
 | 
					 | 
				
			||||||
    key_export=${WORKSPACE_DIR}/pubkey.gpg
 | 
					 | 
				
			||||||
    if [[ ! -e "${key_export}" ]]; then
 | 
					 | 
				
			||||||
        gpg --batch --output "${key_export}" --export "${GPG_KEY}"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
prepare_initramfs_mkinitcpio() {
 | 
					prepare_initramfs_mkinitcpio() {
 | 
				
			||||||
    local mnt="$1" mkinitcpio_conf k
 | 
					    local mnt="$1" mkinitcpio_conf k
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,8 +11,8 @@ prepare_initramfs_mkinitcpio() {
 | 
				
			|||||||
    [[ "${profile}" == 'base' ]] && mkinitcpio_conf=mkinitcpio-pxe.conf
 | 
					    [[ "${profile}" == 'base' ]] && mkinitcpio_conf=mkinitcpio-pxe.conf
 | 
				
			||||||
    k=$(<"$mnt"/usr/src/linux/version)
 | 
					    k=$(<"$mnt"/usr/src/linux/version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -n "${GPG_KEY}" ]]; then
 | 
					    if [[ -v key_export ]]; then
 | 
				
			||||||
        exec {ARTIX_GNUPG_FD}<>"${key_export}"
 | 
					        exec {ARTIX_GNUPG_FD}<"${key_export}"
 | 
				
			||||||
        export ARTIX_GNUPG_FD
 | 
					        export ARTIX_GNUPG_FD
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -43,13 +20,11 @@ prepare_initramfs_mkinitcpio() {
 | 
				
			|||||||
        -c /etc/"$mkinitcpio_conf" \
 | 
					        -c /etc/"$mkinitcpio_conf" \
 | 
				
			||||||
        -g /boot/initramfs.img
 | 
					        -g /boot/initramfs.img
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -n "${GPG_KEY}" ]]; then
 | 
					    if [[ -v key_export ]]; then
 | 
				
			||||||
        exec {ARTIX_GNUPG_FD}<&-
 | 
					        exec {ARTIX_GNUPG_FD}<&-
 | 
				
			||||||
        unset ARTIX_GNUPG_FD
 | 
					        unset ARTIX_GNUPG_FD
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    if [[ -f "${key_export}" ]]; then
 | 
					    rm -rf -- "${key_export}"
 | 
				
			||||||
        rm "${key_export}"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    cp "$mnt"/boot/initramfs.img "${iso_root}"/boot/initramfs-"${arch}".img
 | 
					    cp "$mnt"/boot/initramfs.img "${iso_root}"/boot/initramfs-"${arch}".img
 | 
				
			||||||
    prepare_boot_extras "$mnt"
 | 
					    prepare_boot_extras "$mnt"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,24 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#{{{ squash
 | 
					#{{{ squash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					make_checksum(){
 | 
				
			||||||
 | 
					    local file="$1"
 | 
				
			||||||
 | 
					    msg2 "Creating md5sum ..."
 | 
				
			||||||
 | 
					    cd "${iso_root}${live_dir}"
 | 
				
			||||||
 | 
					    md5sum "$file" > "$file".md5
 | 
				
			||||||
 | 
					    cd "${OLDPWD}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					make_sig () {
 | 
				
			||||||
 | 
					    local file="$1"
 | 
				
			||||||
 | 
					    msg2 "Creating signature file..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    chown "${owner}:$(id --group "${owner}")" "${iso_root}${live_dir}"
 | 
				
			||||||
 | 
					    su "${owner}" -c "gpg --batch --no-armor --no-include-key-block --output $file.sig  --detach-sign \
 | 
				
			||||||
 | 
					        --default-key ${GPG_KEY} ${gpg_options[@]} $file"
 | 
				
			||||||
 | 
					    chown "root:root" "${iso_root}${live_dir}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
make_ext_img(){
 | 
					make_ext_img(){
 | 
				
			||||||
    local src="$1"
 | 
					    local src="$1"
 | 
				
			||||||
    local size=32G
 | 
					    local size=32G
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ load_iso_config(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ARCH=${ARCH:-"$(uname -m)"}
 | 
					    ARCH=${ARCH:-"$(uname -m)"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    REPO=${REPO:-'world'}
 | 
					    STABILITY=${STABILITY:-'stable'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
 | 
					    ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,10 @@
 | 
				
			|||||||
[[ -z ${ARTOOLS_INCLUDE_ADMIN_SH:-} ]] || return 0
 | 
					[[ -z ${ARTOOLS_INCLUDE_ADMIN_SH:-} ]] || return 0
 | 
				
			||||||
ARTOOLS_INCLUDE_ADMIN_SH=1
 | 
					ARTOOLS_INCLUDE_ADMIN_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/pkg/db/db.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/pkg/db/db.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
artixpkg_admin_usage() {
 | 
					artixpkg_admin_usage() {
 | 
				
			||||||
@@ -13,17 +17,21 @@ artixpkg_admin_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [COMMAND] [OPTIONS]
 | 
					    Usage: ${COMMAND} [COMMAND] [OPTIONS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    COMMANDS
 | 
					    COMMANDS
 | 
				
			||||||
        transfer          Transfer obsolete repository to landfill
 | 
					        maintainer        Manage repo maintainer
 | 
				
			||||||
        query             Query maintainers and topics
 | 
					        query             Query maintainers and topics
 | 
				
			||||||
 | 
					        team              Manage repo team
 | 
				
			||||||
        topic             Manage topics
 | 
					        topic             Manage topics
 | 
				
			||||||
 | 
					        transfer          Transfer obsolete repository to landfill
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -h, --help     Show this help text
 | 
					        -h, --help     Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} transfer libfoo libbar
 | 
					        $ ${COMMAND} transfer libfoo libbar
 | 
				
			||||||
        $ ${COMMAND} query --maintainer tux
 | 
					        $ ${COMMAND} query --topic mytopic
 | 
				
			||||||
        $ ${COMMAND} query --topic kf5
 | 
					        $ ${COMMAND} topic --add mytopic libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} team --add ${ARTIX_TEAMS[3]} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} maintainer --adopt libfoo libbar
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,14 +48,7 @@ artixpkg_admin() {
 | 
				
			|||||||
            artixpkg_admin_usage
 | 
					            artixpkg_admin_usage
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        transfer)
 | 
					
 | 
				
			||||||
            _ARTOOLS_COMMAND+=" $1"
 | 
					 | 
				
			||||||
            shift
 | 
					 | 
				
			||||||
            # shellcheck source=src/lib/pkg/admin/transfer.sh
 | 
					 | 
				
			||||||
            source "${LIBDIR}"/pkg/admin/transfer.sh
 | 
					 | 
				
			||||||
            artixpkg_admin_transfer "$@"
 | 
					 | 
				
			||||||
            exit 0
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
        query)
 | 
					        query)
 | 
				
			||||||
            _ARTOOLS_COMMAND+=" $1"
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
@@ -56,6 +57,14 @@ artixpkg_admin() {
 | 
				
			|||||||
            artixpkg_admin_query "$@"
 | 
					            artixpkg_admin_query "$@"
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					        team)
 | 
				
			||||||
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            # shellcheck source=src/lib/pkg/admin/team.sh
 | 
				
			||||||
 | 
					            source "${LIBDIR}"/pkg/admin/team.sh
 | 
				
			||||||
 | 
					            artixpkg_admin_team "$@"
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
        topic)
 | 
					        topic)
 | 
				
			||||||
            _ARTOOLS_COMMAND+=" $1"
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
@@ -64,6 +73,22 @@ artixpkg_admin() {
 | 
				
			|||||||
            artixpkg_admin_topic "$@"
 | 
					            artixpkg_admin_topic "$@"
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					        transfer)
 | 
				
			||||||
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            # shellcheck source=src/lib/pkg/admin/transfer.sh
 | 
				
			||||||
 | 
					            source "${LIBDIR}"/pkg/admin/transfer.sh
 | 
				
			||||||
 | 
					            artixpkg_admin_transfer "$@"
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        maintainer)
 | 
				
			||||||
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            # shellcheck source=src/lib/pkg/admin/maintainer.sh
 | 
				
			||||||
 | 
					            source "${LIBDIR}"/pkg/admin/maintainer.sh
 | 
				
			||||||
 | 
					            artixpkg_admin_maintainer "$@"
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
        -*)
 | 
					        -*)
 | 
				
			||||||
            die "invalid argument: %s" "$1"
 | 
					            die "invalid argument: %s" "$1"
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										137
									
								
								src/lib/pkg/admin/maintainer.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								src/lib/pkg/admin/maintainer.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,137 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_maintainer_usage() {
 | 
				
			||||||
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -a, --adopt            Adopt repo
 | 
				
			||||||
 | 
					        -o, --orphan           Orphan repo
 | 
				
			||||||
 | 
					        -h, --help             Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} --adopt libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --orphan libfoo libbar
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_maintainer() {
 | 
				
			||||||
 | 
					    if (( $# < 1 )); then
 | 
				
			||||||
 | 
					        artixpkg_admin_maintainer_usage
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # options
 | 
				
			||||||
 | 
					    local pkgbases=()
 | 
				
			||||||
 | 
					    local pkgbase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local ADOPT=0
 | 
				
			||||||
 | 
					    local ORPHAN=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local packager_name
 | 
				
			||||||
 | 
					    local maintainer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local -r orphan="orphan"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local RUNCMD=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_admin_maintainer_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -a|--adopt)
 | 
				
			||||||
 | 
					                ADOPT=1
 | 
				
			||||||
 | 
					                RUNCMD+=" $1"
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -o|--orphan)
 | 
				
			||||||
 | 
					                ORPHAN=1
 | 
				
			||||||
 | 
					                RUNCMD+=" $1"
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --)
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -*)
 | 
				
			||||||
 | 
					                die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pkgbases+=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    load_makepkg_config
 | 
				
			||||||
 | 
					    if [[ -n ${PACKAGER} ]]; then
 | 
				
			||||||
 | 
					        if ! packager_name=$(get_packager_name "${PACKAGER}") || \
 | 
				
			||||||
 | 
					            ! packager_email=$(get_packager_email "${PACKAGER}"); then
 | 
				
			||||||
 | 
					            die "invalid PACKAGER format '${PACKAGER}' in makepkg.conf"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        if ! is_packager_name_valid "${packager_name}"; then
 | 
				
			||||||
 | 
					            die "invalid PACKAGER '${PACKAGER}' in makepkg.conf"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    maintainer="maintainer-${packager_name}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n ${GIT_TOKEN} ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # 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}" "${RUNCMD}" ::: "${pkgbases[@]}"; then
 | 
				
			||||||
 | 
					                die 'Failed to manange some packages, please check the output'
 | 
				
			||||||
 | 
					                exit 1
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					            local gitname
 | 
				
			||||||
 | 
					            gitname=$(get_compliant_name "${pkgbase}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (( ADOPT )); then
 | 
				
			||||||
 | 
					                if ! add_topic "${gitname}" "$maintainer"; then
 | 
				
			||||||
 | 
					                    warning "failed to add topic: $maintainer"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					                if ! remove_topic "${gitname}" "$orphan"; then
 | 
				
			||||||
 | 
					                    warning "failed to remove topic: $orphan"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (( ORPHAN )); then
 | 
				
			||||||
 | 
					                if ! add_topic "${gitname}" "$orphan"; then
 | 
				
			||||||
 | 
					                    warning "failed to add topic: $orphan"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					                if ! remove_topic "${gitname}" "$maintainer"; then
 | 
				
			||||||
 | 
					                    warning "failed to remove topic: $maintainer"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -14,8 +14,8 @@ artixpkg_admin_query_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -m, --maintainer=NAME      Query for packages of the named maintainer
 | 
					        -m, --maintainer NAME      Query for packages of the named maintainer
 | 
				
			||||||
        -t, --topic=NAME           Query for packages of the named topic
 | 
					        -t, --topic NAME           Query for packages of the named topic
 | 
				
			||||||
        -h, --help                 Show this help text
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
@@ -47,19 +47,11 @@ artixpkg_admin_query() {
 | 
				
			|||||||
                MAINTAINER="$2"
 | 
					                MAINTAINER="$2"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --maintainer=*)
 | 
					 | 
				
			||||||
                MAINTAINER="${1#*=}"
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            -t|--topic)
 | 
					            -t|--topic)
 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                TOPIC="$2"
 | 
					                TOPIC="$2"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --topic=*)
 | 
					 | 
				
			||||||
                TOPIC="${1#*=}"
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            --)
 | 
					            --)
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
                break
 | 
					                break
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										154
									
								
								src/lib/pkg/admin/team.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								src/lib/pkg/admin/team.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,154 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_ADMIN_TEAM_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_ADMIN_TEAM_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_team_usage() {
 | 
				
			||||||
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -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[@]})
 | 
				
			||||||
 | 
					        -r, --remove NAME           Remove team from repo
 | 
				
			||||||
 | 
					                                    Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
 | 
				
			||||||
 | 
					        -h, --help                  Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} --check libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --list libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --add ${ARTIX_TEAMS[1]} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --remove ${ARTIX_TEAMS[3]} libfoo
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_team() {
 | 
				
			||||||
 | 
					    if (( $# < 1 )); then
 | 
				
			||||||
 | 
					        artixpkg_admin_team_usage
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # options
 | 
				
			||||||
 | 
					    local CHECK=0
 | 
				
			||||||
 | 
					    local LIST=0
 | 
				
			||||||
 | 
					    local TEAM_ADD
 | 
				
			||||||
 | 
					    local TEAM_RM
 | 
				
			||||||
 | 
					    local pkgbases=()
 | 
				
			||||||
 | 
					    local pkgbase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_admin_team_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -a|--add)
 | 
				
			||||||
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					                TEAM_ADD="$2"
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -r|--remove)
 | 
				
			||||||
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					                TEAM_RM="$2"
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -c|--check)
 | 
				
			||||||
 | 
					                CHECK=1
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -l|--list)
 | 
				
			||||||
 | 
					                LIST=1
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --)
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -*)
 | 
				
			||||||
 | 
					                die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pkgbases+=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n ${GIT_TOKEN} ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if [[ -d "${pkgbase}" ]];then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if [[ ! -d "${pkgbase}/.git" ]]; then
 | 
				
			||||||
 | 
					                    error "Not a Git repository: ${pkgbase}"
 | 
				
			||||||
 | 
					                    continue
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					                ( cd "${pkgbase}" || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    local gitname
 | 
				
			||||||
 | 
					                    gitname=$(get_compliant_name "${pkgbase}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (( CHECK )); then
 | 
				
			||||||
 | 
					                        local team
 | 
				
			||||||
 | 
					                        team=$(team_from_yaml)
 | 
				
			||||||
 | 
					                        res=$(check_repo_team  "${gitname}" "${team}" | yq -rP '.name')
 | 
				
			||||||
 | 
					                        if [[ "$res" == "null" ]]; then
 | 
				
			||||||
 | 
					                            error "[%s] does not have team (%s) assigned" "$pkgbase" "${team}"
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                            msg "[%s] has team (%s) assigned" "$pkgbase" "${team}"
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (( LIST )); then
 | 
				
			||||||
 | 
					                        list_repo_teams "${gitname}" | yq -rP '.[] | .name'
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if [[ -n ${TEAM_ADD} ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if ! add_team_to_repo "${gitname}" "${TEAM_ADD}"; then
 | 
				
			||||||
 | 
					                            warning "failed to add team: ${TEAM_ADD}"
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if [[ "$(team_from_yaml)" != "${TEAM_ADD}" ]] \
 | 
				
			||||||
 | 
					                        || [[ "$(team_from_yaml)" == "null" ]]; then
 | 
				
			||||||
 | 
					                            update_yaml_team "${TEAM_ADD}"
 | 
				
			||||||
 | 
					                            git add "${REPO_DB}"
 | 
				
			||||||
 | 
					                            git commit -m "Set team ${TEAM_ADD}"
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if [[ -n ${TEAM_RM} ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if ! remove_team_from_repo "${gitname}" "${TEAM_RM}"; then
 | 
				
			||||||
 | 
					                            warning "failed to add team: ${TEAM_RM}"
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    msg "Querying ${pkgbase} ..."
 | 
				
			||||||
 | 
					                    if ! show_db; then
 | 
				
			||||||
 | 
					                        warning "Could not query ${REPO_DB}"
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -14,16 +14,18 @@ artixpkg_admin_topic_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -a, --add              Add a topic
 | 
					        -a, --add NAME             Add a topic to repo
 | 
				
			||||||
        -d, --del              Delete a topic
 | 
					        -r, --remove NAME          Remove a topic from repo
 | 
				
			||||||
 | 
					        -d, --delete               Delete all topics from repo
 | 
				
			||||||
        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
					        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
        -h, --help                 Show this help text
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} --add mytopic libfoo
 | 
					        $ ${COMMAND} --add mytopic libfoo
 | 
				
			||||||
        $ ${COMMAND} --del mytopic libbar
 | 
					        $ ${COMMAND} --remove mytopic libbar
 | 
				
			||||||
        $ ${COMMAND} --add mytopic libfoo libbar
 | 
					        $ ${COMMAND} --add mytopic libfoo libbar
 | 
				
			||||||
        $ ${COMMAND} --del mytopic libfoo libbar
 | 
					        $ ${COMMAND} --remove mytopic libfoo libbar
 | 
				
			||||||
 | 
					        $ ${COMMAND} --delete libfoo
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,8 +42,9 @@ artixpkg_admin_topic() {
 | 
				
			|||||||
    local pkgbase
 | 
					    local pkgbase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local ADD_TOPIC
 | 
					    local ADD_TOPIC
 | 
				
			||||||
    local DEL_TOPIC
 | 
					    local RM_TOPIC
 | 
				
			||||||
    local ADD=0
 | 
					    local ADD=0
 | 
				
			||||||
 | 
					    local RM=0
 | 
				
			||||||
    local DEL=0
 | 
					    local DEL=0
 | 
				
			||||||
    local jobs=
 | 
					    local jobs=
 | 
				
			||||||
    jobs=$(nproc)
 | 
					    jobs=$(nproc)
 | 
				
			||||||
@@ -50,36 +53,29 @@ artixpkg_admin_topic() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    while (( $# )); do
 | 
					    while (( $# )); do
 | 
				
			||||||
        case $1 in
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_admin_topic_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
            -a|--add)
 | 
					            -a|--add)
 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                ADD_TOPIC="$2"
 | 
					                ADD_TOPIC="$2"
 | 
				
			||||||
                ADD=1
 | 
					                ADD=1
 | 
				
			||||||
                RUNCMD+=" -a ${ADD_TOPIC}"
 | 
					                RUNCMD+=" $1 ${ADD_TOPIC}"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --add=*)
 | 
					            -r|--remove)
 | 
				
			||||||
                ADD_TOPIC="${1#*=}"
 | 
					 | 
				
			||||||
                ADD=1
 | 
					 | 
				
			||||||
                RUNCMD+=" --add=${ADD_TOPIC}"
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            -d|--del)
 | 
					 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                DEL_TOPIC="$2"
 | 
					                RM_TOPIC="$2"
 | 
				
			||||||
                DEL=1
 | 
					                RM=1
 | 
				
			||||||
                RUNCMD+=" -d ${DEL_TOPIC}"
 | 
					                RUNCMD+=" $1 ${RM_TOPIC}"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --del=*)
 | 
					            -d|--delete)
 | 
				
			||||||
                DEL_TOPIC="${1#*=}"
 | 
					 | 
				
			||||||
                DEL=1
 | 
					                DEL=1
 | 
				
			||||||
                RUNCMD+=" --del=${DEL_TOPIC}"
 | 
					                RUNCMD+=" $1"
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            -h|--help)
 | 
					 | 
				
			||||||
                artixpkg_admin_topic_usage
 | 
					 | 
				
			||||||
                exit 0
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            -j|--jobs)
 | 
					            -j|--jobs)
 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                jobs=$2
 | 
					                jobs=$2
 | 
				
			||||||
@@ -115,21 +111,25 @@ artixpkg_admin_topic() {
 | 
				
			|||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for pkgbase in "${pkgbases[@]}"; do
 | 
					        for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					            local gitname
 | 
				
			||||||
 | 
					            gitname=$(get_compliant_name "${pkgbase}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # topics meta
 | 
					            # topics meta
 | 
				
			||||||
            if (( ADD )); then
 | 
					            if (( ADD )); then
 | 
				
			||||||
                local gitname
 | 
					 | 
				
			||||||
                gitname=$(get_compliant_name "${pkgbase}")
 | 
					 | 
				
			||||||
                if ! add_topic "${gitname}" "${ADD_TOPIC}"; then
 | 
					                if ! add_topic "${gitname}" "${ADD_TOPIC}"; then
 | 
				
			||||||
                    warning "failed to add the topic: ${ADD_TOPIC}"
 | 
					                    warning "failed to add topic: ${ADD_TOPIC}"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (( RM )); then
 | 
				
			||||||
 | 
					                if ! remove_topic "${gitname}" "${RM_TOPIC}"; then
 | 
				
			||||||
 | 
					                    warning "failed to remove topic: ${RM_TOPIC}"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (( DEL )); then
 | 
					            if (( DEL )); then
 | 
				
			||||||
                local gitname
 | 
					                if ! remove_all_topics "${gitname}" "${GIT_ORG}"; then
 | 
				
			||||||
                gitname=$(get_compliant_name "${pkgbase}")
 | 
					                    warning "failed to delete all topics: ${gitname}"
 | 
				
			||||||
                if ! remove_topic "${gitname}" "${DEL_TOPIC}"; then
 | 
					 | 
				
			||||||
                    warning "failed to delete the topic: ${DEL_TOPIC}"
 | 
					 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,6 @@ artixpkg_admin_transfer() {
 | 
				
			|||||||
    # options
 | 
					    # options
 | 
				
			||||||
    local pkgbases=()
 | 
					    local pkgbases=()
 | 
				
			||||||
    local pkgbase
 | 
					    local pkgbase
 | 
				
			||||||
    local waste_org="landfill"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
					    local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -60,7 +59,12 @@ artixpkg_admin_transfer() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if [[ -n ${GIT_TOKEN} ]]; then
 | 
					    if [[ -n ${GIT_TOKEN} ]]; then
 | 
				
			||||||
        for pkgbase in "${pkgbases[@]}"; do
 | 
					        for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
            transfer_repo "${pkgbase}" "${waste_org}"
 | 
					            local gitname
 | 
				
			||||||
 | 
					            gitname=$(get_compliant_name "${pkgbase}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            transfer_repo "${gitname}" "${GIT_ORG_ARCHIVE}"
 | 
				
			||||||
 | 
					            archive_repo "${gitname}" "${GIT_ORG_ARCHIVE}"
 | 
				
			||||||
 | 
					            remove_all_topics "${gitname}" "${GIT_ORG_ARCHIVE}"
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,7 @@ add_team_to_repo() {
 | 
				
			|||||||
    local pkgbase="$1"
 | 
					    local pkgbase="$1"
 | 
				
			||||||
    local team="$2"
 | 
					    local team="$2"
 | 
				
			||||||
    local url
 | 
					    local url
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$pkgbase/teams/$team"
 | 
					    url="${API_URL}/repos/${GIT_ORG}/$pkgbase/teams/$team"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Adding team ($team) to package repo [$pkgbase]"
 | 
					    stat_busy "Adding team ($team) to package repo [$pkgbase]"
 | 
				
			||||||
    api_put "$url" \
 | 
					    api_put "$url" \
 | 
				
			||||||
@@ -50,7 +50,7 @@ remove_team_from_repo() {
 | 
				
			|||||||
    local pkgbase="$1"
 | 
					    local pkgbase="$1"
 | 
				
			||||||
    local team="$2"
 | 
					    local team="$2"
 | 
				
			||||||
    local url
 | 
					    local url
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$pkgbase/teams/$team"
 | 
					    url="${API_URL}/repos/${GIT_ORG}/$pkgbase/teams/$team"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Removing team ($team) from package repo [$pkgbase]"
 | 
					    stat_busy "Removing team ($team) from package repo [$pkgbase]"
 | 
				
			||||||
    api_delete "$url" \
 | 
					    api_delete "$url" \
 | 
				
			||||||
@@ -62,7 +62,7 @@ remove_team_from_repo() {
 | 
				
			|||||||
create_repo() {
 | 
					create_repo() {
 | 
				
			||||||
    local pkgbase="$1"
 | 
					    local pkgbase="$1"
 | 
				
			||||||
    local url json
 | 
					    local url json
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/org/${GIT_ORG}/repos"
 | 
					    url="${API_URL}/org/${GIT_ORG}/repos"
 | 
				
			||||||
    json="{ \"auto_init\": true, \"name\": \"$pkgbase\", \"gitignores\": \"ArtixLinuxPackages\", \"readme\": \"Default\" }"
 | 
					    json="{ \"auto_init\": true, \"name\": \"$pkgbase\", \"gitignores\": \"ArtixLinuxPackages\", \"readme\": \"Default\" }"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Create package repo [$pkgbase] in org (${GIT_ORG})"
 | 
					    stat_busy "Create package repo [$pkgbase] in org (${GIT_ORG})"
 | 
				
			||||||
@@ -78,8 +78,8 @@ transfer_repo() {
 | 
				
			|||||||
    local pkgbase="$1"
 | 
					    local pkgbase="$1"
 | 
				
			||||||
    local new_owner="$2"
 | 
					    local new_owner="$2"
 | 
				
			||||||
    local json url
 | 
					    local json url
 | 
				
			||||||
    json="{ \"new_owner\": \"$new_owner\",  \"team_ids\": [] }"
 | 
					    json="{ \"new_owner\": \"$new_owner\",  \"team_ids\": [], \"archived\": \"true\" }"
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$pkgbase/transfer"
 | 
					    url="${API_URL}/repos/${GIT_ORG}/$pkgbase/transfer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Transfer package repo [$pkgbase] in org ($new_owner)"
 | 
					    stat_busy "Transfer package repo [$pkgbase] in org ($new_owner)"
 | 
				
			||||||
    api_post "$url" \
 | 
					    api_post "$url" \
 | 
				
			||||||
@@ -92,7 +92,7 @@ transfer_repo() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
list_all_repos() {
 | 
					list_all_repos() {
 | 
				
			||||||
    local url
 | 
					    local url
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/orgs/${GIT_ORG}/repos?limit=10000"
 | 
					    url="${API_URL}/orgs/${GIT_ORG}/repos?limit=10000"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Query all packages"
 | 
					    stat_busy "Query all packages"
 | 
				
			||||||
    api_get "$url" \
 | 
					    api_get "$url" \
 | 
				
			||||||
@@ -104,7 +104,7 @@ add_topic() {
 | 
				
			|||||||
    local url
 | 
					    local url
 | 
				
			||||||
    local pkgbase="$1"
 | 
					    local pkgbase="$1"
 | 
				
			||||||
    local topic="$2"
 | 
					    local topic="$2"
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$pkgbase/topics/$topic"
 | 
					    url="${API_URL}/repos/${GIT_ORG}/$pkgbase/topics/$topic"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Add topic ($topic) to [$pkgbase]"
 | 
					    stat_busy "Add topic ($topic) to [$pkgbase]"
 | 
				
			||||||
    api_put "$url" \
 | 
					    api_put "$url" \
 | 
				
			||||||
@@ -117,7 +117,7 @@ remove_topic() {
 | 
				
			|||||||
    local url
 | 
					    local url
 | 
				
			||||||
    local pkgbase="$1"
 | 
					    local pkgbase="$1"
 | 
				
			||||||
    local topic="$2"
 | 
					    local topic="$2"
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$pkgbase/topics/$topic"
 | 
					    url="${API_URL}/repos/${GIT_ORG}/$pkgbase/topics/$topic"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Remove topic ($topic) from [$pkgbase]"
 | 
					    stat_busy "Remove topic ($topic) from [$pkgbase]"
 | 
				
			||||||
    api_delete "$url" \
 | 
					    api_delete "$url" \
 | 
				
			||||||
@@ -128,8 +128,10 @@ remove_topic() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
search_topic() {
 | 
					search_topic() {
 | 
				
			||||||
    local search="$1"
 | 
					    local search="$1"
 | 
				
			||||||
    local url
 | 
					    local url args
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/repos/search?q=${search}&topic=true&includeDesc=false&private=false&is_private=false&template=false&archived=false&order=asc&limit=10000"
 | 
					    args="topic=true&includeDesc=false&private=false&is_private=false"
 | 
				
			||||||
 | 
					    args+="&template=false&archived=false&order=asc&limit=10000"
 | 
				
			||||||
 | 
					    url="${API_URL}/repos/search?q=${search}&${args}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Query for topic (${search})"
 | 
					    stat_busy "Query for topic (${search})"
 | 
				
			||||||
    api_get "$url" \
 | 
					    api_get "$url" \
 | 
				
			||||||
@@ -137,4 +139,64 @@ search_topic() {
 | 
				
			|||||||
    stat_done
 | 
					    stat_done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					list_repo_teams() {
 | 
				
			||||||
 | 
					    local pkgbase="$1"
 | 
				
			||||||
 | 
					    local url
 | 
				
			||||||
 | 
					    url="${API_URL}/repos/${GIT_ORG}/$pkgbase/teams"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    stat_busy "List repo teams [$pkgbase]"
 | 
				
			||||||
 | 
					    api_get "$url" \
 | 
				
			||||||
 | 
					        -H 'accept: application/json' \
 | 
				
			||||||
 | 
					        -H "Authorization: token ${GIT_TOKEN}"
 | 
				
			||||||
 | 
					    stat_done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check_repo_team() {
 | 
				
			||||||
 | 
					    local pkgbase="$1"
 | 
				
			||||||
 | 
					    local team="$2"
 | 
				
			||||||
 | 
					    local url
 | 
				
			||||||
 | 
					    url="${API_URL}/repos/${GIT_ORG}/$pkgbase/teams/$team"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    stat_busy "Check if team ($team) is assigned to [$pkgbase]"
 | 
				
			||||||
 | 
					    api_get "$url" \
 | 
				
			||||||
 | 
					        -H 'accept: application/json' \
 | 
				
			||||||
 | 
					        -H "Authorization: token ${GIT_TOKEN}"
 | 
				
			||||||
 | 
					    stat_done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					archive_repo() {
 | 
				
			||||||
 | 
					    local pkgbase="$1"
 | 
				
			||||||
 | 
					    local org="$2"
 | 
				
			||||||
 | 
					    local url
 | 
				
			||||||
 | 
					    local json
 | 
				
			||||||
 | 
					    url="${API_URL}/repos/$org/$pkgbase"
 | 
				
			||||||
 | 
					    json="{ \"archived\": true }"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    stat_busy "Archive repo [$pkgbase] in org ($org)"
 | 
				
			||||||
 | 
					    api_patch "$url" \
 | 
				
			||||||
 | 
					        -H "accept: application/json" \
 | 
				
			||||||
 | 
					        -H "content-type: application/json" \
 | 
				
			||||||
 | 
					        -H "Authorization: token ${GIT_TOKEN}" \
 | 
				
			||||||
 | 
					        -d "$json"
 | 
				
			||||||
 | 
					    stat_done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					remove_all_topics() {
 | 
				
			||||||
 | 
					    local pkgbase="$1"
 | 
				
			||||||
 | 
					    local org="$2"
 | 
				
			||||||
 | 
					    local url
 | 
				
			||||||
 | 
					    local json
 | 
				
			||||||
 | 
					    url="${API_URL}/repos/$org/$pkgbase/topics"
 | 
				
			||||||
 | 
					    json="{ \"topics\": [] }"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    stat_busy "Delete all topics from [$pkgbase]"
 | 
				
			||||||
 | 
					    api_put "$url" \
 | 
				
			||||||
 | 
					        -H 'accept: application/json' \
 | 
				
			||||||
 | 
					        -H 'Content-Type: application/json' \
 | 
				
			||||||
 | 
					        -H "Authorization: token ${GIT_TOKEN}" \
 | 
				
			||||||
 | 
					        -d "$json"
 | 
				
			||||||
 | 
					    stat_done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#}}}
 | 
					#}}}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										55
									
								
								src/lib/pkg/ci.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								src/lib/pkg/ci.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					#!/hint/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_CI_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_CI_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_ci_usage() {
 | 
				
			||||||
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [COMMAND] [OPTIONS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    COMMANDS
 | 
				
			||||||
 | 
					        config         Configure ci and build agent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -h, --help     Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} config libfoo
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_ci() {
 | 
				
			||||||
 | 
					    if (( $# < 1 )); then
 | 
				
			||||||
 | 
					        artixpkg_ci_usage
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # option checking
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					        -h|--help)
 | 
				
			||||||
 | 
					            artixpkg_ci_usage
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        config)
 | 
				
			||||||
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            # shellcheck source=src/lib/pkg/ci/config.sh
 | 
				
			||||||
 | 
					            source "${LIBDIR}"/pkg/ci/config.sh
 | 
				
			||||||
 | 
					            artixpkg_ci_config "$@"
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        -*)
 | 
				
			||||||
 | 
					            die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        *)
 | 
				
			||||||
 | 
					            die "invalid command: %s" "$1"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										140
									
								
								src/lib/pkg/ci/config.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								src/lib/pkg/ci/config.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,140 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_CI_CONFIG_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_CI_CONFIG_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/pkg/db/db.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/pkg/db/db.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_ci_config_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[@]})
 | 
				
			||||||
 | 
					        -s, --switch           Switch agent
 | 
				
			||||||
 | 
					        -j, --jobs N           Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
 | 
					        -h, --help             Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} --agent ${AGENTS[1]} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --switch --agent ${AGENTS[1]} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} *
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_ci_config() {
 | 
				
			||||||
 | 
					    # options
 | 
				
			||||||
 | 
					    local jobs=
 | 
				
			||||||
 | 
					    jobs=$(nproc)
 | 
				
			||||||
 | 
					    local paths=()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local AGENT=${AGENTS[0]}
 | 
				
			||||||
 | 
					    local SWITCH=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # variables
 | 
				
			||||||
 | 
					    local path realpath pkgbase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					        -h|--help)
 | 
				
			||||||
 | 
					            artixpkg_ci_config_usage
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        -s|--switch)
 | 
				
			||||||
 | 
					            SWITCH=1
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        -a|--agent)
 | 
				
			||||||
 | 
					            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					            AGENT="$2"
 | 
				
			||||||
 | 
					            shift 2
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        -j|--jobs)
 | 
				
			||||||
 | 
					            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					            jobs=$2
 | 
				
			||||||
 | 
					            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_ci_config_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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -17,6 +17,19 @@ readonly ARTIX_DB=(
 | 
				
			|||||||
    galaxy
 | 
					    galaxy
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					readonly ARTIX_DB_MAP=(
 | 
				
			||||||
 | 
					    goblins
 | 
				
			||||||
 | 
					    gremlins
 | 
				
			||||||
 | 
					    stable
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					readonly ARTIX_TEAMS=(
 | 
				
			||||||
 | 
					    "${ARTIX_DB[2]}"
 | 
				
			||||||
 | 
					    "${ARTIX_DB[5]}"
 | 
				
			||||||
 | 
					    "${ARTIX_DB[8]}"
 | 
				
			||||||
 | 
					    "${ARTIX_DB[11]}"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
readonly REPO_DB='.artixlinux/pkgbase.yaml'
 | 
					readonly REPO_DB='.artixlinux/pkgbase.yaml'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
readonly REPO_CI='.artixlinux/Jenkinsfile'
 | 
					readonly REPO_CI='.artixlinux/Jenkinsfile'
 | 
				
			||||||
@@ -100,6 +113,8 @@ create_repo_db() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    yq -n '"---"' > "${REPO_DB}"
 | 
					    yq -n '"---"' > "${REPO_DB}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    yq -P '.team = null' -i "${REPO_DB}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    yq -P 'with(
 | 
					    yq -P 'with(
 | 
				
			||||||
        .pkgbase;
 | 
					        .pkgbase;
 | 
				
			||||||
            .name = null |
 | 
					            .name = null |
 | 
				
			||||||
@@ -132,6 +147,31 @@ create_repo_db() {
 | 
				
			|||||||
    done
 | 
					    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
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					update_yaml_team() {
 | 
				
			||||||
 | 
					    local team="${1:-${ARTIX_DB[5]}}"
 | 
				
			||||||
 | 
					    team="$team" yq -P '.team = env(team)' -i "${REPO_DB}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update_yaml_base() {
 | 
					update_yaml_base() {
 | 
				
			||||||
    local version
 | 
					    local version
 | 
				
			||||||
    local name
 | 
					    local name
 | 
				
			||||||
@@ -273,19 +313,37 @@ update_yaml_move() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
show_agent() {
 | 
					show_agent() {
 | 
				
			||||||
    local agent="orion"
 | 
					    local agent="${AGENTS[0]}"
 | 
				
			||||||
    if grep @galaxy "${REPO_CI}" &>/dev/null; then
 | 
					    if grep @${AGENTS[1]} "${REPO_CI}" &>/dev/null; then
 | 
				
			||||||
        agent="taurus"
 | 
					        agent="${AGENTS[1]}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    msg2 "agent: %s" "$agent"
 | 
					    msg2 "agent: %s" "$agent"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					team_from_yaml() {
 | 
				
			||||||
 | 
					    local team
 | 
				
			||||||
 | 
					    team=$(yq -rP '.team' "${REPO_DB}")
 | 
				
			||||||
 | 
					    printf "$team"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					auto_detect() {
 | 
				
			||||||
 | 
					    local team
 | 
				
			||||||
 | 
					    for repo in "${ARTIX_TEAMS[@]}"; do
 | 
				
			||||||
 | 
					        local _r res
 | 
				
			||||||
 | 
					        res=$(_r=".$repo" yq -rP '.repos | eval(strenv(_r)) | .version' "${REPO_DB}")
 | 
				
			||||||
 | 
					        if [[ "${res}" != "null" ]]; then
 | 
				
			||||||
 | 
					            team=${repo}
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    printf "%s\n" "$team"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
show_db() {
 | 
					show_db() {
 | 
				
			||||||
    show_agent
 | 
					    show_agent
 | 
				
			||||||
    if ! yq -r "${REPO_DB}" 1>/dev/null 2>/dev/null; then
 | 
					    if ! yq -r "${REPO_DB}" 1>/dev/null 2>/dev/null; then
 | 
				
			||||||
        die "${REPO_DB} invalid!"
 | 
					        die "${REPO_DB} invalid!"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    yq -rP '. | with_entries(select(.value.name))' "${REPO_DB}"
 | 
					    yq -rP 'with_entries(select(.key == "team" or .key == "pkgbase"))' "${REPO_DB}"
 | 
				
			||||||
    yq -rP '. | .repos | with_entries(select(.value.version))' "${REPO_DB}"
 | 
					    yq -rP '. | .repos | with_entries(select(.value.version))' "${REPO_DB}"
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -297,3 +355,24 @@ show_srcinfo_base() {
 | 
				
			|||||||
show_srcinfo_pkgs() {
 | 
					show_srcinfo_pkgs() {
 | 
				
			||||||
    pkg2yaml . | yq '.pkgnames'
 | 
					    pkg2yaml . | yq '.pkgnames'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write_jenkinsfile() {
 | 
				
			||||||
 | 
					    printf "@Library('artix-ci@%s') import org.artixlinux.RepoPackage\n" "${1}" > "${REPO_CI}"
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        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}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,10 @@ ARTOOLS_INCLUDE_GIT_CLONE_SH=1
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# shellcheck source=src/lib/pkg/git/config.sh
 | 
					# shellcheck source=src/lib/pkg/git/config.sh
 | 
				
			||||||
source "${LIBDIR}"/pkg/git/config.sh
 | 
					source "${LIBDIR}"/pkg/git/config.sh
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/pkg/ci/config.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/pkg/ci/config.sh
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/pkg/admin/team.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/pkg/admin/team.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -17,21 +21,23 @@ artixpkg_git_clone_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -m, --maintainer=NAME      Clone all packages of the named maintainer
 | 
					        -m, --maintainer NAME      Clone all packages of the named maintainer
 | 
				
			||||||
        --protocol https           Clone the repository over https
 | 
					        -s, --search TOPIC         Clone all packages of the named topic
 | 
				
			||||||
        -t, --topic=NAME           Clone all packages of the named topic
 | 
					        -a, --agent NAME           Set the CI agent (default: ${AGENTS[0]})
 | 
				
			||||||
        -a, --agent=NAME           Set the CI agent (default: official)
 | 
					                                   Possible values: $(yaml_array ${AGENTS[@]})
 | 
				
			||||||
                                   Possible values: [official, galaxy]
 | 
					        -t, --team NAME            Assign team name (default: ${ARTIX_TEAMS[1]})
 | 
				
			||||||
 | 
					                                   Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
 | 
				
			||||||
        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
					        -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
 | 
					        --all                      Clone all existing packages, useful for cache warming
 | 
				
			||||||
        -h, --help                 Show this help text
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} libfoo linux libbar
 | 
					        $ ${COMMAND} libfoo linux libbar
 | 
				
			||||||
        $ ${COMMAND} --maintainer tux
 | 
					        $ ${COMMAND} --maintainer tux
 | 
				
			||||||
        $ ${COMMAND} --topic mytopic
 | 
					        $ ${COMMAND} --search mytopic
 | 
				
			||||||
        $ ${COMMAND} -j 8 --topic mytopic
 | 
					        $ ${COMMAND} -j 8 --search mytopic
 | 
				
			||||||
        $ ${COMMAND} --agent galaxy libfoo
 | 
					        $ ${COMMAND} --agent ${AGENTS[1]} libfoo
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -48,7 +54,9 @@ artixpkg_git_clone() {
 | 
				
			|||||||
    local CLONE_ALL=0
 | 
					    local CLONE_ALL=0
 | 
				
			||||||
    local MAINTAINER=
 | 
					    local MAINTAINER=
 | 
				
			||||||
    local TOPIC=
 | 
					    local TOPIC=
 | 
				
			||||||
    local CONFIGURE_OPTIONS=()
 | 
					    local CONFIG_OPTS=()
 | 
				
			||||||
 | 
					    local AGENT_OPTS=()
 | 
				
			||||||
 | 
					    local TEAM_OPTS=()
 | 
				
			||||||
    local jobs=
 | 
					    local jobs=
 | 
				
			||||||
    jobs=$(nproc)
 | 
					    jobs=$(nproc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -62,7 +70,7 @@ artixpkg_git_clone() {
 | 
				
			|||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --protocol=https)
 | 
					            --protocol=https)
 | 
				
			||||||
                GIT_REPO_BASE_URL="${GIT_HTTPS}/"
 | 
					                GIT_REPO_BASE_URL="${GIT_HTTPS}/"
 | 
				
			||||||
                CONFIGURE_OPTIONS+=("$1")
 | 
					                CONFIG_OPTS+=("$1")
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --protocol)
 | 
					            --protocol)
 | 
				
			||||||
@@ -72,7 +80,7 @@ artixpkg_git_clone() {
 | 
				
			|||||||
                else
 | 
					                else
 | 
				
			||||||
                    die "unsupported protocol: %s" "$2"
 | 
					                    die "unsupported protocol: %s" "$2"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
                CONFIGURE_OPTIONS+=("$1" "$2")
 | 
					                CONFIG_OPTS+=("$1" "$2")
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            -m|--maintainer)
 | 
					            -m|--maintainer)
 | 
				
			||||||
@@ -80,28 +88,21 @@ artixpkg_git_clone() {
 | 
				
			|||||||
                MAINTAINER="$2"
 | 
					                MAINTAINER="$2"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --maintainer=*)
 | 
					            -s|--search)
 | 
				
			||||||
                MAINTAINER="${1#*=}"
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            -t|--topic)
 | 
					 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                TOPIC="$2"
 | 
					                TOPIC="$2"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --topic=*)
 | 
					            -t|--team)
 | 
				
			||||||
                TOPIC="${1#*=}"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                shift
 | 
					                TEAM_OPTS=("--add" "$2")
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            -a|--agent)
 | 
					            -a|--agent)
 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                CONFIGURE_OPTIONS+=("$1" "$2")
 | 
					                AGENT_OPTS=("$1" "$2")
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --agent=*)
 | 
					 | 
				
			||||||
                CONFIGURE_OPTIONS+=("${1}")
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            --all)
 | 
					            --all)
 | 
				
			||||||
                CLONE_ALL=1
 | 
					                CLONE_ALL=1
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
@@ -167,6 +168,8 @@ artixpkg_git_clone() {
 | 
				
			|||||||
            warning "Skip cloning ${pkgbase}: Directory exists"
 | 
					            warning "Skip cloning ${pkgbase}: Directory exists"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        artixpkg_git_config "${CONFIGURE_OPTIONS[@]}" "${pkgbase}"
 | 
					        artixpkg_git_config "${CONFIG_OPTS[@]}" "${pkgbase}"
 | 
				
			||||||
 | 
					        artixpkg_ci_config "${AGENT_OPTS[@]}" "${pkgbase}"
 | 
				
			||||||
 | 
					        artixpkg_admin_team "${TEAM_OPTS[@]}" "${pkgbase}"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,98 +5,27 @@
 | 
				
			|||||||
[[ -z ${ARTOOLS_INCLUDE_GIT_CONFIG_SH:-} ]] || return 0
 | 
					[[ -z ${ARTOOLS_INCLUDE_GIT_CONFIG_SH:-} ]] || return 0
 | 
				
			||||||
ARTOOLS_INCLUDE_GIT_CONFIG_SH=1
 | 
					ARTOOLS_INCLUDE_GIT_CONFIG_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# shellcheck source=src/lib/pkg/db/db.sh
 | 
					# shellcheck source=src/lib/pkg/packager.sh
 | 
				
			||||||
source "${LIBDIR}"/pkg/db/db.sh
 | 
					source "${LIBDIR}"/pkg/packager.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
commit_ci(){
 | 
					 | 
				
			||||||
    [[ -d .artixlinux ]] || mkdir .artixlinux
 | 
					 | 
				
			||||||
    if [[ ${AGENT} == "${ARTIX_DB[11]}" ]]; then
 | 
					 | 
				
			||||||
        printf "@Library('artix-ci@%s') import org.artixlinux.RepoPackage\n" "${AGENT}" > "${REPO_CI}"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${REPO_CI}"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        printf '\n'
 | 
					 | 
				
			||||||
        printf 'PackagePipeline(new RepoPackage(this))\n'
 | 
					 | 
				
			||||||
    } >> "${REPO_CI}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    git add "${REPO_CI}"
 | 
					 | 
				
			||||||
    git commit -m "initial ci commit"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
artixpkg_git_config_usage() {
 | 
					artixpkg_git_config_usage() {
 | 
				
			||||||
    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
    cat <<- _EOF_
 | 
					    cat <<- _EOF_
 | 
				
			||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -m, --maintainer       Set the maintainer topic via gitea api
 | 
					 | 
				
			||||||
        -d, --drop             Drop the maintainer topic via gitea api
 | 
					 | 
				
			||||||
        -a, --agent NAME       Set the CI agent (default: official)
 | 
					 | 
				
			||||||
                               Possible values: [official, galaxy]
 | 
					 | 
				
			||||||
        --protocol https       Configure remote url to use https
 | 
					        --protocol https       Configure remote url to use https
 | 
				
			||||||
        -j, --jobs N           Run up to N jobs in parallel (default: $(nproc))
 | 
					        -j, --jobs N           Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
        -h, --help             Show this help text
 | 
					        -h, --help             Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} --maintainer libfoo
 | 
					 | 
				
			||||||
        $ ${COMMAND} --agent galaxy libfoo
 | 
					 | 
				
			||||||
        $ ${COMMAND} --drop libfoo
 | 
					 | 
				
			||||||
        $ ${COMMAND} *
 | 
					        $ ${COMMAND} *
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_packager_name() {
 | 
					 | 
				
			||||||
    local packager=$1
 | 
					 | 
				
			||||||
    local packager_pattern="(.+) <(.+@.+)>"
 | 
					 | 
				
			||||||
    local name
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [[ ! $packager =~ $packager_pattern ]]; then
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    name=$(echo "${packager}"|sed -E "s/${packager_pattern}/\1/")
 | 
					 | 
				
			||||||
    printf "%s" "${name}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
get_packager_email() {
 | 
					 | 
				
			||||||
    local packager=$1
 | 
					 | 
				
			||||||
    local packager_pattern="(.+) <(.+@.+)>"
 | 
					 | 
				
			||||||
    local email
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [[ ! $packager =~ $packager_pattern ]]; then
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    email=$(echo "${packager}"|sed -E "s/${packager_pattern}/\2/")
 | 
					 | 
				
			||||||
    printf "%s" "${email}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
is_packager_name_valid() {
 | 
					 | 
				
			||||||
    local packager_name=$1
 | 
					 | 
				
			||||||
    if [[ -z ${packager_name} ]]; then
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
    elif [[ ${packager_name} == "John Tux" ]]; then
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
    elif [[ ${packager_name} == "Unknown Packager" ]]; then
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    return 0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
is_packager_email_official() {
 | 
					 | 
				
			||||||
    local packager_email=$1
 | 
					 | 
				
			||||||
    if [[ -z ${packager_email} ]]; then
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
    elif [[ $packager_email =~ .+@artixlinux.org ]]; then
 | 
					 | 
				
			||||||
        return 0
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    return 1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
artixpkg_git_config() {
 | 
					artixpkg_git_config() {
 | 
				
			||||||
    # options
 | 
					    # options
 | 
				
			||||||
    local GIT_REPO_BASE_URL=${GIT_HTTPS}
 | 
					    local GIT_REPO_BASE_URL=${GIT_HTTPS}
 | 
				
			||||||
@@ -107,13 +36,8 @@ artixpkg_git_config() {
 | 
				
			|||||||
    jobs=$(nproc)
 | 
					    jobs=$(nproc)
 | 
				
			||||||
    local paths=()
 | 
					    local paths=()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local SET_TOPIC=0
 | 
					 | 
				
			||||||
    local DROP_TOPIC=0
 | 
					 | 
				
			||||||
    local AGENT=
 | 
					 | 
				
			||||||
    local CI_ADDED=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # variables
 | 
					    # variables
 | 
				
			||||||
    local RUNCMD=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
					    local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
    local path realpath pkgbase
 | 
					    local path realpath pkgbase
 | 
				
			||||||
    local PACKAGER GPGKEY packager_name packager_email
 | 
					    local PACKAGER GPGKEY packager_name packager_email
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -123,27 +47,6 @@ artixpkg_git_config() {
 | 
				
			|||||||
            artixpkg_git_config_usage
 | 
					            artixpkg_git_config_usage
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        -m|--maintainer)
 | 
					 | 
				
			||||||
            SET_TOPIC=1
 | 
					 | 
				
			||||||
            RUNCMD+=" -m"
 | 
					 | 
				
			||||||
            shift
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
        -d|--drop)
 | 
					 | 
				
			||||||
            DROP_TOPIC=1
 | 
					 | 
				
			||||||
            RUNCMD+=" -d"
 | 
					 | 
				
			||||||
            shift
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
        -a|--agent)
 | 
					 | 
				
			||||||
            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					 | 
				
			||||||
            AGENT="$2"
 | 
					 | 
				
			||||||
            RUNCMD+=" -a ${AGENT}"
 | 
					 | 
				
			||||||
            shift 2
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
        --agent=*)
 | 
					 | 
				
			||||||
            AGENT="${1#*=}"
 | 
					 | 
				
			||||||
            RUNCMD+=" -a ${AGENT}"
 | 
					 | 
				
			||||||
            shift
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
        --protocol=https)
 | 
					        --protocol=https)
 | 
				
			||||||
            proto_force=1
 | 
					            proto_force=1
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
@@ -221,7 +124,7 @@ artixpkg_git_config() {
 | 
				
			|||||||
        if [[ -n ${BOLD} ]]; then
 | 
					        if [[ -n ${BOLD} ]]; then
 | 
				
			||||||
            export ARTOOLS_COLOR=always
 | 
					            export ARTOOLS_COLOR=always
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        if ! parallel --bar --jobs "${jobs}" "${RUNCMD}" ::: "${paths[@]}"; then
 | 
					        if ! parallel --bar --jobs "${jobs}" "${command}" ::: "${paths[@]}"; then
 | 
				
			||||||
            die 'Failed to configure some packages, please check the output'
 | 
					            die 'Failed to configure some packages, please check the output'
 | 
				
			||||||
            exit 1
 | 
					            exit 1
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
@@ -264,58 +167,6 @@ artixpkg_git_config() {
 | 
				
			|||||||
                git config user.signingKey "${GPGKEY}"
 | 
					                git config user.signingKey "${GPGKEY}"
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # topics meta
 | 
					 | 
				
			||||||
            if (( SET_TOPIC )); then
 | 
					 | 
				
			||||||
                if [[ -n ${GIT_TOKEN} ]]; then
 | 
					 | 
				
			||||||
                    local topic gitname
 | 
					 | 
				
			||||||
                    topic="maintainer-${packager_name}"
 | 
					 | 
				
			||||||
                    gitname=$(get_compliant_name "${pkgbase}")
 | 
					 | 
				
			||||||
                    if ! add_topic "${gitname}" "${topic}"; then
 | 
					 | 
				
			||||||
                        warning "failed to set the maintainer topic: ${topic}"
 | 
					 | 
				
			||||||
                    fi
 | 
					 | 
				
			||||||
                fi
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (( DROP_TOPIC )); then
 | 
					 | 
				
			||||||
                if [[ -n ${GIT_TOKEN} ]]; then
 | 
					 | 
				
			||||||
                    local topic gitname
 | 
					 | 
				
			||||||
                    topic="maintainer-${packager_name}"
 | 
					 | 
				
			||||||
                    gitname=$(get_compliant_name "${pkgbase}")
 | 
					 | 
				
			||||||
                    if ! remove_topic "${gitname}" "${topic}"; then
 | 
					 | 
				
			||||||
                        warning "failed to drop the maintainer topic: ${topic}"
 | 
					 | 
				
			||||||
                    fi
 | 
					 | 
				
			||||||
                fi
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if [[ ! -f ${REPO_CI} ]]; then
 | 
					 | 
				
			||||||
                msg "Adding ci support ..."
 | 
					 | 
				
			||||||
                commit_ci
 | 
					 | 
				
			||||||
                CI_ADDED=1
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if [[ -n ${AGENT} ]] && (( ! CI_ADDED )); then
 | 
					 | 
				
			||||||
                msg "Switching ci support for [%s] ..." "${AGENT}"
 | 
					 | 
				
			||||||
                commit_ci
 | 
					 | 
				
			||||||
            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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            msg "Querying ${pkgbase} ..."
 | 
					 | 
				
			||||||
            if ! show_db; then
 | 
					 | 
				
			||||||
                warning "Could not query ${REPO_DB}"
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,10 @@ ARTOOLS_INCLUDE_GIT_CREATE_SH=1
 | 
				
			|||||||
source "${LIBDIR}"/pkg/git/clone.sh
 | 
					source "${LIBDIR}"/pkg/git/clone.sh
 | 
				
			||||||
# shellcheck source=src/lib/pkg/git/config.sh
 | 
					# shellcheck source=src/lib/pkg/git/config.sh
 | 
				
			||||||
source "${LIBDIR}"/pkg/git/config.sh
 | 
					source "${LIBDIR}"/pkg/git/config.sh
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/pkg/ci/config.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/pkg/ci/config.sh
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/pkg/admin/team.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/pkg/admin/team.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -20,8 +24,10 @@ artixpkg_git_create_usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -c, --clone           Clone the Git repository after creation
 | 
					        -c, --clone           Clone the Git repository after creation
 | 
				
			||||||
        -t, --team=NAME       Assign team name (default: world)
 | 
					        -a, --agent NAME      Set the CI agent (default: ${AGENTS[0]})
 | 
				
			||||||
                              Possible values: [system, world, lib32, galaxy]
 | 
					                              Possible values: $(yaml_array ${AGENTS[@]})
 | 
				
			||||||
 | 
					        -t, --team NAME       Assign team name (default: ${ARTIX_TEAMS[1]})
 | 
				
			||||||
 | 
					                              Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
 | 
				
			||||||
        -h, --help            Show this help text
 | 
					        -h, --help            Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
@@ -33,17 +39,12 @@ artixpkg_git_create() {
 | 
				
			|||||||
    # options
 | 
					    # options
 | 
				
			||||||
    local pkgbases=()
 | 
					    local pkgbases=()
 | 
				
			||||||
    local pkgbase
 | 
					    local pkgbase
 | 
				
			||||||
    local clone=0
 | 
					    local CLONE=0
 | 
				
			||||||
    local config=0
 | 
					    local CONFIG=0
 | 
				
			||||||
    local TEAM="${ARTIX_DB[5]}"
 | 
					
 | 
				
			||||||
    local AGENT=()
 | 
					    local AGENT_OPTS=("--agent" "${AGENTS[0]}")
 | 
				
			||||||
 | 
					    local TEAM_OPTS=("--team" "${ARTIX_TEAMS[1]}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local TEAMS=(
 | 
					 | 
				
			||||||
        "${ARTIX_DB[2]}"
 | 
					 | 
				
			||||||
        "${ARTIX_DB[5]}"
 | 
					 | 
				
			||||||
        "${ARTIX_DB[8]}"
 | 
					 | 
				
			||||||
        "${ARTIX_DB[11]}"
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
    # variables
 | 
					    # variables
 | 
				
			||||||
    local path
 | 
					    local path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -53,30 +54,32 @@ artixpkg_git_create() {
 | 
				
			|||||||
            artixpkg_git_create_usage
 | 
					            artixpkg_git_create_usage
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					        -a|--agent)
 | 
				
			||||||
 | 
					            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					            AGENT_OPTS=("$1" "$2")
 | 
				
			||||||
 | 
					            shift 2
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
        -c|--clone)
 | 
					        -c|--clone)
 | 
				
			||||||
            clone=1
 | 
					            CLONE=1
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        -t|--team)
 | 
					        -t|--team)
 | 
				
			||||||
            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
            TEAM="$2"
 | 
					            TEAM_OPTS=("$1" "$2")
 | 
				
			||||||
            shift 2
 | 
					            shift 2
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        --team=*)
 | 
					 | 
				
			||||||
            TEAM="${1#*=}"
 | 
					 | 
				
			||||||
            shift
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
        -*)
 | 
					        -*)
 | 
				
			||||||
            die "invalid argument: %s" "$1"
 | 
					            die "invalid argument: %s" "$1"
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
            pkgbases=("$@")
 | 
					 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ! in_array "${TEAM}" "${TEAMS[@]}"; then
 | 
					    pkgbases=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ! in_array "${TEAM_OPTS[1]}" "${ARTIX_TEAMS[@]}"; then
 | 
				
			||||||
        die "${TEAM} does not exist!"
 | 
					        die "${TEAM} does not exist!"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -87,8 +90,8 @@ artixpkg_git_create() {
 | 
				
			|||||||
                die "failed to read path from current directory"
 | 
					                die "failed to read path from current directory"
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
            pkgbases=("$(basename "${path}")")
 | 
					            pkgbases=("$(basename "${path}")")
 | 
				
			||||||
        clone=0
 | 
					            CLONE=0
 | 
				
			||||||
        config=1
 | 
					            CONFIG=1
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            artixpkg_git_create_usage
 | 
					            artixpkg_git_create_usage
 | 
				
			||||||
            exit 1
 | 
					            exit 1
 | 
				
			||||||
@@ -97,30 +100,30 @@ artixpkg_git_create() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # create
 | 
					    # create
 | 
				
			||||||
    for pkgbase in "${pkgbases[@]}"; do
 | 
					    for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local gitname
 | 
					        local gitname
 | 
				
			||||||
        gitname=$(get_compliant_name "${pkgbase}")
 | 
					        gitname=$(get_compliant_name "${pkgbase}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [[ -n ${GIT_TOKEN} ]]; then
 | 
					        if [[ -n ${GIT_TOKEN} ]]; then
 | 
				
			||||||
            if ! create_repo "${gitname}" >/dev/null; then
 | 
					            if ! create_repo "${gitname}" >/dev/null; then
 | 
				
			||||||
                die "failed to create project: ${pkgbase}"
 | 
					                die "failed to create repository: ${pkgbase}"
 | 
				
			||||||
            fi
 | 
					            else
 | 
				
			||||||
            if ! add_team_to_repo "${gitname}" "${TEAM}" >/dev/null; then
 | 
					 | 
				
			||||||
                warning "failed to assign team: ${TEAM}"
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
                msg_success "Successfully created ${pkgbase}"
 | 
					                msg_success "Successfully created ${pkgbase}"
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        if [[ ${TEAM} == "${ARTIX_DB[11]}" ]]; then
 | 
					 | 
				
			||||||
            AGENT+=(--agent="${TEAM}")
 | 
					 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        if (( clone )); then
 | 
					
 | 
				
			||||||
            artixpkg_git_clone "${AGENT[@]}" "${pkgbase}"
 | 
					        if (( CLONE )); then
 | 
				
			||||||
        elif (( config )); then
 | 
					            artixpkg_git_clone "${AGENT_OPTS[@]}" "${TEAM_OPTS[@]}" "${pkgbase}"
 | 
				
			||||||
            artixpkg_git_config "${AGENT[@]}"
 | 
					        elif (( CONFIG )); then
 | 
				
			||||||
 | 
					            artixpkg_git_config "${pkgbase}"
 | 
				
			||||||
 | 
					            artixpkg_ci_config "${AGENT_OPTS[@]}" "${pkgbase}"
 | 
				
			||||||
 | 
					            artixpkg_admin_team "${TEAM_OPTS[@]}" "${pkgbase}"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # some convenience hints if not in auto clone/config mode
 | 
					    # some convenience hints if not in auto clone/config mode
 | 
				
			||||||
    if (( ! clone )) && (( ! config )); then
 | 
					    if (( ! CLONE )) && (( ! CONFIG )); then
 | 
				
			||||||
        cat <<- _EOF_
 | 
					        cat <<- _EOF_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        For new clones:
 | 
					        For new clones:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,8 +14,8 @@ artixpkg_git_pull_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -m, --maintainer=NAME      Pull all packages of the named maintainer
 | 
					        -m, --maintainer NAME      Pull all packages of the named maintainer
 | 
				
			||||||
        -t, --topic=NAME           Pull all packages of the named topic
 | 
					        -t, --topic NAME           Pull all packages of the named topic
 | 
				
			||||||
        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
					        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
        --all                      Pull all existing packages
 | 
					        --all                      Pull all existing packages
 | 
				
			||||||
        -h, --help                 Show this help text
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
@@ -57,19 +57,11 @@ artixpkg_git_pull() {
 | 
				
			|||||||
                MAINTAINER="$2"
 | 
					                MAINTAINER="$2"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --maintainer=*)
 | 
					 | 
				
			||||||
                MAINTAINER="${1#*=}"
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            -t|--topic)
 | 
					            -t|--topic)
 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                TOPIC="$2"
 | 
					                TOPIC="$2"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --topic=*)
 | 
					 | 
				
			||||||
                TOPIC="${1#*=}"
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            --all)
 | 
					            --all)
 | 
				
			||||||
                PULL_ALL=1
 | 
					                PULL_ALL=1
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,8 +14,8 @@ artixpkg_git_push_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -m, --maintainer=NAME      Push all packages of the named maintainer
 | 
					        -m, --maintainer NAME      Push all packages of the named maintainer
 | 
				
			||||||
        -t, --topic=NAME           Push all packages of the named topic
 | 
					        -t, --topic NAME           Push all packages of the named topic
 | 
				
			||||||
        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
					        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
        -h, --help                 Show this help text
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -55,19 +55,11 @@ artixpkg_git_push() {
 | 
				
			|||||||
                MAINTAINER="$2"
 | 
					                MAINTAINER="$2"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --maintainer=*)
 | 
					 | 
				
			||||||
                MAINTAINER="${1#*=}"
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            -t|--topic)
 | 
					            -t|--topic)
 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                TOPIC="$2"
 | 
					                TOPIC="$2"
 | 
				
			||||||
                shift 2
 | 
					                shift 2
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --topic=*)
 | 
					 | 
				
			||||||
                TOPIC="${1#*=}"
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            -j|--jobs)
 | 
					            -j|--jobs)
 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                jobs=$2
 | 
					                jobs=$2
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										51
									
								
								src/lib/pkg/packager.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/lib/pkg/packager.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_packager_name() {
 | 
				
			||||||
 | 
					    local packager=$1
 | 
				
			||||||
 | 
					    local packager_pattern="(.+) <(.+@.+)>"
 | 
				
			||||||
 | 
					    local name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ ! $packager =~ $packager_pattern ]]; then
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    name=$(echo "${packager}"|sed -E "s/${packager_pattern}/\1/")
 | 
				
			||||||
 | 
					    printf "%s" "${name}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_packager_email() {
 | 
				
			||||||
 | 
					    local packager=$1
 | 
				
			||||||
 | 
					    local packager_pattern="(.+) <(.+@.+)>"
 | 
				
			||||||
 | 
					    local email
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ ! $packager =~ $packager_pattern ]]; then
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    email=$(echo "${packager}"|sed -E "s/${packager_pattern}/\2/")
 | 
				
			||||||
 | 
					    printf "%s" "${email}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					is_packager_name_valid() {
 | 
				
			||||||
 | 
					    local packager_name=$1
 | 
				
			||||||
 | 
					    if [[ -z ${packager_name} ]]; then
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    elif [[ ${packager_name} == "John Tux" ]]; then
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    elif [[ ${packager_name} == "Unknown Packager" ]]; then
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					is_packager_email_official() {
 | 
				
			||||||
 | 
					    local packager_email=$1
 | 
				
			||||||
 | 
					    if [[ -z ${packager_email} ]]; then
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    elif [[ $packager_email =~ .+@artixlinux.org ]]; then
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    return 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -44,8 +44,9 @@ artixpkg_repo_add_usage() {
 | 
				
			|||||||
        -h, --help              Show this help text
 | 
					        -h, --help              Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} world-gremlins libfoo
 | 
					        $ ${COMMAND} ${ARTIX_DB[4]} libfoo
 | 
				
			||||||
        $ ${COMMAND} -p world-gremlins libfoo
 | 
					        $ ${COMMAND} --push ${ARTIX_DB[4]} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --push ${ARTIX_DB_MAP[2]} libfoo
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,6 +65,7 @@ artixpkg_repo_add() {
 | 
				
			|||||||
    local REBUILD=0
 | 
					    local REBUILD=0
 | 
				
			||||||
    local NOCHECK=0
 | 
					    local NOCHECK=0
 | 
				
			||||||
    local ADD=1
 | 
					    local ADD=1
 | 
				
			||||||
 | 
					    local AUTO=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (( $# )); do
 | 
					    while (( $# )); do
 | 
				
			||||||
        case $1 in
 | 
					        case $1 in
 | 
				
			||||||
@@ -96,9 +98,13 @@ artixpkg_repo_add() {
 | 
				
			|||||||
    shift
 | 
					    shift
 | 
				
			||||||
    pkgbases+=("$@")
 | 
					    pkgbases+=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if in_array "${DEST}" "${ARTIX_DB_MAP[@]}"; then
 | 
				
			||||||
 | 
					        AUTO=1
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
        if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
					        if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
				
			||||||
            die "${DEST} does not exist!"
 | 
					            die "${DEST} does not exist!"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for pkgbase in "${pkgbases[@]}"; do
 | 
					    for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -124,8 +130,27 @@ artixpkg_repo_add() {
 | 
				
			|||||||
                    manage-pkgbuild-keys --export
 | 
					                    manage-pkgbuild-keys --export
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    update_yaml_base
 | 
					                    update_yaml_base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    local auto
 | 
				
			||||||
 | 
					                    auto=$(auto_detect)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if [[ -z "${auto}" ]]; then
 | 
				
			||||||
 | 
					                        auto=$(team_from_yaml)
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (( AUTO )); then
 | 
				
			||||||
 | 
					                        if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
 | 
				
			||||||
 | 
					                            DEST="${auto}"
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                            DEST="${auto}-${DEST}"
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    update_yaml_add "${REBUILD}" "${ADD}" "${NOCHECK}" "${DEST}"
 | 
					                    update_yaml_add "${REBUILD}" "${ADD}" "${NOCHECK}" "${DEST}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    update_yaml_team "${auto}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    local commit_msg
 | 
					                    local commit_msg
 | 
				
			||||||
                    commit_msg=$(get_commit_msg 'add' "${DEST}")
 | 
					                    commit_msg=$(get_commit_msg 'add' "${DEST}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -133,6 +158,10 @@ artixpkg_repo_add() {
 | 
				
			|||||||
                        rm .SRCINFO
 | 
					                        rm .SRCINFO
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    delete_obsolete_map_keys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    migrate_agent_branch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
					                    if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        stat_busy 'Staging files'
 | 
					                        stat_busy 'Staging files'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,9 @@ artixpkg_repo_move_usage() {
 | 
				
			|||||||
        -h, --help              Show this help text
 | 
					        -h, --help              Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} world-gremlins world libfoo
 | 
					        $ ${COMMAND} ${ARTIX_DB[4]} ${ARTIX_DB[5]} libfoo
 | 
				
			||||||
        $ ${COMMAND} -p world-gremlins world libfoo
 | 
					        $ ${COMMAND} --push ${ARTIX_DB[4]} ${ARTIX_DB[5]} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --push ${ARTIX_DB_MAP[1]} ${ARTIX_DB_MAP[2]} libfoo
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,6 +35,7 @@ artixpkg_repo_move() {
 | 
				
			|||||||
    local pkgbase
 | 
					    local pkgbase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local PUSH=0
 | 
					    local PUSH=0
 | 
				
			||||||
 | 
					    local AUTO=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local DEST
 | 
					    local DEST
 | 
				
			||||||
    local SRC
 | 
					    local SRC
 | 
				
			||||||
@@ -61,12 +63,16 @@ artixpkg_repo_move() {
 | 
				
			|||||||
    DEST="$2"
 | 
					    DEST="$2"
 | 
				
			||||||
    shift 2
 | 
					    shift 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if in_array "${SRC}" "${ARTIX_DB_MAP[@]}" && in_array "${DEST}" "${ARTIX_DB_MAP[@]}"; then
 | 
				
			||||||
 | 
					        AUTO=1
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
        if ! in_array "${SRC}" "${ARTIX_DB[@]}"; then
 | 
					        if ! in_array "${SRC}" "${ARTIX_DB[@]}"; then
 | 
				
			||||||
            die "${SRC} does not exist!"
 | 
					            die "${SRC} does not exist!"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
					        if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
				
			||||||
            die "${DEST} does not exist!"
 | 
					            die "${DEST} does not exist!"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pkgbases+=("$@")
 | 
					    pkgbases+=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -86,25 +92,47 @@ artixpkg_repo_move() {
 | 
				
			|||||||
                        die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
					                        die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    local commit_msg src_version # dest_version
 | 
					                    local auto
 | 
				
			||||||
 | 
					                    auto=$(auto_detect)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if [[ -z "${auto}" ]]; then
 | 
				
			||||||
 | 
					                        auto=$(team_from_yaml)
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (( AUTO )); then
 | 
				
			||||||
 | 
					                        if [[ "${SRC}" == "${ARTIX_DB_MAP[2]}" ]]; then
 | 
				
			||||||
 | 
					                            SRC="${auto}"
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                            SRC="${auto}-${SRC}"
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
 | 
				
			||||||
 | 
					                            DEST="${auto}"
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                            DEST="${auto}-${DEST}"
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    local commit_msg src_version
 | 
				
			||||||
                    commit_msg=$(get_commit_msg 'move' "${DEST}" "${SRC}")
 | 
					                    commit_msg=$(get_commit_msg 'move' "${DEST}" "${SRC}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    src_version=$(version_from_yaml "${SRC}")
 | 
					                    src_version=$(version_from_yaml "${SRC}")
 | 
				
			||||||
#                     dest_version=$(version_from_yaml "${DEST}")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if [[ "$src_version" != null ]]; then
 | 
					                    if [[ "$src_version" != "null" ]]; then
 | 
				
			||||||
 | 
					 | 
				
			||||||
#                         local ret
 | 
					 | 
				
			||||||
#                         ret=$(vercmp "$src_version" "$dest_version")
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#                         if (( ret > 0 )); then
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        update_yaml_move "${SRC}" "${DEST}"
 | 
					                        update_yaml_move "${SRC}" "${DEST}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if [[ -f .SRCINFO ]]; then
 | 
					                        if [[ -f .SRCINFO ]]; then
 | 
				
			||||||
                            rm .SRCINFO
 | 
					                            rm .SRCINFO
 | 
				
			||||||
                        fi
 | 
					                        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        delete_obsolete_map_keys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        migrate_agent_branch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        update_yaml_team "$(auto_detect)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
					                        if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            stat_busy 'Staging files'
 | 
					                            stat_busy 'Staging files'
 | 
				
			||||||
@@ -130,14 +158,50 @@ artixpkg_repo_move() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        fi
 | 
					                        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#                         elif (( ret < 0 )); then
 | 
					                        if (( ! AUTO )); then
 | 
				
			||||||
#
 | 
					
 | 
				
			||||||
#                             error "${pkgbase}: invalid move: version $src_version < $dest_version!"
 | 
					                            local gitname
 | 
				
			||||||
#
 | 
					                            gitname=$(get_compliant_name "${pkgbase}")
 | 
				
			||||||
#                         else
 | 
					
 | 
				
			||||||
#                             error "${pkgbase}: invalid move: version $src_version = $dest_version!"
 | 
					                            # team change on cross repo move system <-> world
 | 
				
			||||||
#
 | 
					                            if [[ "${SRC}" == ${ARTIX_DB[2]}* ]] \
 | 
				
			||||||
#                         fi
 | 
					                            && [[ "${DEST}" == ${ARTIX_DB[5]}* ]]; then
 | 
				
			||||||
 | 
					                                if ! add_team_to_repo "${pkgbase}" "${ARTIX_DB[5]}"; then
 | 
				
			||||||
 | 
					                                    warning "failed to add team: ${ARTIX_DB[5]}"
 | 
				
			||||||
 | 
					                                fi
 | 
				
			||||||
 | 
					                                if ! remove_team_from_repo "${pkgbase}" "${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
 | 
				
			||||||
 | 
					                                    warning "failed to add team: ${ARTIX_DB[2]}"
 | 
				
			||||||
 | 
					                                fi
 | 
				
			||||||
 | 
					                                if ! remove_team_from_repo "${pkgbase}" "${ARTIX_DB[5]}"; then
 | 
				
			||||||
 | 
					                                    warning "failed to remove team: ${ARTIX_DB[5]}"
 | 
				
			||||||
 | 
					                                fi
 | 
				
			||||||
 | 
					                            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            # team change on cross repo move world <-> galaxy
 | 
				
			||||||
 | 
					                            if [[ "${SRC}" == ${ARTIX_DB[11]}* ]] \
 | 
				
			||||||
 | 
					                            && [[ "${DEST}" == ${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 "${gitname}" "${ARTIX_DB[11]}"; then
 | 
				
			||||||
 | 
					                                    warning "failed to remove team: ${ARTIX_DB[11]}"
 | 
				
			||||||
 | 
					                                fi
 | 
				
			||||||
 | 
					                            elif [[ "${SRC}" == ${ARTIX_DB[5]}* ]] \
 | 
				
			||||||
 | 
					                            && [[ "${DEST}" == ${ARTIX_DB[11]}* ]]; then
 | 
				
			||||||
 | 
					                                if ! add_team_to_repo "${gitname}" "${ARTIX_DB[11]}"; then
 | 
				
			||||||
 | 
					                                    warning "failed to add team: ${ARTIX_DB[11]}"
 | 
				
			||||||
 | 
					                                fi
 | 
				
			||||||
 | 
					                                if ! remove_team_from_repo "${gitname}" "${ARTIX_DB[5]}"; then
 | 
				
			||||||
 | 
					                                    warning "failed to remove team: ${ARTIX_DB[5]}"
 | 
				
			||||||
 | 
					                                fi
 | 
				
			||||||
 | 
					                            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                        error "${pkgbase}: invalid move: version $src_version!"
 | 
					                        error "${pkgbase}: invalid move: version $src_version!"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,9 @@ artixpkg_repo_remove_usage() {
 | 
				
			|||||||
        -h, --help              Show this help text
 | 
					        -h, --help              Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} world-gremlins libfoo
 | 
					        $ ${COMMAND} ${ARTIX_DB[4]} libfoo
 | 
				
			||||||
        $ ${COMMAND} -p world-gremlins libfoo
 | 
					        $ ${COMMAND} --push ${ARTIX_DB[4]} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --push ${ARTIX_DB_MAP[2]} libfoo
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,6 +35,7 @@ artixpkg_repo_remove() {
 | 
				
			|||||||
    local pkgbase
 | 
					    local pkgbase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local PUSH=0
 | 
					    local PUSH=0
 | 
				
			||||||
 | 
					    local AUTO=0
 | 
				
			||||||
    local DEST=''
 | 
					    local DEST=''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (( $# )); do
 | 
					    while (( $# )); do
 | 
				
			||||||
@@ -59,9 +61,13 @@ artixpkg_repo_remove() {
 | 
				
			|||||||
    shift
 | 
					    shift
 | 
				
			||||||
    pkgbases=("$@")
 | 
					    pkgbases=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if in_array "${DEST}" "${ARTIX_DB_MAP[@]}"; then
 | 
				
			||||||
 | 
					        AUTO=1
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
        if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
					        if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
				
			||||||
            die "${DEST} does not exist!"
 | 
					            die "${DEST} does not exist!"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for pkgbase in "${pkgbases[@]}"; do
 | 
					    for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -79,11 +85,30 @@ artixpkg_repo_remove() {
 | 
				
			|||||||
                        die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
					                        die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    local auto
 | 
				
			||||||
 | 
					                    auto=$(auto_detect)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if [[ -z "${auto}" ]]; then
 | 
				
			||||||
 | 
					                        auto=$(team_from_yaml)
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (( AUTO )); then
 | 
				
			||||||
 | 
					                        if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
 | 
				
			||||||
 | 
					                            DEST="${auto}"
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                            DEST="${auto}-${DEST}"
 | 
				
			||||||
 | 
					                        fi
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    local commit_msg
 | 
					                    local commit_msg
 | 
				
			||||||
                    commit_msg=$(get_commit_msg 'remove' "${DEST}")
 | 
					                    commit_msg=$(get_commit_msg 'remove' "${DEST}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    update_yaml_remove "${DEST}"
 | 
					                    update_yaml_remove "${DEST}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    delete_obsolete_map_keys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    migrate_agent_branch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
					                    if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        stat_busy 'Staging files'
 | 
					                        stat_busy 'Staging files'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,10 +36,12 @@ load_pkg_config(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    REPO=${REPO:-'world'}
 | 
					    REPO=${REPO:-'world'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local git_domain="gitea.artixlinux.org"
 | 
					    local -r git_domain="gitea.artixlinux.org"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    GIT_HTTPS=${GIT_HTTPS:-"https://${git_domain}"}
 | 
					    GIT_HTTPS=${GIT_HTTPS:-"https://${git_domain}"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    readonly API_URL="${GIT_HTTPS}/api/v1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    GIT_SSH=${GIT_SSH:-"gitea@${git_domain}"}
 | 
					    GIT_SSH=${GIT_SSH:-"gitea@${git_domain}"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    GIT_TOKEN=${GIT_TOKEN:-''}
 | 
					    GIT_TOKEN=${GIT_TOKEN:-''}
 | 
				
			||||||
@@ -48,6 +50,8 @@ load_pkg_config(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    GIT_UPSTREAM_URL=${GIT_UPSTREAM_URL:-"https://gitlab.archlinux.org/archlinux/packaging/packages"}
 | 
					    GIT_UPSTREAM_URL=${GIT_UPSTREAM_URL:-"https://gitlab.archlinux.org/archlinux/packaging/packages"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GIT_ORG_ARCHIVE=${GIT_ORG_ARCHIVE:-'landfill'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TREE_DIR_ARTIX=${TREE_DIR_ARTIX:-"${WORKSPACE_DIR}/artixlinux"}
 | 
					    TREE_DIR_ARTIX=${TREE_DIR_ARTIX:-"${WORKSPACE_DIR}/artixlinux"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"}
 | 
					    REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"}
 | 
				
			||||||
@@ -56,6 +60,10 @@ load_pkg_config(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    DBEXT=${DBEXT:-'gz'}
 | 
					    DBEXT=${DBEXT:-'gz'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -z "${AGENTS[*]}" ]]; then
 | 
				
			||||||
 | 
					        AGENTS=(orion taurus)
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,9 +20,11 @@ usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [COMMAND] [OPTIONS]
 | 
					    Usage: ${COMMAND} [COMMAND] [OPTIONS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    COMMANDS
 | 
					    COMMANDS
 | 
				
			||||||
        repo      Pacman database modification for packge update, move etc
 | 
					        admin     Manage topics, teams and obsolete repos
 | 
				
			||||||
 | 
					        ci        Manage CI and build agent
 | 
				
			||||||
        git       Manage Git packaging repositories and their configuration
 | 
					        git       Manage Git packaging repositories and their configuration
 | 
				
			||||||
        admin     Managegement of topics and obsolete repos
 | 
					        repo      Pacman database modification for package updates, moves, etc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        version   Show artixpkg version information
 | 
					        version   Show artixpkg version information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
@@ -67,6 +69,14 @@ while (( $# )); do
 | 
				
			|||||||
        artixpkg_git "$@"
 | 
					        artixpkg_git "$@"
 | 
				
			||||||
        exit 0
 | 
					        exit 0
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					    ci)
 | 
				
			||||||
 | 
					        _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					        shift
 | 
				
			||||||
 | 
					        # shellcheck source=src/lib/pkg/ci.sh
 | 
				
			||||||
 | 
					        source "${LIBDIR}"/pkg/ci.sh
 | 
				
			||||||
 | 
					        artixpkg_ci "$@"
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
    admin)
 | 
					    admin)
 | 
				
			||||||
        _ARTOOLS_COMMAND+=" $1"
 | 
					        _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
        shift
 | 
					        shift
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,8 @@ usage() {
 | 
				
			|||||||
    printf '                       [default: %s]\n' "${repo}"
 | 
					    printf '                       [default: %s]\n' "${repo}"
 | 
				
			||||||
    printf '    -a <arch>          Build arch chroot\n'
 | 
					    printf '    -a <arch>          Build arch chroot\n'
 | 
				
			||||||
    printf '                       [default: %s]\n' "${arch}"
 | 
					    printf '                       [default: %s]\n' "${arch}"
 | 
				
			||||||
 | 
					    printf '    -e <name>          Export PACKAGER\n'
 | 
				
			||||||
 | 
					    printf "                       format: 'John Doe <john@doe.com>'\n"
 | 
				
			||||||
    printf '    -c                 Recreate the chroot before building\n'
 | 
					    printf '    -c                 Recreate the chroot before building\n'
 | 
				
			||||||
    printf '    -m                 Major rebuild\n'
 | 
					    printf '    -m                 Major rebuild\n'
 | 
				
			||||||
    printf '    -N                 Disable check() function\n'
 | 
					    printf '    -N                 Disable check() function\n'
 | 
				
			||||||
@@ -44,13 +46,14 @@ usage() {
 | 
				
			|||||||
    exit "$1"
 | 
					    exit "$1"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='hcCNmnr:d:a:'
 | 
					opts='hcCNmnr:d:a:e:'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        r) chroots_pkg="$OPTARG" ;;
 | 
					        r) chroots_pkg="$OPTARG" ;;
 | 
				
			||||||
        d) repo="$OPTARG" ;;
 | 
					        d) repo="$OPTARG" ;;
 | 
				
			||||||
        a) arch="$OPTARG" ;;
 | 
					        a) arch="$OPTARG" ;;
 | 
				
			||||||
 | 
					        e) packager="$OPTARG" ;;
 | 
				
			||||||
        c) create_first=true ;;
 | 
					        c) create_first=true ;;
 | 
				
			||||||
        m) rebuild=true ;;
 | 
					        m) rebuild=true ;;
 | 
				
			||||||
        C) mkchrootpkg_args+=(-C) ;;
 | 
					        C) mkchrootpkg_args+=(-C) ;;
 | 
				
			||||||
@@ -90,6 +93,10 @@ else
 | 
				
			|||||||
    set_arch="${arch}"
 | 
					    set_arch="${arch}"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -n "${packager}" ]]; then
 | 
				
			||||||
 | 
					    export PACKAGER=${packager}
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Architecture-specific Mount
 | 
					# Architecture-specific Mount
 | 
				
			||||||
arch_mounts=()
 | 
					arch_mounts=()
 | 
				
			||||||
if [[ -f "${DATADIR}/mount.d/${arch}" ]]; then
 | 
					if [[ -f "${DATADIR}/mount.d/${arch}" ]]; then
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										55
									
								
								src/pkg/packagersign.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								src/pkg/packagersign.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LIBDIR=${LIBDIR:-'@libdir@'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/base/message.sh
 | 
				
			||||||
 | 
					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=config/makepkg/x86_64.conf
 | 
				
			||||||
 | 
					load_makepkg_config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export PKGDEST
 | 
				
			||||||
 | 
					export GPG_KEY
 | 
				
			||||||
 | 
					export GPG_PASS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					passfiles=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sign_pkg(){
 | 
				
			||||||
 | 
					    local file_to_sign="$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [ ! -e "$file_to_sign" ]; then
 | 
				
			||||||
 | 
					        error "%s does not exist!" "$file_to_sign"
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n "${GPG_KEY}" ]] && [[ -n "${GPG_PASS}" ]]; then
 | 
				
			||||||
 | 
					        msg "Signing [%s]" "${file_to_sign##*/}"
 | 
				
			||||||
 | 
					        gpg --homedir /etc/pacman.d/gnupg --no-permission-warning \
 | 
				
			||||||
 | 
					            --no-default-keyring --default-key "${GPG_KEY}" --passphrase "${GPG_PASS}" \
 | 
				
			||||||
 | 
					            -q --detach-sign "$file_to_sign"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check_root PKGDEST,GPG_KEY,GPG_PASS "${BASH_SOURCE[0]}" "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for pkg in "${passfiles[@]}"; do
 | 
				
			||||||
 | 
					    msg "Searching %s ..." "$pkg"
 | 
				
			||||||
 | 
					    if pkgfile=$(find_cached_pkgfile "$pkg");then
 | 
				
			||||||
 | 
					        msg2 "Found: %s" "${pkgfile}"
 | 
				
			||||||
 | 
					        [[ -e "${pkgfile}".sig ]] && rm "${pkgfile}".sig
 | 
				
			||||||
 | 
					        if ! sign_pkg "${pkgfile}"; then
 | 
				
			||||||
 | 
					            die "Failed to sign package!"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        ret=0
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        ret=1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exit "$ret"
 | 
				
			||||||
		Reference in New Issue
	
	Block a user