# test whether we've been here before or not.
skip_all=
-function_sentinel &>/dev/null
+type function_sentinel &>/dev/null
if [ $? -eq 0 ]; then
# there was no error, so we can skip the inits.
if [ ! -z "$SHELL_DEBUG" ]; then
echo "regenerating feisty meow script environment."
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_LOADING_DOCK NECHUNG NETHACKOPTIONS
+ # force a full reload by turning off sentinel variables and methods.
+ unset -v CORE_VARIABLES_LOADED FEISTY_MEOW_LOADING_DOCK USER_CUSTOMIZATIONS_LOADED
+ unalias CORE_ALIASES_LOADED
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_APEX/customizing/$user" ]; then
+ if [ ! -d "$FEISTY_MEOW_APEX/customize/$user" ]; then
echo "The customization folder provided for $user should be:"
- echo " '$FEISTY_MEOW_APEX/customizing/$user'"
+ echo " '$FEISTY_MEOW_APEX/customize/$user'"
echo "but that folder does not exist. Skipping customization."
return 1
fi
regenerate >/dev/null
pushd "$FEISTY_MEOW_LOADING_DOCK/custom" &>/dev/null
- incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_APEX/customizing/$user" "$FEISTY_MEOW_LOADING_DOCK/custom")"
+ incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_APEX/customize/$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.
popd &>/dev/null
echo "copying custom overrides for $user"
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
+ perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_APEX/customize/$user" "$FEISTY_MEOW_LOADING_DOCK/custom"
+ if [ -d "$FEISTY_MEOW_APEX/customize/$user/scripts" ]; then
echo "copying custom scripts for $user"
- \cp -R "$FEISTY_MEOW_APEX/customizing/$user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/"
+ \cp -R "$FEISTY_MEOW_APEX/customize/$user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/"
fi
echo
regenerate
done
}
+ ############################
+
# takes a file to modify, and then it will replace any occurrences of the
# pattern provided as the second parameter with the text in the third
# parameter.
sed -i -e "s%$pattern%$replacement%g" "$file"
}
+ # similar to replace_pattern_in_file, but also will add the new value
+ # when the old one did not already exist in the file.
+ function replace_if_exists_or_add()
+ {
+ local file="$1"; shift
+ local phrase="$1"; shift
+ local replacement="$1"; shift
+ if [ -z "$file" -o ! -f "$file" -o -z "$phrase" -o -z "$replacement" ]; then
+ echo "replace_if_exists_or_add: needs a filename, a phrase to replace, and the"
+ echo "text to replace that phrase with."
+ return 1
+ fi
+ grep "$phrase" "$file" >/dev/null
+ # replace if the phrase is there, otherwise add it.
+ if [ $? -eq 0 ]; then
+ replace_pattern_in_file "$file" "$phrase" "$replacement"
+ else
+ # this had better be the complete line.
+ echo "$replacement" >>"$file"
+ fi
+ }
+
+ ############################
+
+ # finds a variable (first parameter) in a particular property file
+ # (second parameter). the expected format for the file is:
+ # varX=valueX
+ function seek_variable()
+ {
+ local find_var="$1"; shift
+ local file="$1"; shift
+ if [ -z "$find_var" -o -z "$file" -o ! -f "$file" ]; then
+ echo -e "seek_variable: needs two parameters, firstly a variable name, and\nsecondly a file where the variable's value will be sought." 1>&2
+ return 1
+ fi
+
+ while read line; do
+ if [ ${#line} -eq 0 ]; then continue; fi
+ # split the line into the variable name and value.
+ IFS='=' read -a assignment <<< "$line"
+ local var="${assignment[0]}"
+ local value="${assignment[1]}"
+ if [ "${value:0:1}" == '"' ]; then
+ # assume the entry was in quotes and remove them.
+ value="${value:1:$((${#value} - 2))}"
+ fi
+ if [ "$find_var" == "$var" ]; then
+ echo "$value"
+ fi
+ done < "$file"
+ }
+
+ # finds a variable (first parameter) in a particular XML format file
+ # (second parameter). the expected format for the file is:
+ # ... name="varX" value="valueX" ...
+ function seek_variable_in_xml()
+ {
+ local find_var="$1"; shift
+ local file="$1"; shift
+ if [ -z "$find_var" -o -z "$file" -o ! -f "$file" ]; then
+ echo "seek_variable_in_xml: needs two parameters, firstly a variable name, and"
+ echo "secondly an XML file where the variable's value will be sought."
+ return 1
+ fi
+
+ while read line; do
+ if [ ${#line} -eq 0 ]; then continue; fi
+ # process the line to make it more conventional looking.
+ line="$(echo "$line" | sed -e 's/.*name="\([^"]*\)" value="\([^"]*\)"/\1=\2/')"
+ # split the line into the variable name and value.
+ IFS='=' read -a assignment <<< "$line"
+ local var="${assignment[0]}"
+ local value="${assignment[1]}"
+ if [ "${value:0:1}" == '"' ]; then
+ # assume the entry was in quotes and remove them.
+ value="${value:1:$((${#value} - 2))}"
+ fi
+ if [ "$find_var" == "$var" ]; then
+ echo "$value"
+ fi
+ done < "$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
+ if [ $? -ne 0 ]; then echo failed to enter dir--quitting.; fi
rm -rf $* &>/dev/null
+ if [ $? -ne 0 ]; then echo received a failure code when removing.; fi
popd &>/dev/null
}
##############
- function function_sentinel() { return 0; }
+ function function_sentinel()
+ {
+ return 0;
+ }
if [ ! -z "$SHELL_DEBUG" ]; then echo "feisty meow function definitions done."; fi