#!/bin/sh -efu # # Copyright (C) 2007 Alexey Gladkov # Copyright (C) 2007 Sir Raorn # # hsh-remote helper to run hasher onto remote host. # # This file 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # . gear-sh-functions show_help() { cat <<-EOF Usage: $PROG [hasher options] [-- options] [@] - remote build host; - hasher working directory onto ; - target package; Options: --cleanup-repo cleanup remote hasher workdir; -v, --verbose print a message for each action; -o, --outdir=DIR download results in DIR on local machine; -V,--version print program version and exit; -h,--help show this text and exit. Report bugs to http://bugs.altlinux.ru/ EOF exit } print_version() { cat <<-EOF $PROG version $PROG_VERSION Written by Alexey Gladkov Copyright (C) 2007 Alexey Gladkov Copyright (C) 2007 Sir Raorn This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. EOF exit } [ "$#" -gt 0 ] || show_help ! printf '%s\n' "$*" |grep -qs '\(^\|[[:space:]]\)--repo' || fatal "Unable to use --repo* options" outdir='out' clean= verbose= hsh_args= while [ $# -gt 3 ]; do case "$1" in -v|--verbose) verbose=-v ;; --) shift; break ;; esac hsh_args="$hsh_args $(quote_shell_arg "$1")" shift done TEMP=`getopt -n $PROG -o o,h,v,V -l cleanup-repo,outdir:,help,verbose,version -- "$@"` || show_help eval set -- "$TEMP" while :; do case "$1" in --cleanup-repo) clean=1 ;; -o|--outdir) shift outdir="$(readlink -ev "$1")" ;; -v|--verbose) verbose=-v ;; -V|--version) print_version ;; -h|--help) show_help ;; --) shift; break ;; *) fatal "Unrecognized option: $1" ;; esac shift done [ "$#" -eq 3 ] || show_help server="$1"; shift workdir="$1"; shift pkg="$(readlink -ev "$1")"; shift pkgname="${pkg##*/}" rsync $verbose -rtlp "$pkg" "$server:$workdir/" ssh "$server" "sh -efu"<