# 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_fail()
+ function test_or_die()
{
if [ $? -ne 0 ]; then
- echo -e "\n\nfailed on: $*"
+ echo -e "\n\naction failed: $*\n\nExiting script..."
error_sound
exit 1
fi
}
- # like test_or_fail, but will keep going after complaining.
+ # like test_or_die, but will keep going after complaining.
function test_or_continue()
{
if [ $? -ne 0 ]; then
- echo -e "\n\nfailed on: $*"
+ echo -e "\n\nerror occurred: $*\n\nContinuing script..."
error_sound
fi
}
# sudo function wraps the normal sudo by ensuring we replace the terminal
# label if they're doing an su with the sudo.
function sudo() {
-# local first_command="$1"
save_terminal_title
/usr/bin/sudo "$@"
+ retval=$?
restore_terminal_title
# if [ "$first_command" == "su" ]; then
# # yep, they were doing an su, but they're back now.
# label_terminal_with_info
# fi
+ return $retval
}
# trashes the .#blah files that cvs and subversion leave behind when finding conflicts.
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/produce_feisty_meow.sh"
+ echo
else
$wheres_nechung
fi
if [ -d "$src" ]; then
ln -s "$src" "$target"
- test_or_fail "Creating symlink from '$src' to '$target'"
+ test_or_die "Creating symlink from '$src' to '$target'"
fi
echo "Created symlink from '$src' to '$target'."
}
+ # pretty prints the json files provided as parameters.
+ function clean_json()
+ {
+ if [ -z "$*" ]; then return; fi
+ local show_list=()
+ while true; do
+ local file="$1"; shift
+ if [ -z "$file" ]; then break; fi
+ if [ ! -f "$file" ]; then "echo File '$file' does not exist."; continue; fi
+ temp_out="$TMP/$file.view"
+ cat "$file" | python -m json.tool > "$temp_out"
+ show_list+=($temp_out)
+ test_or_continue "pretty printing '$file'"
+ done
+ filedump "${show_list[@]}"
+ rm "${show_list[@]}"
+ }
+
+ function json_text()
+ {
+ # only print our special headers or text fields.
+ local CR=$'\r'
+ local LF=$'\n'
+ clean_json $* |
+ grep -i "\"text\":\|^=.*" |
+ sed -e "s/\\\\r/$CR/g" -e "s/\\\\n/\\$LF/g"
+ }
+
+ ##############
+
+ # echoes the machine's hostname. can be used like so:
+ # local my_host=$(get_hostname)
+ function get_hostname()
+ {
+ # there used to be more variation in how to do this, but adopting mingw
+ # and cygwin tools really helped out.
+ local this_host=unknown
+ if [ "$OS" == "Windows_NT" ]; then
+ this_host=$(hostname)
+ elif [ ! -z "$(echo $MACHTYPE | grep apple)" ]; then
+ this_host=$(hostname)
+ elif [ ! -z "$(echo $MACHTYPE | grep suse)" ]; then
+ this_host=$(hostname --long)
+ elif [ -x "$(which hostname 2>/dev/null)" ]; then
+ this_host=$(hostname)
+ fi
+ echo "$this_host"
+ }
+
+ # makes sure that the provided "folder" is a directory and is writable.
+ function test_writeable()
+ {
+ local folder="$1"; shift
+ if [ ! -d "$folder" -o ! -w "$folder" ]; then return 1; fi
+ return 0
+ }
+
##############
# NOTE: no more function definitions are allowed after this point.
echo running tests on set_var_if_undefined.
flagrant=petunia
set_var_if_undefined flagrant forknordle
- test_or_fail "testing if defined variable would be whacked"
+ test_or_die "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