cleaning up revision control tools
[feisty_meow.git] / scripts / core / functions.sh
index c2f946a8c01ef8a160c0b6af2d737bb8957b0612..6f02ae26160a62b4f6abc0b7d31104a8a7195993 100644 (file)
@@ -80,6 +80,15 @@ if [ -z "$skip_all" ]; then
     IFS="$HOLDIFS"
   }
 
+  # when passed a list of things, this will return the unique items from that list as an echo.
+  function uniquify()
+  {
+    # do the uniquification: split the space separated items into separate lines, then
+    # sort the list, then run the uniq tool on the list.  results will be packed back onto
+    # one line when invoked like: local fredlist="$(uniquify a b c e d a e f a e d b)"
+    echo $* | tr ' ' '\n' | sort | uniq
+  }
+
   # sets the variable in parameter 1 to the value in parameter 2, but only if
   # that variable was undefined.
   function set_var_if_undefined()
@@ -148,8 +157,9 @@ if [ -z "$skip_all" ]; then
       local pid_finder_pattern='s/ *\([0-9][0-9]*\) *.*$/\1/p'
 
     else
-      # flags which clean up the output on unixes, which apparently cygwin
-      # doesn't count as.  their crappy specialized ps doesn't support this.
+      # flags which clean up the process listing output on unixes.
+      # apparently cygwin doesn't count as a type of unix, because their
+      # crummy specialized ps command doesn't support normal ps flags.
       local EXTRA_UNIX_FLAGS="-o pid,args"
       # pattern to use for peeling off the process numbers.
       local pid_finder_pattern='s/^[[:space:]]*\([0-9][0-9]*\).*$/\1/p'
@@ -244,8 +254,15 @@ if [ -z "$skip_all" ]; then
     done
   }
   
-  function fix_alsa() {
-    sudo /etc/init.d/alsasound restart
+#  function fix_alsa() {
+#    sudo /etc/init.d/alsasound restart
+#  }
+
+  function screen() {
+    save_terminal_title
+#hmmm: ugly absolute path here.
+    /usr/bin/screen $*
+    restore_terminal_title
   }
   
   # switches from a /X/path form to an X:/ form.  this also processes cygwin paths.
@@ -300,7 +317,7 @@ if [ -z "$skip_all" ]; then
       # information for su.
   
       # get the x authority info for our current user.
-      source $FEISTY_MEOW_SCRIPTS/x_win/get_x_auth.sh
+      source "$FEISTY_MEOW_SCRIPTS/security/get_x_auth.sh"
   
       if [ -z "$X_auth_info" ]; then
         # if there's no authentication info to pass along, we just do a normal su.
@@ -315,23 +332,22 @@ if [ -z "$skip_all" ]; then
       # or at least suse doesn't, which is the other one we've tested on.
       /bin/su -l $*
     fi
-  
-    # relabel the console after returning.
-    bash $FEISTY_MEOW_SCRIPTS/tty/label_terminal_with_infos.sh
   }
   
   # 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"
+#    local first_command="$1"
+    save_terminal_title
     /usr/bin/sudo "$@"
-    if [ "$first_command" == "su" ]; then
-      # yep, they were doing an su, but they're back now.
-      bash $FEISTY_MEOW_SCRIPTS/tty/label_terminal_with_infos.sh
-    fi
+    restore_terminal_title
+#    if [ "$first_command" == "su" ]; then
+#      # yep, they were doing an su, but they're back now.
+#      label_terminal_with_info
+#    fi
   }
   
-  # trashes the .#blah files that cvs and svn leave behind when finding conflicts.
+  # trashes the .#blah files that cvs and subversion leave behind when finding conflicts.
   # this kind of assumes you've already checked them for any salient facts.
   function clean_cvs_junk() {
     for i in $*; do
@@ -354,6 +370,7 @@ if [ -z "$skip_all" ]; then
   # recreates all the generated files that the feisty meow scripts use.
   function regenerate() {
     # do the bootstrapping process again.
+    save_terminal_title
     echo "regenerating feisty meow script environment."
     bash $FEISTY_MEOW_SCRIPTS/core/reconfigure_feisty_meow.sh
     echo
@@ -362,29 +379,33 @@ if [ -z "$skip_all" ]; then
     unalias CORE_ALIASES_LOADED &>/dev/null
     unset -f function_sentinel 
     # reload feisty meow environment in current shell.
-    source $FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh
+    source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
     # run nechung oracle to give user a new fortune.
     nechung
+    restore_terminal_title
   }
 
   # copies a set of custom scripts into the proper location for feisty meow
   # to merge their functions and aliases with the standard set.
   function recustomize()
   {
-    user="$1"; shift
-    if [ -z "$user" ]; then
+    local custom_user="$1"; shift
+    if [ -z "$custom_user" ]; then
       # use our default example user if there was no name provided.
-      user=fred
+      custom_user=fred
     fi
-    if [ ! -d "$FEISTY_MEOW_APEX/customize/$user" ]; then
-      echo "The customization folder provided for $user should be:"
-      echo "  '$FEISTY_MEOW_APEX/customize/$user'"
+
+    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."
       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/customize/$user" "$FEISTY_MEOW_LOADING_DOCK/custom")"
+    incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_SCRIPTS/customize/$custom_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.
@@ -394,15 +415,17 @@ if [ -z "$skip_all" ]; then
       echo
     fi
     popd &>/dev/null
-    echo "copying custom overrides for $user"
+    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_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/customize/$user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/"
+    perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" "$FEISTY_MEOW_LOADING_DOCK/custom"
+    if [ -d "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" ]; then
+      echo "copying custom scripts for $custom_user"
+      \cp -R "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/"
     fi
     echo
     regenerate
+
+    restore_terminal_title
   }
 
   # generates a random password where the first parameter is the number of characters
@@ -640,6 +663,17 @@ return 0
 
   ##############
 
+#hmmm: this points to an extended functions file being needed; not all of these are core.
+
+  # displays documentation in "md" formatted files.
+  function show_md()
+  {
+    local file="$1"; shift
+    pandoc "$file" | lynx -stdin
+  }
+
+  ##############
+
   # just shows a separator line for an 80 column console, or uses the first
   # parameter as the number of columns to expect.
   function separator()