function test_or_die()
{
if [ $? -ne 0 ]; then
- echo -e "\n\naction failed: $*\n\nExiting script..."
+ echo -e "\n\naction failed: $*\n\n*** Exiting script..."
error_sound
exit 1
fi
function test_or_continue()
{
if [ $? -ne 0 ]; then
- echo -e "\n\nerror occurred: $*\n\nContinuing script..."
+ echo -e "\n\nerror occurred: $*\n\n=> Continuing script..."
error_sound
fi
}
# version for the other side (just 'linux'); we don't want the remote side still
# thinking it's running xterm.
save_terminal_title
- # 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
+#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 the terminal variable also.
+# TERM="$oldterm"
restore_terminal_title
}
echo "but that folder does not exist. Skipping customization."
return 1
fi
+
+ # prevent permission foul-ups.
+#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
+ test_or_continue "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
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
+ test_or_continue "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" 2>/dev/null
+ test_or_continue "chowning to $(logname) didn't happen."
+
restore_terminal_title
}
##############
+ # given a filename and a string to seek and a number of lines, then this
+ # function will remove the first occurrence of a line in the file that
+ # matches the string, and it will also axe the next N lines as specified.
+ function create_chomped_copy_of_file()
+ {
+ local filename="$1"; shift
+ local seeker="$1"; shift
+ local numlines=$1; shift
+
+#echo into create_chomped_copy...
+#var filename seeker numlines
+
+ # make a backup first, oy.
+ \cp -f "$filename" "/tmp/$(basename ${filename}).bkup-${RANDOM}"
+ test_or_die "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"
+
+ 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
+ # find the string they're seeking.
+ if [[ ! "$line" =~ .*${seeker}.* ]]; then
+ # no match.
+ echo "$line" >> "$new_version"
+ 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
+ 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
+ if (( $skip_count > $numlines )); then
+ echo "Done skipping, and back to writing output file."
+ skip_count=0
+ fi
+ fi
+ done < "$filename"
+
+#echo file we created looks like this:
+#cat "$new_version"
+
+ if [ ! -z "$found_any" ]; then
+ # put the file back into place under the original name.
+ \mv "$new_version" "$filename"
+ test_or_die "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
+ }
+
+ ##############
+
# NOTE: no more function definitions are allowed after this point.
function function_sentinel()