cleanup and rearrangement

- rearrange sections
- convert tabs to spaces (thanks VSCode)
- general indentation fixes
This commit is contained in:
kevinnls
2021-01-08 02:00:06 +05:30
parent e227d0f7dd
commit a054656d12

View File

@@ -7,21 +7,17 @@
################################### ###################################
version='0.1.0-beta' version='0.1.0-beta'
### IFS precautions ### IFS precautions #
OLDIFS="$IFS" OLDIFS="$IFS"
unset IFS unset IFS
### parse parameters debug(){ ### function to call when $DEBUG is set
# file names set -xv
# `-d` dest dir
# `-b | -o` mode: cloned file suffix
# ` ` follow symlinks
# ` ` lightweight copies
debug(){
set -xev
} }
###############################################################################
# f() FOR PRINTING PROMPTS
#############################
print_usage(){ print_usage(){
cat << HERE cat << HERE
$(tput bold; tput setaf 3)${0##*/}$(tput sgr0) $(tput bold; tput setaf 3)${0##*/}$(tput sgr0)
@@ -46,12 +42,48 @@ $(tput bold)OPTIONS$(tput sgr0)
-r clone a directory and its contents -r clone a directory and its contents
HERE HERE
} }
print_version(){ print_version(){
cat << HERE cat << HERE
$(tput bold)${0##*/}: v${version}$(tput sgr0) $(tput bold)${0##*/}: v${version}$(tput sgr0)
by https://github.com/kevinnls by https://github.com/kevinnls
HERE HERE
} }
print_err(){
tput setaf 1
case $1 in
bo)
echo "ERROR: modes backup and old cannot co-exist"
;;
01)
echo "ERROR: lightweight copy modes cannot co-exist"
;;
x)
echo "ERROR: unrecognised flags"
tput sgr0
print_usage
;;
*)
echo "UNKNOWN ERROR"
esac
tput sgr0
exit 1
}
copy_succ(){
echo "$(tput setaf 2; tput bold)${1}.${2:-bak}$(tput sgr0)"
}
copy_fail(){
echo "$(tput setaf 1; tput bold)${1}$(tput sgr0)"
}
copy_nofile(){
echo "$(tput setaf 1; tput bold)${1}$(tput sgr0) : file does not exist"
}
###############################################################################
# f() FOR SETTING OPTIONS
############################
set_dest(){ set_dest(){
if [[ -n "$1" ]] && ! realpath -e "$1" >/dev/null 2>&1 ;then if [[ -n "$1" ]] && ! realpath -e "$1" >/dev/null 2>&1 ;then
echo $1 does not exist echo $1 does not exist
@@ -65,26 +97,31 @@ set_mode(){
if [[ -z $mode ]]; then if [[ -z $mode ]]; then
mode=$1 mode=$1
else else
print_error 'bo' print_err 'bo'
fi fi
} }
set_weight(){ set_weight(){
if [[ -z "$weight" ]]; then if [[ -z "$weight" ]]; then
weight="$1" weight="$1"
else else
print_error '01' print_err '01'
fi fi
} }
add_file(){ add_file(){
files=("${files[@]}" "$1") files=("${files[@]}" "$1")
} }
###############################################################################
# f() FOR PARSING PARAMS AND OPTIONS
#######################################
in_combi(){ in_combi(){
[[ "$combi" =~ [:alnum:]*($1){1}[:alnum:]* ]] [[ "$combi" =~ [:alnum:]*($1){1}[:alnum:]* ]]
} }
un_combi(){ un_combi(){
combi=${combi/$1/} combi=${combi/$1/}
} }
parse_combined(){ parse_combined(){
combi="${1/-/}" combi="${1/-/}"
@@ -107,52 +144,24 @@ parse_combined(){
fi fi
[[ "$combi" =~ [:alnum:]*(d){1} ]] && set_dest $2 && ret=2 [[ "$combi" =~ [:alnum:]*(d){1} ]] && set_dest $2 && ret=2
# setting return value to 2 to shift 2 in caller
# in case of -d <dest>
if [[ -z "$combi" ]]; then if [[ -z "$combi" ]]; then
return ${ret:-1} return ${ret:-1}
else else
print_error 'x' print_err 'x'
exit 1 exit 1
fi fi
} }
print_error(){
tput setaf 1
case $1 in
bo)
echo "ERROR: modes backup and old cannot co-exist"
;;
01)
echo "ERROR: lightweight copy modes cannot co-exist"
;;
x)
echo "ERROR: unrecognised flags"
tput sgr0
print_usage
;;
*)
echo "UNKNOWN ERROR"
esac
tput sgr0
exit 1
}
copy_succ(){
echo "$(tput setaf 2; tput bold)$file.${mode:-bak}$(tput sgr0)"
}
copy_fail(){
echo "$(tput setaf 1; tput bold)$file$(tput sgr0)"
}
copy_nofile(){
echo "$(tput setaf 1; tput bold)$file$(tput sgr0) : file does not exist"
}
### enable debugging ### ### enable debugging ###
${DEBUG+debug} ### ${DEBUG+debug} ###
### if $DEBUG is set ### ### if $DEBUG is set ###
############################################################################### ###############################################################################
# SANITISING PARAMS AND OPTIONS # SANITISING PARAMS AND OPTIONS
################################ ##################################
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
'-h' ) '-h' )
@@ -199,22 +208,25 @@ while [[ $# -gt 0 ]]; do
done done
################################################################################ ###############################################################################
# THE ACTUAL COPYING CODE # THE ACTUAL COPYING CODE
########################## ############################
for file in "${files[@]}"; do for file in "${files[@]}"; do
if realpath -e "$file" >/dev/null 2>&1 ;then if realpath -e "$file" >/dev/null 2>&1 ;then
src_filepath="$(realpath "$file")" src_filepath="$(realpath "$file")"
dst_filepath="${dest:-${src_filepath%/*}}" dst_filepath="${dest:-${src_filepath%/*}}"
dst_filename="${src_filepath##*/}.${mode:-bak}" dst_filename="${src_filepath##*/}.${mode:-bak}"
cp_weight="--reflink=${weight:-auto}" cp_weight="--reflink=${weight:-auto}"
cp ${recurse} ${cp_weight} "$src_filepath" "$dst_filepath/$dst_filename" cp ${recurse} ${cp_weight} "$src_filepath" "$dst_filepath/$dst_filename"
[[ $? -eq 0 ]] && copy_succ || copy_fail [[ $? -eq 0 ]] && copy_succ $file $mode || copy_fail $file
else else
copy_nofile copy_nofile $file
fi fi
done done
### reset IFS ### reset IFS###
IFS="$OLDIFS" IFS="$OLDIFS" #
################