#!/bin/bash
# LibreStage
# Prepares packages for upload into [staging]
# Copyright 2010 Nicolás Reynolds
# ---------- GNU General Public License 3 ----------
# This file is part of Parabola.
# Parabola is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Parabola is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Parabola. If not, see .
source /etc/libretools.conf
custom_config=$XDG_CONFIG_HOME/libretools/libretools.conf
[[ -e $custom_config ]] && source $custom_config
if [ -w / ]; then
error "This script should be run as regular user"
exit 1
fi
# End Config
usage() {
cat < [ ... ]
LibreRelease will stage for upload the package(s) built by the PKGBUILD on
the current directory to the specified repo(s).
EOU
}
repos=$@
while getopts 'h' arg; do
case $arg in
h) usage; exit 0 ;;
esac
done
if [ ${#repos} -eq 0 ]; then
usage
exit 1;
fi
[[ ! -e ./PKGBUILD ]] && {
error "PKGBUILD not found"
exit 1
}
# Source the needed files
source /etc/makepkg.conf
[[ -e ~/.makepkg.conf ]] && source ~/.makepkg.conf
source ./PKGBUILD
[[ -e ./rePKGBUILD ]] && source ./rePKGBUILD
# Default package location
PKGDEST=${PKGDEST:-.}
SRCPKGDEST=${SRCPKGDEST:-.}
PKGEXT=".pkg.tar.?z"
staged=false
# Copies the packages to the specified repos inside staging
for _arch in ${ARCHES[@]}; do
for pkg in ${pkgname[@]}; do
pkgpath=$(find ${PKGDEST}/ -type f \
-name "${pkg}-${pkgver}-${pkgrel}-${_arch}${PKGEXT}" -or \
-name "${pkg}-${epoch}:${pkgver}-${pkgrel}-${_arch}${PKGEXT}")
[[ -z ${pkgpath} ]] && continue
pkgfile=$(basename ${pkgpath})
# TODO refactor this
if [ -e "${pkgpath}" ]; then
msg "Found ${pkgfile}"
canonical=""
for _repo in ${repos[@]}; do
if [ ! -d "${WORKDIR}/staging/${_repo}" ]; then
warning "[${_repo}] didn't exist, creating..."
mkdir -p "${WORKDIR}/staging/${_repo}"
fi
if [ -z "$canonical" ]; then
canonical="${WORKDIR}/staging/${_repo}/${pkgfile}"
cp "${pkgpath}" "${WORKDIR}/staging/${_repo}/" || {
error "Can't put ${pkgfile} on [staging]"
exit 1
} && {
msg2 "${pkg} staged on [${_repo}]"
staged=true
}
else
ln "${canonical}" "${WORKDIR}/staging/${_repo}/${pkgfile}" || {
error "Can't put ${pkgfile} on [staging]"
exit 1
} && {
msg2 "${pkg} staged on [${_repo}]"
staged=true
}
fi
done
fi
done
done
if ! $staged ; then
error "No package was staged"
exit 1
fi
exit 0