2022-04-13 21:10:51 +00:00
|
|
|
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
IFS=$(printf '\n\t')
|
|
|
|
VER=2.5
|
|
|
|
BACK=5
|
2022-01-14 18:41:46 +00:00
|
|
|
HERE=$(dirname "$(readlink -f "${0}")")
|
2022-04-13 21:10:51 +00:00
|
|
|
. "$HERE/headers" && header || exit 1
|
2021-05-29 20:13:12 +00:00
|
|
|
|
2022-04-13 21:10:51 +00:00
|
|
|
if test $# -eq 0; then
|
|
|
|
tput setaf 3
|
2022-03-25 22:40:58 +00:00
|
|
|
echo "Usage: $(basename "$0") [option] [FILE/FOLDER/URL] [dwarfs option]"
|
2021-05-29 20:13:12 +00:00
|
|
|
echo " Compress a given AppDir (default)"
|
2022-04-13 21:10:51 +00:00
|
|
|
tput setaf 7
|
2021-05-29 20:13:12 +00:00
|
|
|
echo " -a, --appimage Convert a given AppImage to appdwarf"
|
2022-01-28 15:37:43 +00:00
|
|
|
echo " -B, --lookback Change dwarfs block lookback amount"
|
2022-01-01 05:50:04 +00:00
|
|
|
echo " -f, --folder Make image mount to a specified folder instead of running AppRun"
|
|
|
|
echo " -s, --separate Use old, separated header format"
|
2021-05-29 20:13:12 +00:00
|
|
|
echo " -u, --url Fetch AppImage from URL and convert to appdwarf"
|
2022-04-13 21:10:51 +00:00
|
|
|
echo
|
|
|
|
tput setaf 4
|
2022-01-25 15:53:41 +00:00
|
|
|
echo " -h, --help Print this help text"
|
2022-01-01 05:50:04 +00:00
|
|
|
echo " -v, --version Print the appdwarf version"
|
2022-04-13 21:10:51 +00:00
|
|
|
exit 0
|
|
|
|
fi
|
2021-05-29 20:13:12 +00:00
|
|
|
|
|
|
|
dwarf() {
|
2022-04-13 21:10:51 +00:00
|
|
|
mkdwarfs -i "$@" -o "$(realpath "$1").sh" -B"$BACK" --header "$HEAD"
|
2022-01-01 05:50:04 +00:00
|
|
|
chmod +x "$(realpath "$1").sh"
|
2021-05-29 20:13:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
appimage() {
|
2022-04-13 21:10:51 +00:00
|
|
|
if [ ! -f "$1" ]; then
|
|
|
|
tput setaf 1
|
2021-05-29 20:13:12 +00:00
|
|
|
echo "$1" is not a valid file
|
|
|
|
exit 1
|
|
|
|
fi
|
2022-04-13 21:10:51 +00:00
|
|
|
chmod +x "$1"
|
|
|
|
rm -rf squashfs-root
|
|
|
|
case $1 in
|
|
|
|
/*) "$1" --appimage-extract || exit 1 ;;
|
|
|
|
*) ./"$1" --appimage-extract || exit 1 ;;
|
|
|
|
esac
|
|
|
|
file="$1"
|
|
|
|
shift
|
|
|
|
dwarf squashfs-root "$@"
|
|
|
|
rm -rf squashfs-root "$file"
|
|
|
|
mv squashfs-root.sh "$(basename "$file" .AppImage)".sh
|
|
|
|
exit 0
|
2021-05-29 20:13:12 +00:00
|
|
|
}
|
|
|
|
|
2021-12-31 19:24:04 +00:00
|
|
|
|
2021-05-29 20:13:12 +00:00
|
|
|
while true
|
|
|
|
do
|
|
|
|
case "$1" in
|
|
|
|
--help | -h)
|
2022-04-13 21:10:51 +00:00
|
|
|
exec appdwarf
|
2021-05-29 20:13:12 +00:00
|
|
|
;;
|
2021-12-31 19:24:04 +00:00
|
|
|
--version | -v)
|
2022-04-13 21:10:51 +00:00
|
|
|
tput setaf 5
|
2021-12-31 19:24:04 +00:00
|
|
|
echo appdwarf v"$VER"
|
|
|
|
echo Maintained by phantop.
|
2021-05-29 20:13:12 +00:00
|
|
|
exit 0
|
|
|
|
;;
|
2021-12-31 19:24:04 +00:00
|
|
|
--folder | -f)
|
2022-01-14 18:41:46 +00:00
|
|
|
header_folder "$(realpath "$2")"
|
2021-12-31 19:24:04 +00:00
|
|
|
shift 2
|
|
|
|
;;
|
2022-01-28 15:37:43 +00:00
|
|
|
--lookback | -B)
|
2022-04-13 21:10:51 +00:00
|
|
|
BACK=$2
|
2021-12-31 19:24:04 +00:00
|
|
|
shift 2
|
|
|
|
;;
|
2021-12-31 18:27:01 +00:00
|
|
|
--separate | -s)
|
|
|
|
header_separate
|
|
|
|
shift
|
|
|
|
;;
|
2021-12-31 19:37:50 +00:00
|
|
|
|
|
|
|
--appimage | -a)
|
2022-04-13 21:10:51 +00:00
|
|
|
shift
|
|
|
|
appimage "$@"
|
2021-12-31 19:37:50 +00:00
|
|
|
;;
|
2021-05-29 20:13:12 +00:00
|
|
|
--url | -u)
|
2022-04-13 21:10:51 +00:00
|
|
|
shift
|
|
|
|
file=$(basename "$1")
|
2022-01-25 15:53:41 +00:00
|
|
|
if which aria2c; then
|
2022-04-13 21:10:51 +00:00
|
|
|
aria2c -x16 -s16 "$1" -o "$file" || exit 1
|
2022-01-25 15:53:41 +00:00
|
|
|
else
|
2022-04-13 21:10:51 +00:00
|
|
|
wget "$1" -O "$file" || exit 1
|
2022-01-25 15:53:41 +00:00
|
|
|
fi
|
2022-04-13 21:10:51 +00:00
|
|
|
shift
|
|
|
|
appimage "$file" "$@"
|
2021-05-29 20:13:12 +00:00
|
|
|
;;
|
|
|
|
--)
|
|
|
|
shift; break;;
|
|
|
|
*)
|
|
|
|
break;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2022-04-13 21:10:51 +00:00
|
|
|
dwarf "$@"
|