add remote repository manager

This commit is contained in:
Daniel Langbein 2021-04-22 11:06:27 +02:00
parent 805c0f6e14
commit a97803454f
4 changed files with 99 additions and 0 deletions

32
pkg/de-p1st-repo/PKGBUILD Normal file
View File

@ -0,0 +1,32 @@
# Maintainer: Daniel Langbein <daniel@systemli.org>
_pkgname=repo
_reponame=arch-pkg
pkgname="de-p1st-$_pkgname"
pkgver=0.0.1
pkgrel=1
pkgdesc="Bash script to manage remote Arch Linux repository"
arch=('any')
url="https://git.privacy1st.de/langfingaz/${_reponame}"
license=('MIT')
groups=()
depends=('openssh' 'bash')
makedepends=()
optdepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
changelog=
source=("git+${url}.git")
noextract=()
sha256sums=('SKIP')
package() {
cd "${_reponame}/pkg/${pkgname}"
install -Dm0544 arch-repo-push-new.sh "$pkgdir"/usr/bin/arch-repo-push-new
install -Dm0544 arch-repo-receive-new.sh "$pkgdir"/usr/bin/arch-repo-receive-new
install -Dm0644 arch-repo.cfg "$pkgdir"/etc/de-p1st-repo/arch-repo.cfg
}

View File

@ -0,0 +1,21 @@
#!/bin/bash
souce /etc/de-p1st-repo/arch-repo.cfg || exit
cd "${LOCAL_PKG_DIR}" || exit
# get list of new packages, one package per line
rsync --ignore-existing --out-format="%n" --dry-run \
./*.pkg.tar.{xz,zst} "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" > new-pkg.txt || exit
# transfer new packages using rsync
rsync --ignore-existing --progress --human-readable \
./*.pkg.tar.{xz,zst} "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" || exit
# transfer new-pkg.txt
rsync --ignore-times --checksum --progress --human-readable \
new-pkg.txt "${REMOTE_SSH_HOST}":"${REMOTE_PKG_DIR}" || exit
# add each new package to database
ssh "${REMOTE_SSH_HOST}" "/home/yoda/arch-repo-receive-new.sh"

View File

@ -0,0 +1,42 @@
#!/bin/bash
souce /etc/de-p1st-repo/arch-repo.cfg || exit
#
# add new packages to database
#
function add_to_db(){
mapfile -t PKGS < <(cat new-pkg.txt)
for PKG in "${PKGS[@]}"; do
repo-add -n "${REMOTE_DB_NAME}.db.tar.gz" "${PKG}" || exit
done
}
#
# generate index.html
#
function generate_index(){
echo '<!DOCTYPE html>
<html>
<head>
<title>privacy1st.de Arch Packages</title>
</head>
<body>
<h1>privacy1st.de Arch Packages</h1>
' > index.html
for PKG in ./*.pkg.tar.{xz,zst}; do
echo "<p><a href=\"$PKG\">$PKG</a></p>" >> index.html;
done
echo '
</body>
</html>' >> index.html
}
cd "${REMOTE_PKG_DIR}" || exit
add_to_db
generate_index

View File

@ -0,0 +1,4 @@
REMOTE_SSH_HOST=rootnas
LOCAL_PKG_DIR=/home/custompkgs
REMOTE_PKG_DIR=/mnt/data/live/arch-repo
REMOTE_DB_NAME=de-p1st