# checks the result of the last command that was run, and if that failed,
# then this complains and exits from bash. the function parameters are
# used as the message to print as a complaint.
- function test_or_die()
+ function exit_on_error()
{
if [ $? -ne 0 ]; then
- echo -e "\n\naction failed: $*\n\nExiting script..."
+ echo -e "\n\nan important action failed and this script will stop:\n\n$*\n\n*** Exiting script..."
error_sound
exit 1
fi
}
- # like test_or_die, but will keep going after complaining.
- function test_or_continue()
+ # like exit_on_error, but will keep going after complaining.
+ function continue_on_error()
{
if [ $? -ne 0 ]; then
- echo -e "\n\nerror occurred: $*\n\nContinuing script..."
+ echo -e "\n\na problem occurred, but we can continue:\n\n$*\n\n=> Continuing script..."
error_sound
fi
}
##############
+ # accepts any number of arguments and outputs them to the feisty meow event log.
+ function log_feisty_meow_event()
+ {
+ echo -e "$(date_stringer) -- $(basename $0):\t\t$*" >> "$FEISTY_MEOW_EVENT_LOG"
+ }
+
+ ##############
+
# wraps secure shell with some parameters we like, most importantly to enable X forwarding.
function ssh()
{
unalias CORE_ALIASES_LOADED &>/dev/null
unset -f function_sentinel
# reload feisty meow environment in current shell.
+ echo "reloading the feisty meow scripts."
+ echo
source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
# run nechung oracle to give user a new fortune.
nechung
local custom_user="$1"; shift
if [ -z "$custom_user" ]; then
# use our default example user if there was no name provided.
- custom_user=fred
+ custom_user=$(logname)
fi
save_terminal_title
if [ ! -d "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" ]; then
- echo "The customization folder provided for $custom_user should be:"
- echo " '$FEISTY_MEOW_SCRIPTS/customize/$custom_user'"
- echo "but that folder does not exist. Skipping customization."
+ 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."
return 1
fi
# prevent permission foul-ups.
- chown -R "$(logname):$(logname)" "$FEISTY_MEOW_LOADING_DOCK"/* "$FEISTY_MEOW_GENERATED_STORE"/*
+#hmmm: save error output here instead of muting it.
+#hmmm: better yet actually, just don't complain on freaking cygwin, since that's where this happens
+ chown -R "$(logname):$(logname)" \
+ "$FEISTY_MEOW_LOADING_DOCK"/* "$FEISTY_MEOW_GENERATED_STORE"/* 2>/dev/null
+ continue_on_error "chowning to $(logname) didn't happen."
regenerate >/dev/null
pushd "$FEISTY_MEOW_LOADING_DOCK/custom" &>/dev/null
incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" "$FEISTY_MEOW_LOADING_DOCK/custom")"
- local fail_message="\nare the perl dependencies installed? if you're on ubuntu or debian, try this:\n
- $(grep "apt.*perl" $FEISTY_MEOW_APEX/readme.txt)\n"
-
+ 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
+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";
+
#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
- test_or_continue "running safedel. $fail_message"
+ continue_on_error "running safedel. $fail_message"
echo
fi
popd &>/dev/null
echo "copying custom overrides for $custom_user"
mkdir -p "$FEISTY_MEOW_LOADING_DOCK/custom" 2>/dev/null
perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" "$FEISTY_MEOW_LOADING_DOCK/custom"
- test_or_continue "running cpdiff. $fail_message"
+ continue_on_error "running cpdiff. $fail_message"
if [ -d "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" ]; then
echo "copying custom scripts for $custom_user"
- netcp "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/" &>/dev/null
+ rsync -avz "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/" &>/dev/null
+ continue_on_error "copying customization scripts"
#hmmm: could save output to show if an error occurs.
fi
echo
regenerate
# prevent permission foul-ups, again.
- chown -R "$(logname):$(logname)" "$FEISTY_MEOW_LOADING_DOCK" "$FEISTY_MEOW_GENERATED_STORE"
+ chown -R "$(logname):$(logname)" \
+ "$FEISTY_MEOW_LOADING_DOCK" "$FEISTY_MEOW_GENERATED_STORE" 2>/dev/null
+ continue_on_error "chowning to $(logname) didn't happen."
restore_terminal_title
}
# count the number of sub-directories in a directory and echo the result.
function count_directories()
{
- local appsdir="$1"; shift
- numdirs="$(find "$appsdir" -mindepth 1 -maxdepth 1 -type d | wc -l)"
+ local subbydir="$1"; shift
+ numdirs="$(find "$subbydir" -mindepth 1 -maxdepth 1 -type d | wc -l)"
echo $numdirs
}
if [ -d "$src" ]; then
ln -s "$src" "$target"
- test_or_die "Creating symlink from '$src' to '$target'"
+ exit_on_error "Creating symlink from '$src' to '$target'"
fi
echo "Created symlink from '$src' to '$target'."
}
temp_out="$TMP/$file.view"
cat "$file" | python -m json.tool > "$temp_out"
show_list+=($temp_out)
- test_or_continue "pretty printing '$file'"
+ continue_on_error "pretty printing '$file'"
done
filedump "${show_list[@]}"
rm "${show_list[@]}"
local seeker="$1"; shift
local numlines=$1; shift
-echo into create_chomped_copy...
-var filename seeker numlines
+#echo into create_chomped_copy...
+#var filename seeker numlines
# make a backup first, oy.
- \cp -f "$filename" "$filename.bkup-${RANDOM}"
- test_or_die "backing up file: $filename"
+ \cp -f "$filename" "/tmp/$(basename ${filename}).bkup-${RANDOM}"
+ exit_on_error "backing up file: $filename"
# make a temp file to write to before we move file into place in bind.
local new_version="/tmp/$(basename ${filename}).bkup-${RANDOM}"
\rm -f "$new_version"
- test_or_die "cleaning out new version of file from: $new_version"
+ exit_on_error "cleaning out new version of file from: $new_version"
local line
local skip_count=0
+ local found_any=
while read line; do
# don't bother looking at the lines if we're already in skip mode.
if [[ $skip_count == 0 ]]; then
else
# a match! start skipping. we will delete this line and the next N lines.
((skip_count++))
-echo first skip count is now $skip_count
+#echo first skip count is now $skip_count
+ found_any=yes
fi
else
# we're already skipping. let's keep going until we hit the limit.
((skip_count++))
-echo ongoing skip count is now $skip_count
+#echo ongoing skip count is now $skip_count
if (( $skip_count > $numlines )); then
echo "Done skipping, and back to writing output file."
skip_count=0
fi
done < "$filename"
-#put the file back into place.
-echo file we created looks like this:
-cat "$new_version"
+#echo file we created looks like this:
+#cat "$new_version"
- \mv "$new_version" "$filename"
- test_or_die "moving the new version into place in: $filename"
+ if [ ! -z "$found_any" ]; then
+ # put the file back into place under the original name.
+ \mv "$new_version" "$filename"
+ exit_on_error "moving the new version into place in: $filename"
+ else
+ # cannot always be considered an error, but we can at least gripe.
+ echo "Did not find any matches for seeker '$seeker' in file: $filename"
+ fi
+ }
+
+ ##############
+
+ # site avenger aliases
+ function switchto()
+ {
+ THISDIR="$FEISTY_MEOW_SCRIPTS/site_avenger"
+ source "$FEISTY_MEOW_SCRIPTS/site_avenger/shared_site_mgr.sh"
+ switch_to "$1"
}
##############
echo running tests on set_var_if_undefined.
flagrant=petunia
set_var_if_undefined flagrant forknordle
- test_or_die "testing if defined variable would be whacked"
+ exit_on_error "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