#!/bin/bash # A simple script to checkout or update a svn or git repo as source service # defaults MYARCHIVE="" MYFILES="" while test $# -gt 0; do case $1 in *-archive) MYARCHIVE="${2##*/}" shift ;; *-file) MYFILES="$MYFILES ${2##*/}" shift ;; *-outdir) MYOUTDIR="$2" shift ;; *) echo Unknown parameter $1. echo 'Usage: extract_file --archive $ARCHIVE --file $FILE --outdir $OUT' exit 1 ;; esac shift done if [ -z "$MYARCHIVE" ]; then echo "ERROR: no archive specified!" exit 1 fi if [ -z "$MYFILES" ]; then echo "ERROR: no checkout URL is given via --url parameter!" exit 1 fi if [ -z "$MYOUTDIR" ]; then echo "ERROR: no output directory is given via --outdir parameter!" exit 1 fi cd "$MYOUTDIR" existing_archive=$(echo $MYARCHIVE) if [ -e "$existing_archive" ]; then if [ "${existing_archive%.tar.gz}" != "$existing_archive" ]; then tar xfz "$existing_archive" $MYFILES || exit 1 elif [ "${existing_archive%.tar.bz2}" != "$existing_archive" ]; then tar xfj "$existing_archive" $MYFILES || exit 1 elif [ "${existing_archive%.tar.xz}" != "$existing_archive" ]; then tar xfJ "$existing_archive" $MYFILES || exit 1 elif [ "${existing_archive%.tar}" != "$existing_archive" ]; then tar xf "$existing_archive" $MYFILES || exit 1 elif [ "${existing_archive%.zip}" != "$existing_archive" ]; then unzip "$existing_archive" $MYFILES || exit 1 else echo "ERROR: unknown archive format $existing_archive" exit 1 fi else echo "ERROR: archive not found: $existing_archive" exit 1 fi exit 0