Accepting request 69435 from home:dibo2010:buildservice

Added raname opttion

OBS-URL: https://build.opensuse.org/request/show/69435
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Tools/obs-service-recompress?expand=0&rev=6
This commit is contained in:
Adrian Schröter 2011-05-03 19:40:21 +00:00 committed by Git OBS Bridge
parent 541c83f928
commit 8f7661f399
3 changed files with 51 additions and 26 deletions

View File

@ -21,6 +21,8 @@ It supports to compress, uncompress or recompress files from or to
bz2 : Bzip2 Compression
xz : XZ Compression
It also allow to rename the archive
%prep
%setup -q -D -T 0 -n .

View File

@ -1,17 +1,21 @@
#!/bin/bash
set -x
# A simple script to checkout or update a svn or git repo as source service
#
# A simple script to recomress the archive
#
#
# (C) 2010 by Adrian Schröter <adrian@suse.de>
#
# 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.
# See http://www.gnu.org/licenses/gpl-2.0.html for full license text.
#
# 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.
# See http://www.gnu.org/licenses/gpl-2.0.html for full license text.
# defaults
MYCOMPRESSION=""
RENAME_PATTERN=""
FILES=""
while test $# -gt 0; do
@ -20,6 +24,10 @@ while test $# -gt 0; do
MYCOMPRESSION="$2"
shift
;;
*-rename_pattern)
RENAME_PATTERN="$2"
shift
;;
*-file)
FILES="$FILES ${2##*/}"
shift
@ -30,7 +38,7 @@ while test $# -gt 0; do
;;
*)
echo Unknown parameter $1.
echo 'Usage: recompress --compression $COMPRESSION --file $FILE --outdir $OUT'
echo 'Usage: recompress --compression $COMPRESSION --rename_pattern $RENAME_PATTERN --file $FILE --outdir $OUT'
exit 1
;;
esac
@ -48,21 +56,26 @@ if [ -z "$MYOUTDIR" ]; then
echo "ERROR: no output directory is given via --outdir parameter!"
exit 1
fi
if [ -n $RENAME_PATTERN ] ; then
MYVERSION=""
MYRELEASE=""
if [ -f _service:extract_version:release ]; then
MYRELEASE=`cat _service:extract_version:release`
fi
if [ -f _service:extract_version:version ]; then
MYVERSION=`cat _service:extract_version:version`
fi
RENAME_PATTERN=${RENAME_PATTERN//%RELEASE%/$MYRELEASE}
RENAME_PATTERN=${RENAME_PATTERN//%VERSION%/$MYVERSION}
fi
for i in $FILES; do
FILE=`ls -1 "$i" || ls -1 "_service:*:$i"`
if [ ! -f "$FILE" ]; then
echo "Unknown file $i"
exit 1
fi
FILE=`ls -1 $i`
UNCOMPRESS="cat"
BASENAME="$FILE"
if [ "${FILE%.gz}" != "$FILE" ]; then
UNCOMPRESS="gunzip -c"
BASENAME="${FILE%.gz}"
elif [ "${FILE%.tgz}" != "$FILE" ]; then
UNCOMPRESS="gunzip -c"
BASENAME="${FILE%.tgz}.tar"
elif [ "${FILE%.bz2}" != "$FILE" ]; then
UNCOMPRESS="bunzip2 -c"
BASENAME="${FILE%.bz2}"
@ -70,26 +83,33 @@ for i in $FILES; do
UNCOMPRESS="xz -dc"
BASENAME="${FILE%.xz}"
fi
$UNCOMPRESS "$FILE" > "$MYOUTDIR/$BASENAME" || exit 1
if [ -n $RENAME_PATTERN ]; then
if [ "${BASENAME%.tar}" != "$BASENAME" ]; then
tar xf $MYOUTDIR/$BASENAME -C $MYOUTDIR || exit 1
OLDDIR=${BASENAME%.tar}
OLDDIR=${OLDDIR##_service:*:}
mv "$MYOUTDIR/$OLDDIR" "$MYOUTDIR/$RENAME_PATTERN" || exit 1
tar cf "$MYOUTDIR/$RENAME_PATTERN.tar" -C $MYOUTDIR $RENAME_PATTERN || exit 1
rm -rf "$MYOUTDIR/$RENAME_PATTERN" "$MYOUTDIR/$BASENAME"|| exit 1
BASENAME="$RENAME_PATTERN.tar"
fi
fi
if [ "$MYCOMPRESSION" == "gz" ]; then
COMPRESS="gzip -c -"
NEWFILE="${BASENAME#_service:}.gz"
gzip "$MYOUTDIR/$BASENAME"
elif [ "$MYCOMPRESSION" == "bz2" ]; then
COMPRESS="bzip2 -c -"
NEWFILE="${BASENAME#_service:}.bz2"
bzip2 "$MYOUTDIR/$BASENAME"
elif [ "$MYCOMPRESSION" == "xz" ]; then
COMPRESS="xz -c -"
NEWFILE="${BASENAME#_service:}.xz"
xz "$MYOUTDIR/$BASENAME"
elif [ "$MYCOMPRESSION" == "none" ]; then
COMPRESS="cat -"
NEWFILE="${BASENAME#_service:}"
else
echo "ERROR: Unknown compression $MYCOMPRESSION"
exit 1
fi
# do the real work
$UNCOMPRESS "$FILE" | $COMPRESS > "$MYOUTDIR/$NEWFILE" || exit 1
if [ "${FILE#_service:}" != "$FILE" ]; then
# we can remove service files, no need to store them twice

View File

@ -14,6 +14,9 @@
<allowedvalue>xz</allowedvalue>
<required/>
</parameter>
<parameter name="rename_pattern">
<description>Rename the archive. You can use %VERSION% or %RELESE% variables</description>
</parameter>
<parameter name="file">
<description>name of file to be recompressed. RegExp are allowed.</description>
<required/>