| #!/bin/bash |
| # gzip-like CLI wrapper for p7zip |
| set -e |
| |
| compress=true |
| file= |
| |
| usage () |
| { |
| echo "Usage: $0 [-d] [-h|--help] [file]" |
| exit 1 |
| } |
| |
| while [ "$#" != "0" ] ; do |
| case "$1" in |
| -d) compress=false ;; |
| -c) echo "$0: ignoring $1 option (not yet implemented)" ;; |
| -h|--help) usage ;; |
| *) |
| if [ "${file}" = "" ] ; then |
| file="$1" |
| else |
| usage |
| fi |
| ;; |
| esac |
| shift |
| done |
| |
| # make sure they're present, before we screw up |
| for i in mktemp 7z rm cat tty ; do |
| if ! which $i > /dev/null ; then |
| echo "$0: $i: command not found" |
| exit 1 |
| fi |
| done |
| |
| if [ "${file}" != "" ] ; then |
| if ${compress} ; then |
| 7z a ${file}.7z ${file} |
| rm ${file} |
| else |
| case ${file} in |
| *.7z) |
| 7z x ${file} |
| rm ${file} |
| ;; |
| *) |
| echo "$0: ${file}: unknown suffix -- ignored" |
| ;; |
| esac |
| fi |
| exit 0 |
| fi |
| |
| tmp=`mktemp` |
| trap "rm -f ${tmp}" 0 |
| |
| if ${compress} ; then |
| if tty > /dev/null ; then |
| echo "$0: compressed data not written to a terminal." |
| echo "For help, type: $0 -h" |
| exit 1 |
| fi |
| rm -f ${tmp} |
| 7z a ${tmp} -si >/dev/null |
| cat ${tmp} |
| else |
| cat > ${tmp} |
| 7z x ${tmp} -so 2>/dev/null | cat |
| fi |
| |
| rm -f ${tmp} |