forked from pool/obs-service-extract_file
Adrian Schröter
59c584811f
This adds posibility to define filenames with wildcards. Usable to prevent from editing the file path after each version change or after the SVN revision changes. OBS-URL: https://build.opensuse.org/request/show/68624 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Tools/obs-service-extract_file?expand=0&rev=5
77 lines
1.8 KiB
Bash
77 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
# A simple script to checkout or update a svn or git repo as source service
|
|
|
|
# defaults
|
|
MYARCHIVE=""
|
|
MYFILES=""
|
|
OUTFILE="."
|
|
|
|
while test $# -gt 0; do
|
|
case $1 in
|
|
*-archive)
|
|
MYARCHIVE="${2##*/}"
|
|
shift
|
|
;;
|
|
*-file|*-files)
|
|
MYFILES="$MYFILES ${2}"
|
|
shift
|
|
;;
|
|
*-outfilename)
|
|
OUTFILE="${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 --file 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" --wildcards $MYFILES || exit 1
|
|
elif [ "${existing_archive%.tar.bz2}" != "$existing_archive" ]; then
|
|
tar xfj "$existing_archive" --wildcards $MYFILES || exit 1
|
|
elif [ "${existing_archive%.tar.xz}" != "$existing_archive" ]; then
|
|
tar xfJ "$existing_archive" --wildcards $MYFILES || exit 1
|
|
elif [ "${existing_archive%.tar}" != "$existing_archive" ]; then
|
|
tar xf "$existing_archive" --wildcards $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
|
|
for i in $MYFILES; do
|
|
mv "$i" "$OUTFILE"
|
|
done
|
|
else
|
|
echo "ERROR: archive not found: $existing_archive"
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|