Added archivemount support to cdz if present
This commit is contained in:
parent
a4438fe38e
commit
b4b41660cf
1 changed files with 36 additions and 7 deletions
43
cdz
43
cdz
|
|
@ -20,6 +20,10 @@ then
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check if archivemount is present
|
||||||
|
which archivemount 1>/dev/null 2>/dev/null
|
||||||
|
hasmounter=$?
|
||||||
|
|
||||||
file "$target" 1>/dev/null
|
file "$target" 1>/dev/null
|
||||||
exitcode=$?
|
exitcode=$?
|
||||||
report=$(file "$target")
|
report=$(file "$target")
|
||||||
|
|
@ -28,6 +32,8 @@ report=$(file "$target")
|
||||||
comm1=(:)
|
comm1=(:)
|
||||||
comm2=(echo "Unsupported archive type$add: \"$target\"")
|
comm2=(echo "Unsupported archive type$add: \"$target\"")
|
||||||
comm3=(:)
|
comm3=(:)
|
||||||
|
comm4=(:)
|
||||||
|
comm5=(:)
|
||||||
|
|
||||||
echo $report | grep "tar archive" 1>/dev/null
|
echo $report | grep "tar archive" 1>/dev/null
|
||||||
istar=$?
|
istar=$?
|
||||||
|
|
@ -47,19 +53,31 @@ then
|
||||||
istar=0
|
istar=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if (( $NO_ARCHIVEMOUNT == 1 )); then
|
||||||
|
hasmounter=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( $hasmounter == 0 )); then
|
||||||
|
echo "We have \`archivemount\`, so we'll use that!"
|
||||||
|
echo "If you'd prefer we not use it, please specify NO_ARCHIVEMOUNT=1"
|
||||||
|
istar=1
|
||||||
|
iszip=1
|
||||||
|
israr=1
|
||||||
|
fi
|
||||||
|
|
||||||
# Now we set the right command
|
# Now we set the right command
|
||||||
if (( istar == 0 )); then
|
if (( $istar == 0 )); then
|
||||||
comm2=(tar xvf "$target" -C)
|
comm2=(tar xvf "$target" -C)
|
||||||
elif (( iszip == 0 )); then
|
elif (( $iszip == 0 )); then
|
||||||
which unzip 1>/dev/null
|
which unzip 1>/dev/null
|
||||||
exitcode=$?
|
exitcode=$?
|
||||||
if (( exitcode == 0 )); then
|
if (( $exitcode == 0 )); then
|
||||||
comm2=(unzip -q "$target" -d)
|
comm2=(unzip -q "$target" -d)
|
||||||
else
|
else
|
||||||
comm1=(echo "The utility 'unzip' is missing, please install it")
|
comm1=(echo "The utility 'unzip' is missing, please install it")
|
||||||
comm3=(exit 1)
|
comm3=(exit 1)
|
||||||
fi
|
fi
|
||||||
elif (( israr == 0 )); then
|
elif (( $israr == 0 )); then
|
||||||
which unrar 1>/dev/null
|
which unrar 1>/dev/null
|
||||||
exitcode=$?
|
exitcode=$?
|
||||||
if (( exitcode == 0 )); then
|
if (( exitcode == 0 )); then
|
||||||
|
|
@ -68,6 +86,10 @@ elif (( israr == 0 )); then
|
||||||
comm1=(echo "The utility 'unrar' is missing, please install it")
|
comm1=(echo "The utility 'unrar' is missing, please install it")
|
||||||
comm3=(exit 1)
|
comm3=(exit 1)
|
||||||
fi
|
fi
|
||||||
|
elif (( $hasmounter == 0 )); then
|
||||||
|
comm2=(archivemount "$target")
|
||||||
|
comm4=(cd ..)
|
||||||
|
comm5=(umount)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create the temp dir, usually
|
# Create the temp dir, usually
|
||||||
|
|
@ -80,9 +102,16 @@ dir=$(mktemp -d /tmp/extracted.XXXXXXXX)
|
||||||
|
|
||||||
currentpath=$(realpath .)
|
currentpath=$(realpath .)
|
||||||
cd $dir
|
cd $dir
|
||||||
ln -s $currentpath ./link-back
|
|
||||||
echo "A symlink to your original path has been created under the name \`link-back\`."
|
# With archivemount, making a symlink will alter the archive
|
||||||
echo "You can use this to copy out files, but you can also just access your filesystem regularly."
|
if (( $hasmounter == 1 )); then
|
||||||
|
ln -s $currentpath ./link-back
|
||||||
|
echo "A symlink to your original path has been created under the name \`link-back\`."
|
||||||
|
echo "You can use this to copy out files, but you can also just access your filesystem regularly."
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Type 'exit' to exit the extracted archive's folder and auto-delete it."
|
echo "Type 'exit' to exit the extracted archive's folder and auto-delete it."
|
||||||
eval $SHELL
|
eval $SHELL
|
||||||
|
"${comm4[@]}"
|
||||||
|
"${comm5[@]}" $dir
|
||||||
rm -rf $dir
|
rm -rf $dir
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue