X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Fcore%2Ffunctions.sh;h=ae0c42073a0e090282b7fa3871f7f824fa03c643;hb=2d76e8a00509a58fc64e67080689a7f82c022d74;hp=de3c3ba2688020a4fc7240bba5ba2a6bf34800c3;hpb=fcd166fbb628f3cb4915da3ef8155096196687f4;p=feisty_meow.git diff --git a/scripts/core/functions.sh b/scripts/core/functions.sh index de3c3ba2..ae0c4207 100644 --- a/scripts/core/functions.sh +++ b/scripts/core/functions.sh @@ -40,15 +40,25 @@ if [ -z "$skip_all" ]; then cd "$1" } + # returns true if the variable is an array. function is_array() { [[ "$(declare -p $1)" =~ "declare -a" ]] } + # returns true if the name provided is a defined alias. function is_alias() { alias $1 &>/dev/null return $? } + # makes the status of pipe number N (passed as first parameter) into the + # main return value (i.e., the value for $?). this is super handy to avoid + # repeating the awkward looking code below in multiple places. + function promote_pipe_return() + { + ( exit ${PIPESTATUS[$1]} ) + } + ############## # displays the value of a variable in bash friendly format. @@ -177,15 +187,22 @@ if [ -z "$skip_all" ]; then # version for the other side (just 'linux'); we don't want the remote side still # thinking it's running xterm. save_terminal_title + #hmmm: why were we doing this? it scorches the user's logged in session, leaving it without proper terminal handling. # # we save the value of TERM; we don't want to leave the user's terminal # # brain dead once we come back from this function. # local oldterm="$TERM" # export TERM=linux + /usr/bin/ssh -X -C "${args[@]}" + # # restore the terminal variable also. # TERM="$oldterm" + restore_terminal_title + if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then + echo TERM title restored to prior value + fi } ############## @@ -483,9 +500,18 @@ if [ -z "$skip_all" ]; then save_terminal_title if [ ! -d "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" ]; then - echo "The customization folder for '$custom_user' would be:" - echo " $FEISTY_MEOW_SCRIPTS/customize/$custom_user" - echo "but that folder does not exist. Skipping recustomization." + echo -e "the customization folder for '$custom_user' is missing: + + $FEISTY_MEOW_SCRIPTS/customize/$custom_user + +we will skip recustomization, but these other customizations are available: +" + # a little tr and sed magic to fix the carriage returns into commas. + local line="$(find $FEISTY_MEOW_SCRIPTS/customize -mindepth 1 -maxdepth 1 -type d -exec basename {} ';' | tr '\n' '&' | sed 's/&/, /g' | sed -e 's/, $//')" + # make the line feeds and carriage returns manageable with tr. + # convert the ampersand, our weird replacement for EOL, with a comma + space in sed. + # last touch with sed removes the last comma. + echo " $line" return 1 fi @@ -504,7 +530,7 @@ if [ -z "$skip_all" ]; then local fail_message="\n are the perl dependencies installed? if you're on ubuntu or debian, try this:\n - $(grep "apt-get.*perl" $FEISTY_MEOW_APEX/readme.txt)\n + $(grep "apt.*perl" $FEISTY_MEOW_APEX/readme.txt)\n or if you're on cygwin, then try this (if apt-cyg is available):\n $(grep "apt-cyg.*perl" $FEISTY_MEOW_APEX/readme.txt)\n"; @@ -684,48 +710,48 @@ or if you're on cygwin, then try this (if apt-cyg is available):\n popd &>/dev/null } - function spacem() - { - while [ $# -gt 0 ]; do - arg="$1"; shift - if [ ! -f "$arg" -a ! -d "$arg" ]; then - echo "failure to find a file or directory named '$arg'." - continue - fi - - # first we will capture the output of the character replacement operation for reporting. - # this is done first since some filenames can't be properly renamed in perl (e.g. if they - # have pipe characters apparently). - intermediate_name="$(bash "$FEISTY_MEOW_SCRIPTS/files/replace_spaces_with_underscores.sh" "$arg")" - local saw_intermediate_result=0 - if [ -z "$intermediate_name" ]; then - # make sure we report something, if there are no further name changes. - intermediate_name="'$arg'" - else - # now zap the first part of the name off (since original name isn't needed). - intermediate_name="$(echo $intermediate_name | sed -e 's/.*=> //')" - saw_intermediate_result=1 - fi - - # first we rename the file to be lower case. - actual_file="$(echo $intermediate_name | sed -e "s/'\([^']*\)'/\1/")" - final_name="$(perl $FEISTY_MEOW_SCRIPTS/files/renlower.pl "$actual_file")" - local saw_final_result=0 - if [ -z "$final_name" ]; then - final_name="$intermediate_name" - else - final_name="$(echo $final_name | sed -e 's/.*=> //')" - saw_final_result=1 - fi -#echo intermed=$saw_intermediate_result -#echo final=$saw_final_result - - if [[ $saw_intermediate_result != 0 || $saw_final_result != 0 ]]; then - # printout the combined operation results. - echo "'$arg' => $final_name" - fi - done - } +# function spacem() +# { +# while [ $# -gt 0 ]; do +# arg="$1"; shift +# if [ ! -f "$arg" -a ! -d "$arg" ]; then +# echo "=> did not find a file or directory named '$arg'." +# continue +# fi +# +# # first we will capture the output of the character replacement operation for reporting. +# # this is done first since some filenames can't be properly renamed in perl (e.g. if they +# # have pipe characters apparently). +# intermediate_name="$(bash "$FEISTY_MEOW_SCRIPTS/files/replace_spaces_with_underscores.sh" "$arg")" +# local saw_intermediate_result=0 +# if [ -z "$intermediate_name" ]; then +# # make sure we report something, if there are no further name changes. +# intermediate_name="'$arg'" +# else +# # now zap the first part of the name off (since original name isn't needed). +# intermediate_name="$(echo $intermediate_name | sed -e 's/.*=> //')" +# saw_intermediate_result=1 +# fi +# +# # first we rename the file to be lower case. +# actual_file="$(echo $intermediate_name | sed -e "s/'\([^']*\)'/\1/")" +# final_name="$(perl $FEISTY_MEOW_SCRIPTS/files/renlower.pl "$actual_file")" +# local saw_final_result=0 +# if [ -z "$final_name" ]; then +# final_name="$intermediate_name" +# else +# final_name="$(echo $final_name | sed -e 's/.*=> //')" +# saw_final_result=1 +# fi +##echo intermed=$saw_intermediate_result +##echo final=$saw_final_result +# +# if [[ $saw_intermediate_result != 0 || $saw_final_result != 0 ]]; then +# # printout the combined operation results. +# echo "'$arg' => $final_name" +# fi +# done +# } ############## @@ -939,6 +965,22 @@ return 0 ############## + # space 'em all fixes naming for all of the files of the appropriate types in the directories specified. + function spacemall() { + local -a dirs=("${@}") +echo "dirs from params are: " "${dirs[@]}" + if [ ${#dirs[@]} -eq 0 ]; then +echo dirs had zero entries + dirs=(.) + fi +echo "dirs are: " "${dirs[@]}" + +#was using: -maxdepth 1 -mindepth 1 + find "${dirs[@]}" -follow -type f \( $(echo pdf png jpg jpeg odt ods docx m4a mp3 eml html mov pptx xlsx zip | sed -e 's/\([a-z0-9][a-z0-9]*\)/-iname \"*.\1\" -o /g') -iname "*.txt" \) -exec bash "$FEISTY_MEOW_SCRIPTS/files/spacem.sh" "{}" \; + } + + ############## + # site avenger aliases function switchto() {