2021-06-08 19:53:29 +00:00
|
|
|
#!/bin/bash
|
2021-05-29 20:13:12 +00:00
|
|
|
set -eo pipefail
|
|
|
|
IFS=$'\n\t'
|
2021-11-01 22:18:17 +00:00
|
|
|
version=1.2
|
2021-05-29 20:13:12 +00:00
|
|
|
|
|
|
|
usage(){
|
2021-06-08 19:53:29 +00:00
|
|
|
echo "Usage: $(basename "$0") [option] [FILE/FOLDER/URL]"
|
2021-05-29 20:13:12 +00:00
|
|
|
echo " Compress a given AppDir (default)"
|
|
|
|
echo " -a, --appimage Convert a given AppImage to appdwarf"
|
|
|
|
echo " -u, --url Fetch AppImage from URL and convert to appdwarf"
|
|
|
|
}
|
|
|
|
|
|
|
|
dwarf() {
|
2021-10-28 17:20:08 +00:00
|
|
|
mkdwarfs -i "$1" -o "$(basename "$1").sh" -B5 "${@:2}" --header <(cat << 'EOF'
|
2021-05-29 20:13:12 +00:00
|
|
|
#!/bin/sh
|
2021-08-10 01:30:43 +00:00
|
|
|
DIR="$(mktemp -td dwarf_$(basename "$0")XXXXX)"
|
2021-11-19 05:26:09 +00:00
|
|
|
ARG="-o offset=auto -o tidy_strategy=swap -o workers=4"
|
|
|
|
dwarfs $ARG "$0" "$DIR" 2>/dev/null
|
|
|
|
export APPDWARF_CMD=$(basename "$0")
|
2021-08-05 01:27:59 +00:00
|
|
|
"$DIR/AppRun" "$@"
|
2021-11-19 05:26:09 +00:00
|
|
|
fusermount -u "$DIR"
|
|
|
|
rmdir "$DIR"
|
2021-05-29 20:13:12 +00:00
|
|
|
exit
|
|
|
|
EOF
|
|
|
|
)
|
|
|
|
|
2021-07-10 03:40:58 +00:00
|
|
|
chmod +x "$(basename "$1").sh"
|
2021-05-29 20:13:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
appimage() {
|
|
|
|
if [[ -f "$1" ]]
|
|
|
|
then
|
|
|
|
chmod +x "$1"
|
2021-06-23 01:06:07 +00:00
|
|
|
rm -rf squashfs-root
|
2021-05-29 20:13:12 +00:00
|
|
|
./"$1" --appimage-extract || exit 1
|
2021-07-10 03:40:58 +00:00
|
|
|
dwarf squashfs-root "${@:2}"
|
2021-05-29 20:13:12 +00:00
|
|
|
rm -rf squashfs-root
|
2021-06-08 19:53:29 +00:00
|
|
|
mv squashfs-root.sh "$(basename "$1" .AppImage)".sh
|
2021-05-29 20:13:12 +00:00
|
|
|
else
|
|
|
|
echo "$1" is not a valid file
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
while true
|
|
|
|
do
|
|
|
|
case "$1" in
|
|
|
|
--help | -h)
|
|
|
|
usage
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
--version)
|
|
|
|
echo "$version"
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
--appimage | -a)
|
2021-07-10 03:40:58 +00:00
|
|
|
appimage "${@:2}"
|
2021-05-29 20:13:12 +00:00
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
--url | -u)
|
|
|
|
file=$(basename "$2")
|
|
|
|
wget "$2" -O "$file" || exit 1
|
2021-07-10 03:40:58 +00:00
|
|
|
appimage "$file" "${@:3}"
|
2021-05-29 20:13:12 +00:00
|
|
|
rm "$file"
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
--)
|
|
|
|
shift; break;;
|
|
|
|
*)
|
|
|
|
break;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
if test $# -eq 0; then
|
|
|
|
usage
|
|
|
|
exit 0
|
|
|
|
else
|
2021-07-10 03:40:58 +00:00
|
|
|
dwarf "$@"
|
2021-05-29 20:13:12 +00:00
|
|
|
exit 0
|
|
|
|
fi
|