cleaning up revision control tools
[feisty_meow.git] / scripts / core / functions.sh
index e27e6d915d83b589ed3d0c870ec76b287b8e4d90..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'
@@ -307,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.
@@ -337,7 +347,7 @@ if [ -z "$skip_all" ]; then
 #    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
@@ -369,7 +379,7 @@ 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
@@ -379,23 +389,23 @@ if [ -z "$skip_all" ]; then
   # to merge their functions and aliases with the standard set.
   function recustomize()
   {
-    local 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
 
     save_terminal_title
 
-    if [ ! -d "$FEISTY_MEOW_SCRIPTS/customize/$user" ]; then
-      echo "The customization folder provided for $user should be:"
-      echo "  '$FEISTY_MEOW_SCRIPTS/customize/$user'"
+    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_SCRIPTS/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.
@@ -405,12 +415,12 @@ 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_SCRIPTS/customize/$user" "$FEISTY_MEOW_LOADING_DOCK/custom"
-    if [ -d "$FEISTY_MEOW_SCRIPTS/customize/$user/scripts" ]; then
-      echo "copying custom scripts for $user"
-      \cp -R "$FEISTY_MEOW_SCRIPTS/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
@@ -653,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()