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
This commit is contained in:
Phantop 2021-12-31 13:27:01 -05:00
parent 2f810ade3e
commit 913ad4ccee
2 changed files with 44 additions and 16 deletions

View File

@ -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

35
headers Normal file
View File

@ -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
}