1
0
Fork 0
mirror of https://github.com/notwa/rc synced 2024-06-26 09:07:12 -07:00

reformat archive scripts to better fit in

This commit is contained in:
Connor Olding 2021-09-28 13:41:55 -07:00
parent bf684554e6
commit bd81dc0b28
3 changed files with 215 additions and 195 deletions

View File

@ -1,16 +1,21 @@
# #!/usr/bin/env zsh
# Creates archive file # YES_ZSH
# # NO_BASH
# Authors: # NO_DASH
# Matt Hamilton <m@tthamilton.com> # NO_ASH
#
# function archive { archive() {
#
# Creates archive file
#
# Authors:
# Matt Hamilton <m@tthamilton.com>
#
local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_bin local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_bin
if (( $# < 2 )); then if (( $# < 2 )); then
cat >&2 <<EOF cat >&2 <<EOF
usage: $0 [archive_name.zip] [/path/to/include/into/archive ...] usage: $0 [archive_name.zip] [/path/to/include/into/archive ...]
Where 'archive.zip' uses any of the following extensions: Where 'archive.zip' uses any of the following extensions:
@ -19,57 +24,58 @@ Where 'archive.zip' uses any of the following extensions:
There is no '-v' switch; all operations are verbose. There is no '-v' switch; all operations are verbose.
EOF EOF
return 1 return 1
fi fi
# we are quitting (above) if there are not exactly 2 vars, # we are quitting (above) if there are not exactly 2 vars,
# so we don't need any argc check here. # so we don't need any argc check here.
# strip the path, just in case one is provided for some reason # strip the path, just in case one is provided for some reason
archive_name="${1:t}" archive_name="${1:t}"
# let paths be handled by actual archive helper # let paths be handled by actual archive helper
path_to_archive="${@:2}" path_to_archive="${@:2}"
# here, we check for dropin/multi-threaded replacements # here, we check for dropin/multi-threaded replacements
# this should eventually be moved to modules/archive/init.zsh # this should eventually be moved to modules/archive/init.zsh
# as a global alias # as a global alias
if (( $+commands[pigz] )); then if (( $+commands[pigz] )); then
_gzip_bin='pigz' _gzip_bin='pigz'
else else
_gzip_bin='gzip' _gzip_bin='gzip'
fi fi
if (( $+commands[pixz] )); then if (( $+commands[pixz] )); then
_xz_bin='pixz' _xz_bin='pixz'
else else
_xz_bin='xz' _xz_bin='xz'
fi fi
if (( $+commands[lbzip2] )); then if (( $+commands[lbzip2] )); then
_bzip2_bin='lbzip2' _bzip2_bin='lbzip2'
elif (( $+commands[pbzip2] )); then elif (( $+commands[pbzip2] )); then
_bzip2_bin='pbzip2' _bzip2_bin='pbzip2'
else else
_bzip2_bin='bzip2' _bzip2_bin='bzip2'
fi fi
_zstd_bin='zstd' _zstd_bin='zstd'
case "${archive_name}" in case "${archive_name}" in
(*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${=path_to_archive}" ;; (*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${=path_to_archive}" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${=path_to_archive}" ;; (*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${=path_to_archive}" ;;
(*.tar.xz|*.txz) tar -cvf "${archive_name}" --use-compress-program="${_xz_bin}" "${=path_to_archive}" ;; (*.tar.xz|*.txz) tar -cvf "${archive_name}" --use-compress-program="${_xz_bin}" "${=path_to_archive}" ;;
(*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${=path_to_archive}" ;; (*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${=path_to_archive}" ;;
(*.tar.zst|*.tzst) tar -cvf "${archive_name}" --use-compress-program="${_zstd_bin}" "${=path_to_archive}" ;; (*.tar.zst|*.tzst) tar -cvf "${archive_name}" --use-compress-program="${_zstd_bin}" "${=path_to_archive}" ;;
(*.tar) tar -cvf "${archive_name}" "${=path_to_archive}" ;; (*.tar) tar -cvf "${archive_name}" "${=path_to_archive}" ;;
(*.zip|*.jar) zip -r "${archive_name}" "${=path_to_archive}" ;; (*.zip|*.jar) zip -r "${archive_name}" "${=path_to_archive}" ;;
(*.rar) rar a "${archive_name}" "${=path_to_archive}" ;; (*.rar) rar a "${archive_name}" "${=path_to_archive}" ;;
(*.7z) 7za a "${archive_name}" "${=path_to_archive}" ;; (*.7z) 7za a "${archive_name}" "${=path_to_archive}" ;;
(*.gz) print "\n.gz is only useful for single files, and does not capture permissions. Use .tar.gz" ;; (*.gz) print "\n.gz is only useful for single files, and does not capture permissions. Use .tar.gz" ;;
(*.bz2) print "\n.bzip2 is only useful for single files, and does not capture permissions. Use .tar.bz2" ;; (*.bz2) print "\n.bzip2 is only useful for single files, and does not capture permissions. Use .tar.bz2" ;;
(*.xz) print "\n.xz is only useful for single files, and does not capture permissions. Use .tar.xz" ;; (*.xz) print "\n.xz is only useful for single files, and does not capture permissions. Use .tar.xz" ;;
(*.lzma) print "\n.lzma is only useful for single files, and does not capture permissions. Use .tar.lzma" ;; (*.lzma) print "\n.lzma is only useful for single files, and does not capture permissions. Use .tar.lzma" ;;
(*) print "\nunknown archive type for archive: ${archive_name}" ;; (*) print "\nunknown archive type for archive: ${archive_name}" ;;
esac esac
}
# } [ -n "${preload+-}" ] || archive "$@"

View File

@ -1,16 +1,21 @@
# #!/usr/bin/env zsh
# Lists the contents of archives. # YES_ZSH
# # NO_BASH
# Authors: # NO_DASH
# Sorin Ionescu <sorin.ionescu@gmail.com> # NO_ASH
#
# function lsarchive { lsarchive() {
#
# Lists the contents of archives.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
local verbose local verbose
if (( $# == 0 )); then if (( $# == 0 )); then
cat >&2 <<EOF cat >&2 <<EOF
usage: $0 [-option] [file ...] usage: $0 [-option] [file ...]
options: options:
@ -18,45 +23,47 @@ options:
Report bugs to <sorin.ionescu@gmail.com>. Report bugs to <sorin.ionescu@gmail.com>.
EOF EOF
fi return 1
fi
if [[ "$1" == "-v" || "$1" == "--verbose" ]]; then if [[ "$1" == "-v" || "$1" == "--verbose" ]]; then
verbose=0 verbose=0
shift shift
fi fi
while (( $# > 0 )); do while (( $# > 0 )); do
if [[ ! -s "$1" ]]; then if [[ ! -s "$1" ]]; then
print "$0: file not valid: $1" >&2 print "$0: file not valid: $1" >&2
shift shift
continue continue
fi fi
case "$1:l" in case "$1:l" in
(*.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;; (*.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;; (*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;;
(*.tar.xz|*.txz) tar --xz --help &> /dev/null \ (*.tar.xz|*.txz) tar --xz --help &> /dev/null \
&& tar --xz -t${verbose:+v}f "$1" \ && tar --xz -t${verbose:+v}f "$1" \
|| xzcat "$1" | tar t${verbose:+v}f - ;; || xzcat "$1" | tar t${verbose:+v}f - ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -t${verbose:+v}f "$1" \ && tar --lzma -t${verbose:+v}f "$1" \
|| lzcat "$1" | tar x${verbose:+v}f - ;; || lzcat "$1" | tar x${verbose:+v}f - ;;
(*.tar.zst|*.tzst) tar -I zstd -t${verbose:+v}f "$1" ;; (*.tar.zst|*.tzst) tar -I zstd -t${verbose:+v}f "$1" ;;
(*.tar) tar t${verbose:+v}f "$1" ;; (*.tar) tar t${verbose:+v}f "$1" ;;
(*.zip|*.jar) unzip -l${verbose:+v} "$1" ;; (*.zip|*.jar) unzip -l${verbose:+v} "$1" ;;
(*.rar) ( (( $+commands[unrar] )) \ (*.rar) ( (( $+commands[unrar] )) \
&& unrar ${${verbose:+v}:-l} "$1" ) \ && unrar ${${verbose:+v}:-l} "$1" ) \
|| ( (( $+commands[rar] )) \ || ( (( $+commands[rar] )) \
&& rar ${${verbose:+v}:-l} "$1" ) \ && rar ${${verbose:+v}:-l} "$1" ) \
|| lsar ${verbose:+-l} "$1" ;; || lsar ${verbose:+-l} "$1" ;;
(*.7z) 7za l "$1" ;; (*.7z) 7za l "$1" ;;
(*) (*)
print "$0: cannot list: $1" >&2 print "$0: cannot list: $1" >&2
success=1 success=1
;; ;;
esac esac
shift shift
done done
}
# } [ -n "${preload+-}" ] || lsarchive "$@"

View File

@ -1,21 +1,26 @@
# #!/usr/bin/env zsh
# Extracts the contents of archives. # YES_ZSH
# # NO_BASH
# Authors: # NO_DASH
# Sorin Ionescu <sorin.ionescu@gmail.com> # NO_ASH
#
# function unarchive { unarchive() {
#
# Extracts the contents of archives.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
local remove_archive local remove_archive
local success local success
local file_name local file_name
local file_path local file_path
local extract_dir local extract_dir
local _gzip_bin _bzip2_bin _xz_bin _zstd_bin local _gzip_bin _bzip2_bin _xz_bin _zstd_bin
if (( $# == 0 )); then if (( $# == 0 )); then
cat >&2 <<EOF cat >&2 <<EOF
usage: $0 [-option] [file ...] usage: $0 [-option] [file ...]
options: options:
@ -23,89 +28,91 @@ options:
Report bugs to <sorin.ionescu@gmail.com>. Report bugs to <sorin.ionescu@gmail.com>.
EOF EOF
fi return 1
fi
remove_archive=1 remove_archive=1
if [[ "$1" == "-r" || "$1" == "--remove" ]]; then if [[ "$1" == "-r" || "$1" == "--remove" ]]; then
remove_archive=0 remove_archive=0
shift shift
fi fi
# here, we check for dropin/multi-threaded replacements # here, we check for dropin/multi-threaded replacements
# this should eventually be moved to modules/archive/init.zsh # this should eventually be moved to modules/archive/init.zsh
# as a global alias # as a global alias
if (( $+commands[pigz] )); then if (( $+commands[pigz] )); then
_gzip_bin='pigz' _gzip_bin='pigz'
else else
_gzip_bin='gzip' _gzip_bin='gzip'
fi fi
if (( $+commands[pixz] )); then if (( $+commands[pixz] )); then
_xz_bin='pixz' _xz_bin='pixz'
else else
_xz_bin='xz' _xz_bin='xz'
fi fi
if (( $+commands[lbzip2] )); then if (( $+commands[lbzip2] )); then
_bzip2_bin='lbzip2' _bzip2_bin='lbzip2'
elif (( $+commands[pbzip2] )); then elif (( $+commands[pbzip2] )); then
_bzip2_bin='pbzip2' _bzip2_bin='pbzip2'
else else
_bzip2_bin='bzip2' _bzip2_bin='bzip2'
fi fi
_zstd_bin='zstd' _zstd_bin='zstd'
while (( $# > 0 )); do while (( $# > 0 )); do
if [[ ! -s "$1" ]]; then if [[ ! -s "$1" ]]; then
print "$0: file not valid: $1" >&2 print "$0: file not valid: $1" >&2
shift shift
continue continue
fi fi
success=0 success=0
file_name="${1:t}" file_name="${1:t}"
file_path="${1:A}" file_path="${1:A}"
extract_dir="${file_name:r}" extract_dir="${file_name:r}"
case "$1:l" in case "$1:l" in
(*.tar.gz|*.tgz) tar -xvf "$1" --use-compress-program="${_gzip_bin}" ;; (*.tar.gz|*.tgz) tar -xvf "$1" --use-compress-program="${_gzip_bin}" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar -xvf "$1" --use-compress-program="${_bzip2_bin}" ;; (*.tar.bz2|*.tbz|*.tbz2) tar -xvf "$1" --use-compress-program="${_bzip2_bin}" ;;
(*.tar.xz|*.txz) tar -xvf "$1" --use-compress-program="${_xz_bin}" ;; (*.tar.xz|*.txz) tar -xvf "$1" --use-compress-program="${_xz_bin}" ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -xvf "$1" \ && tar --lzma -xvf "$1" \
|| lzcat "$1" | tar -xvf - ;; || lzcat "$1" | tar -xvf - ;;
(*.tar.zst|*.tzst) tar -xvf "$1" --use-compress-program="${_zstd_bin}" ;; (*.tar.zst|*.tzst) tar -xvf "$1" --use-compress-program="${_zstd_bin}" ;;
(*.tar) tar -xvf "$1" ;; (*.tar) tar -xvf "$1" ;;
(*.gz) gunzip "$1" ;; (*.gz) gunzip "$1" ;;
(*.bz2) bunzip2 "$1" ;; (*.bz2) bunzip2 "$1" ;;
(*.xz) unxz "$1" ;; (*.xz) unxz "$1" ;;
(*.lzma) unlzma "$1" ;; (*.lzma) unlzma "$1" ;;
(*.Z) uncompress "$1" ;; (*.Z) uncompress "$1" ;;
(*.zip|*.jar) unzip "$1" -d $extract_dir ;; (*.zip|*.jar) unzip "$1" -d $extract_dir ;;
(*.rar) ( (( $+commands[unrar] )) \ (*.rar) ( (( $+commands[unrar] )) \
&& unrar x -ad "$1" ) \ && unrar x -ad "$1" ) \
|| ( (( $+commands[rar] )) \ || ( (( $+commands[rar] )) \
&& rar x -ad "$1" ) \ && rar x -ad "$1" ) \
|| unar -d "$1" ;; || unar -d "$1" ;;
(*.7z) 7za x "$1" ;; (*.7z) 7za x "$1" ;;
(*.deb) (*.deb)
mkdir -p "$extract_dir/control" mkdir -p "$extract_dir/control"
mkdir -p "$extract_dir/data" mkdir -p "$extract_dir/data"
cd "$extract_dir"; ar vx "${file_path}" > /dev/null cd "$extract_dir"; ar vx "${file_path}" > /dev/null
cd control; tar xvf ../control.tar.* cd control; tar xvf ../control.tar.*
cd ../data; tar xvf ../data.tar.* cd ../data; tar xvf ../data.tar.*
cd ..; rm control.tar.* data.tar.* debian-binary cd ..; rm control.tar.* data.tar.* debian-binary
cd .. cd ..
;; ;;
(*) (*)
print "$0: cannot extract: $1" >&2 print "$0: cannot extract: $1" >&2
success=1 success=1
;; ;;
esac esac
(( success = $success > 0 ? $success : $? )) (( success = $success > 0 ? $success : $? ))
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1" (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
shift shift
done done
}
# } [ -n "${preload+-}" ] || unarchive "$@"