summaryrefslogtreecommitdiff
path: root/src/abslibre-tools/librestage
diff options
context:
space:
mode:
Diffstat (limited to 'src/abslibre-tools/librestage')
-rwxr-xr-xsrc/abslibre-tools/librestage138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/abslibre-tools/librestage b/src/abslibre-tools/librestage
new file mode 100755
index 0000000..b474bb1
--- /dev/null
+++ b/src/abslibre-tools/librestage
@@ -0,0 +1,138 @@
+#!/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 <http://www.gnu.org/licenses/>.
+
+
+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 <<EOU
+LibreStage Copyright (C) 2011 Nicolás Reynolds
+This program comes with ABSOLUTELY NO WARRANTY.
+This is free software, and you are welcome to redistribute it
+under the terms of the GNU General Public License version 3 or later.
+
+
+Usage: $(basename $0) <repo> [<repo2> ... ]
+
+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