do-extract: move main logic into helper function
This commit is contained in:
parent
38c01ef74e
commit
2deec738e1
2 changed files with 165 additions and 122 deletions
|
@ -45,128 +45,7 @@ hook() {
|
|||
unset found
|
||||
continue
|
||||
fi
|
||||
|
||||
case $curfile in
|
||||
*.tar.lzma) cursufx="txz";;
|
||||
*.tar.lz) cursufx="tlz";;
|
||||
*.tlz) cursufx="tlz";;
|
||||
*.tar.xz) cursufx="txz";;
|
||||
*.txz) cursufx="txz";;
|
||||
*.tar.bz2) cursufx="tbz";;
|
||||
*.tbz) cursufx="tbz";;
|
||||
*.tar.gz) cursufx="tgz";;
|
||||
*.tgz) cursufx="tgz";;
|
||||
*.tar.zst) cursufx="tzst";;
|
||||
*.tzst) cursufx="tzst";;
|
||||
*.gz) cursufx="gz";;
|
||||
*.xz) cursufx="xz";;
|
||||
*.bz2) cursufx="bz2";;
|
||||
*.zst) cursufx="zst";;
|
||||
*.tar) cursufx="tar";;
|
||||
*.zip) cursufx="zip";;
|
||||
*.rpm) cursufx="rpm";;
|
||||
*.deb) cursufx="deb";;
|
||||
*.patch) cursufx="txt";;
|
||||
*.diff) cursufx="txt";;
|
||||
*.txt) cursufx="txt";;
|
||||
*.sh) cursufx="txt";;
|
||||
*.7z) cursufx="7z";;
|
||||
*.gem) cursufx="gem";;
|
||||
*.crate) cursufx="crate";;
|
||||
*) msg_error "$pkgver: unknown distfile suffix for $curfile.\n";;
|
||||
esac
|
||||
|
||||
case ${cursufx} in
|
||||
tar|txz|tbz|tlz|tgz|tzst|crate)
|
||||
$TAR_CMD -x --no-same-permissions --no-same-owner -f $srcdir/$curfile -C "$extractdir"
|
||||
if [ $? -ne 0 ]; then
|
||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||
fi
|
||||
;;
|
||||
gz|bz2|xz|zst)
|
||||
cp -f $srcdir/$curfile "$extractdir"
|
||||
cd "$extractdir"
|
||||
case ${cursufx} in
|
||||
gz)
|
||||
gunzip -f $curfile
|
||||
;;
|
||||
bz2)
|
||||
bunzip2 -f $curfile
|
||||
;;
|
||||
xz)
|
||||
unxz -f $curfile
|
||||
;;
|
||||
zst)
|
||||
unzstd $curfile
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
zip)
|
||||
if command -v unzip &>/dev/null; then
|
||||
unzip -o -q $srcdir/$curfile -d "$extractdir"
|
||||
if [ $? -ne 0 ]; then
|
||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||
fi
|
||||
elif command -v bsdtar &>/dev/null; then
|
||||
bsdtar -xf $srcdir/$curfile -C "$extractdir"
|
||||
if [ $? -ne 0 ]; then
|
||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||
fi
|
||||
else
|
||||
msg_error "$pkgver: cannot find unzip or bsdtar bin for extraction.\n"
|
||||
fi
|
||||
;;
|
||||
rpm)
|
||||
if ! command -v bsdtar &>/dev/null; then
|
||||
msg_error "$pkgver: cannot find bsdtar for extraction.\n"
|
||||
fi
|
||||
bsdtar -x --no-same-permissions --no-same-owner -f $srcdir/$curfile -C "$extractdir"
|
||||
if [ $? -ne 0 ]; then
|
||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||
fi
|
||||
;;
|
||||
deb)
|
||||
if command -v bsdtar &>/dev/null; then
|
||||
bsdtar -x -O -f "$srcdir/$curfile" "data.tar.*" |
|
||||
bsdtar -C "$extractdir" -x --no-same-permissions --no-same-owner
|
||||
if [ $? -ne 0 ]; then
|
||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||
fi
|
||||
else
|
||||
msg_error "$pkgver: cannot find bsdtar for extraction.\n"
|
||||
fi
|
||||
;;
|
||||
txt)
|
||||
cp -f $srcdir/$curfile "$extractdir"
|
||||
;;
|
||||
7z)
|
||||
if command -v 7z &>/dev/null; then
|
||||
7z x $srcdir/$curfile -o"$extractdir"
|
||||
if [ $? -ne 0 ]; then
|
||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||
fi
|
||||
elif command -v bsdtar &>/dev/null; then
|
||||
bsdtar -xf $srcdir/$curfile -C "$extractdir"
|
||||
if [ $? -ne 0 ]; then
|
||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||
fi
|
||||
else
|
||||
msg_error "$pkgver: cannot find 7z or bsdtar bin for extraction.\n"
|
||||
fi
|
||||
;;
|
||||
gem)
|
||||
innerdir="$extractdir/${wrksrc##*/}"
|
||||
mkdir -p "$innerdir"
|
||||
$TAR_CMD -xOf $srcdir/$curfile data.tar.gz |
|
||||
$TAR_CMD -xz -C "$innerdir" -f -
|
||||
if [ $? -ne 0 ]; then
|
||||
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
msg_error "$pkgver: cannot guess $curfile extract suffix. ($cursufx)\n"
|
||||
;;
|
||||
esac
|
||||
vsrcextract --no-strip-components -C "$extractdir" "$curfile"
|
||||
done
|
||||
|
||||
cd "$extractdir"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue