#!/bin/bash -euE # Copyright (c) 2012-2013 Pacman Development Team # Copyright (c) 2012-2013 Luke Shumaker # # This program 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 2 of the License, or # (at your option) any later version. # # This program 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 this program. If not, see . . pbs-plumb-shlib . $(librelib conf.sh) cmd=${0##*/} usage() { echo "Usage: $cmd [-h]" echo 'Downloads or updates the PBS tree.' echo '' echo 'Options:' echo ' -h Show this message' } load_configuration() { r=0 load_files libretools check_vars libretools WORKDIR || r=$? load_files pbs check_vars pbs PBSGIT || r=$? if [[ $r -gt 0 ]]; then return $r fi } # Downloads/updates git based on $dir, $repo, and $ref # Mostly taken from makepkg download_git() { if [[ ! -d "$dir/.git" ]] ; then msg2 "$(gettext "Cloning %s %s repo...")" "${repo}" "git" if ! git clone "$repo" "$dir"; then error "$(gettext "Failure while downloading %s %s repo")" "${repo}" "git" plain "$(gettext "Aborting...")" exit 1 fi else cd "$dir" # Make sure we are fetching the right repo if [[ "$repo" != "$(git config --get remote.origin.url)" ]] ; then error "$(gettext "%s is not a clone of %s")" "$dir" "$repo" plain "$(gettext "Aborting...")" exit 1 fi msg2 "$(gettext "Updating %s %s repo...")" "${repo}" "git" if ! git pull origin "$ref"; then # only warn on failure to allow offline builds warning "$(gettext "Failure while updating %s %s repo")" "${repo}" "git" fi fi } main() { in_array '-h' "$@" && { usage; return 0; } [[ $# = 0 ]] || { usage >&2; return 1; } load_configuration mkdir -p "$WORKDIR" ( dir="$WORKDIR/pbs" repo="$PBSGIT" ref="master" download_git ) cd "$WORKDIR/pbs" git submodule init git submodule update } main "$@"