mirror of
https://codeberg.org/privacy1st/arch
synced 2024-12-23 01:16:04 +01:00
fix/improve repository manager
This commit is contained in:
parent
5b5571813b
commit
d790b861a0
@ -2,7 +2,7 @@
|
|||||||
_pkgname=repo
|
_pkgname=repo
|
||||||
_reponame=arch-pkg
|
_reponame=arch-pkg
|
||||||
pkgname="de-p1st-$_pkgname"
|
pkgname="de-p1st-$_pkgname"
|
||||||
pkgver=0.0.6
|
pkgver=0.0.7
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Bash script to manage remote Arch Linux repository"
|
pkgdesc="Bash script to manage remote Arch Linux repository"
|
||||||
arch=('any')
|
arch=('any')
|
||||||
|
@ -10,13 +10,110 @@ source /etc/de-p1st-repo/arch-repo.cfg || exit
|
|||||||
function add_to_db(){
|
function add_to_db(){
|
||||||
echo "Adding new packages to db ..."
|
echo "Adding new packages to db ..."
|
||||||
|
|
||||||
mapfile -t PKGS < <(cat new-pkg.txt)
|
sort_pkgname_pkgver || return $?
|
||||||
for PKG in "${PKGS[@]}"; do
|
|
||||||
repo-add -n "${REMOTE_DB_NAME}.db.tar.gz" "${PKG}" || exit
|
echo "For each package: Add latest version to database ..."
|
||||||
|
for PKGNAME in ./pkg/*; do
|
||||||
|
|
||||||
|
#
|
||||||
|
# get latest version for PKGNAME
|
||||||
|
#
|
||||||
|
|
||||||
|
local LATEST
|
||||||
|
for PKGVER in ./pkg/"${PKGNAME}"/*; do
|
||||||
|
LATEST="$PKGVER"
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
local cmp
|
||||||
|
for PKGVER in ./pkg/"$PKGNAME"/*; do
|
||||||
|
# compare the currently known latest version
|
||||||
|
# with the next version
|
||||||
|
cmp=$(vercmp "$LATEST" "$PKGVER") || return $?
|
||||||
|
# if the new version is larger, save it as LATEST
|
||||||
|
if [ "$cmp" -lt "0" ]; then
|
||||||
|
LATEST="$PKGVER"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# add latest version of PKGNAME to database
|
||||||
|
#
|
||||||
|
PKG=$(cat "./pkg/${PKGNAME}/${LATEST}") || return $?
|
||||||
|
repo-add -n "${REMOTE_DB_NAME}.db.tar.gz" "${PKG}" || return $?
|
||||||
|
|
||||||
|
true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# create files "./pkg/$pkgname/$pkgver" with content "$path_to_file" = "$PKG"
|
||||||
|
#
|
||||||
|
function sort_pkgname_pkgver(){
|
||||||
|
echo "Sorting packages by package name and package version ..."
|
||||||
|
|
||||||
|
for PKG in ./*.pkg.tar.{xz,zst}; do
|
||||||
|
get_pkginfo "$PKG" || return $?
|
||||||
|
get_pkgname "$PKGINFO" || return $?
|
||||||
|
get_pkgver "$PKGINFO" || return $?
|
||||||
|
|
||||||
|
echo "Creating file pkg/${PKGNAME} with content ${PKG} ..."
|
||||||
|
mkdir -p "pkg/${PKGNAME}" || return $?
|
||||||
|
echo "${PKG}" > "pkg/${PKGNAME}/${PKGVER}" || return $?
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# get .PKGINFO
|
||||||
|
#
|
||||||
|
function get_pkginfo(){
|
||||||
|
# $1: path to package file
|
||||||
|
# return: 0 on success
|
||||||
|
|
||||||
|
if endswith "$1" ".pkg.tar.xz"; then
|
||||||
|
PKGINFO=$(tar -xvf "$1" -O .PKGINFO) || return $?
|
||||||
|
elif endswith "$1" ".pkg.tar.zst"; then
|
||||||
|
PKGINFO=$(tar -I zstd -xvf "$1" -O .PKGINFO) || return $?
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# get pkgver from $PKGINFO
|
||||||
|
#
|
||||||
|
function get_pkgver(){
|
||||||
|
# return: 0 on success
|
||||||
|
|
||||||
|
# remove "pkgver = " as well as tailing whitespace characters
|
||||||
|
local tmp
|
||||||
|
tmp=$(echo "$PKGINFO" | grep '^pkgver') || return $?
|
||||||
|
PKGVER=$(echo "$tmp" | sed 's|^pkgver\s*=\s*||; s|\s*$||') || return $?
|
||||||
|
}
|
||||||
|
#
|
||||||
|
# get pkgname from &PKGINFO
|
||||||
|
#
|
||||||
|
function get_pkgname(){
|
||||||
|
# return: 0 on success
|
||||||
|
|
||||||
|
# remove "pkgname = " as well as tailing whitespace characters
|
||||||
|
local tmp
|
||||||
|
tmp=$(echo "$PKGINFO" | grep '^pkname') || return $?
|
||||||
|
PKGVER=$(echo "$tmp" | sed 's|^pkgname\s*=\s*||; s|\s*$||') || return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Inspired by: https://stackoverflow.com/questions/2172352/in-bash-how-can-i-check-if-a-string-begins-with-some-value/18558871#18558871
|
||||||
|
#
|
||||||
|
# $1 begins with $2
|
||||||
|
#
|
||||||
|
beginswith() { case $1 in "$2"*) true;; *) false;; esac; }
|
||||||
|
#
|
||||||
|
# $1 ends with $2
|
||||||
|
#
|
||||||
|
endswith() { case $1 in *"$2") true;; *) false;; esac; }
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# generate index.html
|
# generate index.html
|
||||||
@ -50,5 +147,5 @@ function generate_index(){
|
|||||||
|
|
||||||
|
|
||||||
cd "${REMOTE_PKG_DIR}" || exit
|
cd "${REMOTE_PKG_DIR}" || exit
|
||||||
add_to_db
|
add_to_db || exit
|
||||||
generate_index
|
generate_index || exit
|
||||||
|
Loading…
Reference in New Issue
Block a user