From 913ad4ccee7de9fbde49bfa1211a4dba35075ecf Mon Sep 17 00:00:00 2001 From: Phantop Date: Fri, 31 Dec 2021 13:27:01 -0500 Subject: [PATCH] Mount all instances of an appdwarf to one folder Old method still exists under the -s/--separate option Not sure if there's any reason to still use it; we'll see --- appdwarf | 25 +++++++++---------------- headers | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 16 deletions(-) create mode 100644 headers diff --git a/appdwarf b/appdwarf index 607404e..364a214 100755 --- a/appdwarf +++ b/appdwarf @@ -1,7 +1,8 @@ #!/bin/bash set -eo pipefail IFS=$'\n\t' -version=1.2 +HERE=$(dirname $(readlink -f "${0}")) +source $HERE/headers usage(){ echo "Usage: $(basename "$0") [option] [FILE/FOLDER/URL]" @@ -11,20 +12,8 @@ usage(){ } dwarf() { - mkdwarfs -i "$1" -o "$(basename "$1").sh" -B5 "${@:2}" --header <(cat << 'EOF' -#!/bin/sh -DIR="$(mktemp -td dwarf_$(basename "$0")XXXXX)" -ARG="-o offset=auto -o tidy_strategy=swap -o workers=4" -dwarfs $ARG "$0" "$DIR" 2>/dev/null -export APPDWARF_CMD=$(basename "$0") -"$DIR/AppRun" "$@" -fusermount -u "$DIR" -rmdir "$DIR" -exit -EOF -) - -chmod +x "$(basename "$1").sh" + mkdwarfs -i "$1" -o "$(basename "$1").sh" -B5 "${@:2}" --header $HEAD + chmod +x "$(basename "$1").sh" } appimage() { @@ -42,7 +31,7 @@ appimage() { fi } - +header while true do case "$1" in @@ -58,6 +47,10 @@ do appimage "${@:2}" exit 0 ;; + --separate | -s) + header_separate + shift + ;; --url | -u) file=$(basename "$2") wget "$2" -O "$file" || exit 1 diff --git a/headers b/headers new file mode 100644 index 0000000..4bdae2d --- /dev/null +++ b/headers @@ -0,0 +1,35 @@ +#!/bin/bash +HEAD=/tmp/dwarfhead +header_separate() { + cat > $HEAD << 'EOF' +#!/bin/sh +DIR="$(mktemp -td dwarf_$(basename "$0")XXXXX)" +ARG="-o offset=auto -o tidy_strategy=swap -o workers=4" +dwarfs $ARG "$0" "$DIR" 2>/dev/null +export APPDWARF_CMD=$(basename "$0") +"$DIR/AppRun" "$@" +fusermount -u "$DIR" +rmdir "$DIR" +exit +EOF +} + +header() { + cat > $HEAD << 'EOF' +#!/bin/sh +DIR="/tmp/dwarf_$(echo "$0" | md5sum | head -c5)$(basename "$0")" +export APPDWARF_CMD=$(basename "$0") + +if [[ -d $DIR ]]; then + "$DIR/AppRun" "$@" +else + mkdir "$DIR" + ARG="-o offset=auto -o tidy_strategy=swap -o workers=4" + dwarfs $ARG "$0" "$DIR" 2>/dev/null + "$DIR/AppRun" "$@" +fi +fusermount -qu "$DIR" +rmdir "$DIR" +exit +EOF +}