summaryrefslogtreecommitdiff
path: root/sh/mpra
blob: 38e605fc98c16485f7f6f520dbc7a66a1218f41f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/sh
# MakePkg Repo-Add

fn () {
	if ! { [ -f PKGBUILD ] || [ -h PKGBUILD ];}; then
		exit 1
	fi
	find . -maxdepth 1 -type f -name "*.pkg.tar.$ext*" -delete
	# Maybe failed to sign because I forget to input gpg password for a long time, maybe also because terminal window too small cause gpg tui that ask password can't show?
	# May cause invalid database signature which cause invalid signature error when trying to download from repo
	# If this happened, maybe can be fixed by `mpra -c ~/programs/repos/fly/any/fsh-git; sudo pacman -Syy`
	# Maybe also need some more commands before: `cd ~/programs/repos/fly/any/repo || exit; rm fly-any* && repo-add -s -v fly-any.db.tar.gz *.zst; mpra -c ~/programs/repos/fly/any/fsh-git; sudo pacman -Syy`
	# So I choose to exit 1 if failed
	makepkg --sign -sf || exit 1
	newpkg="$(find . -maxdepth 1 -type f -name "*.pkg.tar.$ext")"
	[ -d ../repo ] || mkdir ../repo
	mv "$newpkg" "$newpkg.sig" ../repo
	# need manually repo-add new database for first time initialization
	repo-add -s -v -R "$(find ../repo -maxdepth 1 -type f -name '*.db.tar.gz')" "../repo/$newpkg"
	# seems no need to delete *.old and *.old.sig, see https://mirror.fcix.net/archlinux/core/os/x86_64/ it do include *.old
	#find ../repo -maxdepth 1 -type f \( -name '*.old' -o -name '*.old.sig' \) -delete
}

ext=zst
copy_any=

while getopts ac opt; do
	case $opt in
		# arch linux arm still using .xz instead of .zst as package compression format
		a) ext=xz;;
		# copy arch linux fly-any repo
		c) copy_any=1;;
		\?) exit 1;;
	esac
done
shift $((OPTIND-1))

if [ $# -eq 0 ]; then
	fn 
else
	for dir; do
		cd -- "$(realpath -- "$dir")" || exit
		fn	
	done
fi

[ "$copy_any" ] && sudo rsync -vPrlu --delete ../repo/ /srv/http/mirrors/archlinux/fly/os/any