#!/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 [ -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