IFS="$HOLDIFS"
}
+ # sets the variable in parameter 1 to the value in parameter 2, but only if
+ # that variable was undefined.
+ function set_var_if_undefined()
+ {
+ local var_name="$1"; shift
+ local var_value="$1"; shift
+ if [ -z "${!var_name}" ]; then
+ eval export $var_name="$var_value"
+ fi
+ }
+
function success_sound()
{
if [ ! -z "$CLAM_FINISH_SOUND" ]; then
fi
}
- # switches from an X:/ form to an /X/path form.
+ # switches from an X:/ form to a /cygdrive/X/path form. this is only useful
+ # for the cygwin environment currently.
function dos_to_unix_path() {
# we always remove dos slashes in favor of forward slashes.
- echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\([a-zA-Z]\):\/\(.*\)/\/\1\/\2/'
+#old: echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\([a-zA-Z]\):\/\(.*\)/\/\1\/\2/'
+ echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\([a-zA-Z]\):\/\(.*\)/\/cygdrive\/\1\/\2/'
}
# returns a successful value (0) if this system is debian or ubuntu.
if [ -z "$wheres_nechung" ]; then
echo "The nechung oracle program cannot be found. You may want to consider"
echo "rebuilding the feisty meow applications with this command:"
- echo "bash $FEISTY_MEOW_SCRIPTS/generator/bootstrap_build.sh"
+ echo "bash $FEISTY_MEOW_SCRIPTS/generator/produce_feisty_meow.sh"
else
$wheres_nechung
fi
function regenerate() {
# do the bootstrapping process again.
echo "regenerating feisty meow script environment."
- bash $FEISTY_MEOW_SCRIPTS/core/bootstrap_shells.sh
+ bash $FEISTY_MEOW_SCRIPTS/core/reconfigure_feisty_meow.sh
echo
# force a full reload by turning off sentinel variable and alias.
# the nethack one is used by fred's customizations.
# interesting note perhaps: found that the NETHACKOPTIONS variable was
# not being unset correctly when preceded by an alias. split them up
# like they are now due to that bug.
- unset -v CORE_ALIASES_LOADED FEISTY_MEOW_GENERATED NECHUNG NETHACKOPTIONS
+ unset -v CORE_ALIASES_LOADED FEISTY_MEOW_LOADING_DOCK NECHUNG NETHACKOPTIONS
unset -f function_sentinel
# reload feisty meow environment in current shell.
source $FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh
# use our default example user if there was no name provided.
user=fred
fi
- if [ ! -d "$FEISTY_MEOW_DIR/customizing/$user" ]; then
+ if [ ! -d "$FEISTY_MEOW_APEX/customizing/$user" ]; then
echo "The customization folder provided for $user should be:"
- echo " '$FEISTY_MEOW_DIR/customizing/$user'"
+ echo " '$FEISTY_MEOW_APEX/customizing/$user'"
echo "but that folder does not exist. Skipping customization."
return 1
fi
regenerate >/dev/null
- pushd "$FEISTY_MEOW_GENERATED/custom" &>/dev/null
- local incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_DIR/customizing/$user" "$FEISTY_MEOW_GENERATED/custom")"
- if [ ${#incongruous_files} -ge 1 ]; then
+ pushd "$FEISTY_MEOW_LOADING_DOCK/custom" &>/dev/null
+ local incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_APEX/customizing/$user" "$FEISTY_MEOW_LOADING_DOCK/custom")"
+
+#echo "the incongruous files list is: $incongruous_files"
+ # disallow a single character result, since we get "*" as result when nothing exists yet.
+ if [ ${#incongruous_files} -ge 2 ]; then
echo "cleaning unknown older overrides..."
perl "$FEISTY_MEOW_SCRIPTS/files/safedel.pl" $incongruous_files
echo
fi
popd &>/dev/null
echo "copying custom overrides for $user"
- mkdir "$FEISTY_MEOW_GENERATED/custom" 2>/dev/null
- perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_DIR/customizing/$user" "$FEISTY_MEOW_GENERATED/custom"
- if [ -d "$FEISTY_MEOW_DIR/customizing/$user/scripts" ]; then
+ mkdir -p "$FEISTY_MEOW_LOADING_DOCK/custom" 2>/dev/null
+ perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_APEX/customizing/$user" "$FEISTY_MEOW_LOADING_DOCK/custom"
+ if [ -d "$FEISTY_MEOW_APEX/customizing/$user/scripts" ]; then
echo "copying custom scripts for $user"
- \cp -R "$FEISTY_MEOW_DIR/customizing/$user/scripts" "$FEISTY_MEOW_GENERATED/custom/"
+ \cp -R "$FEISTY_MEOW_APEX/customizing/$user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/"
fi
echo
regenerate
sed -i -e "s%$pattern%$replacement%g" "$file"
}
+ # goes to a particular directory passed as parameter 1, and then removes all
+ # the parameters after that from that directory.
+ function push_whack_pop()
+ {
+ local dir="$1"; shift
+ pushd "$dir" &>/dev/null
+ rm -rf $* &>/dev/null
+ popd &>/dev/null
+ }
+
function spacem()
{
while [ $# -gt 0 ]; do
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.
- perl $FEISTY_MEOW_SCRIPTS/files/renlower.pl "$arg" &>/dev/null
- # oops, now the name is all lower-case. we need to make the
- # same adjustment.
- arg2="$(echo "$arg" | tr A-Z a-z)"
- # we definitely wanted to adjust the case first, rather than doing all
- # the wacky stuff this script does to the filename... we will capture
- # the output of the replace operaton for reporting.
- final_name="$(bash "$FEISTY_MEOW_SCRIPTS/files/replace_spaces_with_underscores.sh" "$arg2")"
+ 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
- # make sure we report something, if there are no further name changes.
- final_name="$arg2"
+ 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
- # now zap the intermediate part of the name off.
- final_name="$(echo $final_name | sed -e 's/.*=> //')"
- # printout the combined operation results.
- echo "'$arg' => $final_name"
done
}
function function_sentinel() { return 0; }
if [ ! -z "$SHELL_DEBUG" ]; then echo "feisty meow function definitions done."; fi
-
+
+ ##############
+
+ # test code for set_var_if_undefined.
+ run_test=0
+ if [ $run_test != 0 ]; then
+ echo running tests on set_var_if_undefined.
+ flagrant=petunia
+ set_var_if_undefined flagrant forknordle
+ check_result "testing if defined variable would be whacked"
+ if [ $flagrant != petunia ]; then
+ echo set_var_if_undefined failed to leave the test variable alone
+ exit 1
+ fi
+ unset bobblehead_stomper
+ set_var_if_undefined bobblehead_stomper endurance
+ if [ $bobblehead_stomper != endurance ]; then
+ echo set_var_if_undefined failed to set a variable that was not defined yet
+ exit 1
+ fi
+ fi
+
fi