#!/bin/bash set -eo pipefail IFS=$'\n\t' HERE=$(dirname $(readlink -f "${0}")) source $HERE/headers usage(){ echo "Usage: $(basename "$0") [option] [FILE/FOLDER/URL]" 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() { mkdwarfs -i "$1" -o "$(basename "$1").sh" -B5 "${@:2}" --header $HEAD chmod +x "$(basename "$1").sh" } appimage() { if [[ -f "$1" ]] then chmod +x "$1" rm -rf squashfs-root ./"$1" --appimage-extract || exit 1 dwarf squashfs-root "${@:2}" rm -rf squashfs-root mv squashfs-root.sh "$(basename "$1" .AppImage)".sh else echo "$1" is not a valid file exit 1 fi } header while true do case "$1" in --help | -h) usage exit 0 ;; --version) echo "$version" exit 0 ;; --appimage | -a) appimage "${@:2}" exit 0 ;; --separate | -s) header_separate shift ;; --url | -u) file=$(basename "$2") wget "$2" -O "$file" || exit 1 appimage "$file" "${@:3}" rm "$file" exit 0 ;; --) shift; break;; *) break;; esac done if test $# -eq 0; then usage exit 0 else dwarf "$@" exit 0 fi