From 27672016e0295826a2f0e5139893cd5f50e19be5 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 27 May 2022 15:43:58 -0500 Subject: [PATCH] move compress/extract functions from lfrc to its own script compress.sh --- .config/lf/lfrc | 33 +-------------- .local/scripts/compress.sh | 84 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 31 deletions(-) create mode 100755 .local/scripts/compress.sh diff --git a/.config/lf/lfrc b/.config/lf/lfrc index 64d95ff..cc4f034 100644 --- a/.config/lf/lfrc +++ b/.config/lf/lfrc @@ -88,40 +88,11 @@ cmd delete ${{ # extract the current file with the right command # (xkcd link: https://xkcd.com/1168/) cmd extract ${{ - set -f - DIR="$(basename "$f" | cut -f 1 -d '.')" - mkdir "$DIR" - case $f in - *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf "$f" --directory="$DIR";; - *.tar.gz|*.tgz) tar xzvf "$f" --directory="$DIR";; - *.tar.xz|*.txz) tar xJvf "$f" --directory="$DIR";; - *.zip) unzip "$f" -d "$DIR";; - *.rar) unrar x "$f" "$DIR";; - *.7z | *.crx) 7z x "$f" -o"$DIR";; - esac + compress.sh -e "$fx" }} cmd compress ${{ - set -f - NAME="$(basename "$fx")" - - if ! [ -d "$NAME" ]; then - NAME="$(basename "$PWD")" - mkdir "$NAME" - cp -r $fx "$NAME" - fi - - echo "enter compression type [tar.gz, zip, 7z(default)]: " - read TYPE - - case "$TYPE" in - tar.gz) tar czf "$NAME".tar.gz "$NAME";; - zip) zip -r "$NAME".zip "$NAME";; - *) 7z a "$NAME".7z "$NAME";; - esac - - ! [ -d "$fx" ] && rm -rf "$NAME" - + compress.sh -c "$fx" }} map c compress $fx diff --git a/.local/scripts/compress.sh b/.local/scripts/compress.sh new file mode 100755 index 0000000..7e9eeec --- /dev/null +++ b/.local/scripts/compress.sh @@ -0,0 +1,84 @@ +#!/bin/sh + +mkname() { + FILES="$( echo "$@" | head -1 - )" + + NAME="$(echo "$FILES" | awk '{print $1}' | xargs -0 basename | cut -f 1 -d '.')" + + #C=0 #create counter variable in case of infinite loop + #while : + #do + # case "$NAME" in + # *.*) NAME="$(echo "$NAME" | cut -f 2 -d '.')" ;; #trim file extensions + # #.*) NAME="$(echo "$NAME" | sed 's/^\.//g')" ;; #trim leading periods + # /*) NAME="$(echo "$NAME" | sed 's/^\///g')" ;; #trim leading slashes + # *) break;; #break if all above conditions are gone + # esac + # + # C=$((C + 1)) + # [ $C -gt 10 ] && break #if counter limit reached break loop + #done + + echo "$NAME" +} + +compress() { + set -f + FILES="$(echo "$@" | xargs -0)" + DIRNAME="$(basename "$FILES")" + + if ! [ -d "$NAME" ]; then + DIRNAME="$(mkname "$@")" + + echo "making directory $DIRNAME" + mkdir "$DIRNAME" + for f in $FILES + do + cp -r "$f" "$DIRNAME" + done + DELFLAG="TRUE" #set delete flag if we created a temp directory + fi + + echo "enter compression type [tar.gz, zip, 7z(default)]: " + read TYPE + + case "$TYPE" in + tar.gz) tar czf "$DIRNAME".tar.gz "$DIRNAME";; + zip) zip -r "$DIRNAME".zip "$DIRNAME";; + *) 7z a "$DIRNAME".7z "$DIRNAME";; + esac + + [ "$DELFLAG" ] && rm -rf "$DIRNAME" +} + +extract() { + set -f + FILE="$(echo "$1" | xargs)" #use xargs to trim whitespace + DIR="$(basename "$FILE" | cut -f 1 -d '.')" + mkdir "$DIR" + case $FILE in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf "$FILE" --directory="$DIR";; + *.tar.gz|*.tgz) tar xzvf "$FILE" --directory="$DIR";; + *.tar.xz|*.txz) tar xJvf "$FILE" --directory="$DIR";; + *.zip) unzip "$FILE" -d "$DIR";; + *.rar) unrar x "$FILE" "$DIR";; + *.7z | *.crx) 7z x "$FILE" -o"$DIR";; + esac +} + +help () { + echo "script to compress/extract files using tar/zip/rar" + echo " -c [ files/directories ] => compress input files/directories" + echo " -e [ file ] => extract input file to a subdirectory of the files name" +} + +#get all input except first 2 chars as input for compress/extract +ARGS="$( echo "$@" | sed '0,/^../{s/^..//}' )" + +if [ "$1" = "-c" ]; then + compress "$ARGS" +elif [ "$1" = "-e" ]; then + extract "$ARGS" +else + help +fi