fixed handling for leading zeros so we don't eat any but those.
[feisty_meow.git] / scripts / core / generate_aliases.pl
index a97247e939dadf3164229f59ead0b494d3d18d28..726a0bbf323186d1ebf25ad518d3a99cf5ad1186 100644 (file)
@@ -8,10 +8,10 @@
 #
 #  Purpose:
 #
 #
 #  Purpose:
 #
-#    This script generates YETI alias files.  Alias files contain a list of
-#  definitions for command aliases that are written in the specified shell
-#  dialect (such as bash or perl) and which are additionally tailored for the
-#  operating system to be used.
+#    This script generates feisty meow script alias files.  Alias files
+#  contain a list of definitions for command aliases that are written in the
+#  specified shell dialect (such as bash or perl) and which are additionally
+#  tailored for the operating system to be used.
 #
 ##############
 #  This program is free software; you can redistribute it and/or modify it
 #
 ##############
 #  This program is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 require "filename_helper.pl";
 
 
 require "filename_helper.pl";
 
-require "importenv.pl";
+use Env qw(BINDIR BUILD_TOP FEISTY_MEOW_APEX FEISTY_MEOW_LOADING_DOCK FEISTY_MEOW_SCRIPTS SHELL_DEBUG );
 
 # given a possible aliasable filename, this will decide whether to create a perl
 # or bash alias for it.  it needs the filename of the possible alias and the
 
 # given a possible aliasable filename, this will decide whether to create a perl
 # or bash alias for it.  it needs the filename of the possible alias and the
@@ -47,7 +47,7 @@ sub make_bash_alias {
 #print "alias became $aliasname\n";
   local($source_dir) = shift(@_);
 #print "bash alias is $aliasname, dir is $source_dir\n";
 #print "alias became $aliasname\n";
   local($source_dir) = shift(@_);
 #print "bash alias is $aliasname, dir is $source_dir\n";
-  print she "alias $aliasname=\"bash $source_dir/$full_alias.sh\"\n";
+  print she "define_yeti_alias $aliasname=\"bash $source_dir/$full_alias.sh\"\n";
 }
 
 # makes an alias for a perl script given the alias name.
 }
 
 # makes an alias for a perl script given the alias name.
@@ -58,7 +58,7 @@ sub make_perl_alias {
 #print "alias became $aliasname\n";
   local($source_dir) = shift(@_);
 #print "perl alias is $aliasname, dir is $source_dir\n";
 #print "alias became $aliasname\n";
   local($source_dir) = shift(@_);
 #print "perl alias is $aliasname, dir is $source_dir\n";
-  print she "alias $aliasname=\"perl $source_dir/$full_alias.pl\"\n";
+  print she "define_yeti_alias $aliasname=\"perl $source_dir/$full_alias.pl\"\n";
 }
 
 # given a directory, this returns an array of all the filenames found therein.
 }
 
 # given a directory, this returns an array of all the filenames found therein.
@@ -74,18 +74,20 @@ sub load_file_names {
 # The "common.alias" file is used in the generated aliases file as a base
 # set of generally useful aliases.  We also add aliases for any script files
 # (perl, bash, python, etc) that we find in the feisty meow script hierarchy.
 # The "common.alias" file is used in the generated aliases file as a base
 # set of generally useful aliases.  We also add aliases for any script files
 # (perl, bash, python, etc) that we find in the feisty meow script hierarchy.
-# Any *.alias files found in the $FEISTY_MEOW_GENERATED/custom folder are
+# Any *.alias files found in the $FEISTY_MEOW_LOADING_DOCK/custom folder are
 # loaded also.
 sub rebuild_script_aliases {
 
   if (length($SHELL_DEBUG)) {
 # loaded also.
 sub rebuild_script_aliases {
 
   if (length($SHELL_DEBUG)) {
-    print "rebuiling generated aliases file...\n";
+    print "rebuilding generated aliases file...\n";
   }
 
   # create our generated shells directory if it's not already.
   }
 
   # create our generated shells directory if it's not already.
-  if ( ! -d $FEISTY_MEOW_GENERATED ) {
-    mkdir $FEISTY_MEOW_GENERATED;
-print "made gener dir $FEISTY_MEOW_GENERATED\n";
+  if ( ! -d $FEISTY_MEOW_LOADING_DOCK ) {
+    mkdir $FEISTY_MEOW_LOADING_DOCK;
+    if (length($SHELL_DEBUG)) {
+      print "made FEISTY_MEOW_LOADING_DOCK at '$FEISTY_MEOW_LOADING_DOCK'\n";
+    }
   }
 
   # test if we can use color in ls...
   }
 
   # test if we can use color in ls...
@@ -95,25 +97,29 @@ print "made gener dir $FEISTY_MEOW_GENERATED\n";
   @ALIAS_DEFINITION_FILES = ("$FEISTY_MEOW_SCRIPTS/core/common.alias");
 
   # if custom aliases files exist, add them to the list.
   @ALIAS_DEFINITION_FILES = ("$FEISTY_MEOW_SCRIPTS/core/common.alias");
 
   # if custom aliases files exist, add them to the list.
-  foreach $i (&glob_list("$FEISTY_MEOW_GENERATED/custom/*.alias")) {
+  foreach $i (&glob_list("$FEISTY_MEOW_LOADING_DOCK/custom/*.alias")) {
     if (-f $i) { push(@ALIAS_DEFINITION_FILES, $i); }
   }
     if (-f $i) { push(@ALIAS_DEFINITION_FILES, $i); }
   }
-  print "alias files:\n";
-  foreach $i (@ALIAS_DEFINITION_FILES) {
-    local $base_of_dir = &basename(&dirname($i));
-    local $basename = &basename($i);
-    print "  $base_of_dir/$basename\n";
+  if (length($SHELL_DEBUG)) {
+    print "using these alias files:\n";
+    foreach $i (@ALIAS_DEFINITION_FILES) {
+      local $base_of_dir = &basename(&dirname($i));
+      local $basename = &basename($i);
+      print "  $base_of_dir/$basename\n";
+    }
   }
 
   # write the aliases for sh and bash scripts.
 
   }
 
   # write the aliases for sh and bash scripts.
 
-  local $GENERATED_ALIAS_FILE = "$FEISTY_MEOW_GENERATED/fmc_core_and_custom_aliases.sh";
-  print "writing generated aliases in $GENERATED_ALIAS_FILE...\n";
+  local $GENERATED_ALIAS_FILE = "$FEISTY_MEOW_LOADING_DOCK/fmc_core_and_custom_aliases.sh";
+  if (length($SHELL_DEBUG)) {
+    print "writing generated aliases in $GENERATED_ALIAS_FILE...\n";
+  }
 
 #hmmm: perhaps a good place for a function to create the header,
 #      given the appropriate comment code.
 
 
 #hmmm: perhaps a good place for a function to create the header,
 #      given the appropriate comment code.
 
-  open GENOUT, ">>$GENERATED_ALIAS_FILE" or die "cannot open $GENERATED_ALIAS_FILE";
+  open GENOUT, ">$GENERATED_ALIAS_FILE" or die "cannot open $GENERATED_ALIAS_FILE";
 
   print GENOUT "##\n";
   print GENOUT "## generated file: $GENERATED_ALIAS_FILE\n";
 
   print GENOUT "##\n";
   print GENOUT "## generated file: $GENERATED_ALIAS_FILE\n";
@@ -121,77 +127,76 @@ print "made gener dir $FEISTY_MEOW_GENERATED\n";
   print GENOUT "##\n";
 
   if (length($test_color)) {
   print GENOUT "##\n";
 
   if (length($test_color)) {
-    print GENOUT "color_add=--color=auto\n";
+    print GENOUT "export color_add=--color=auto\n";
   } else {
   } else {
-    print GENOUT "color_add=\n";
+    print GENOUT "export color_add=\n";
   }
 
   # plow in the full set of aliases into the file.
   foreach $i (@ALIAS_DEFINITION_FILES) {
     open CURR_ALIASER, "<$i" or die "cannot open current alias file $i";
     foreach $line (<CURR_ALIASER>) {
   }
 
   # plow in the full set of aliases into the file.
   foreach $i (@ALIAS_DEFINITION_FILES) {
     open CURR_ALIASER, "<$i" or die "cannot open current alias file $i";
     foreach $line (<CURR_ALIASER>) {
-      print GENOUT "$line\n";
+      print GENOUT "$line";
     }
   }
 
   close GENOUT;
 
   if (length($SHELL_DEBUG)) {
     }
   }
 
   close GENOUT;
 
   if (length($SHELL_DEBUG)) {
-    print("done rebuiling generated aliases file.\n");
+    print("done rebuilding generated aliases file.\n");
   }
 }
 
 ##############
 
 # make sure we know where to store the files we're creating.
   }
 }
 
 ##############
 
 # make sure we know where to store the files we're creating.
-if ( ! length("$FEISTY_MEOW_GENERATED") ) {
+if ( ! length("$FEISTY_MEOW_LOADING_DOCK") ) {
   print "\
   print "\
-The FEISTY_MEOW_GENERATED variable is not defined.  This must point to the location where\n\
+The FEISTY_MEOW_LOADING_DOCK variable is not defined.  This must point to the location where\n\
 the generated scripts are stored.  Perhaps you still need to run\n\
 the generated scripts are stored.  Perhaps you still need to run\n\
-bootstrap_shells.sh and set up some environment variables.  Please see\n\
-http://yeticode.org for more details.\n";
+reconfigure_feisty_meow.sh and set up some environment variables.  Please see\n\
+http://feistymeow.org for more details.\n";
   exit 1;
 #really need to use better exit codes.
 }
 
   exit 1;
 #really need to use better exit codes.
 }
 
-$FEISTY_MEOW_GENERATED =~ s/\\/\//g;
+$FEISTY_MEOW_LOADING_DOCK =~ s/\\/\//g;
 $FEISTY_MEOW_SCRIPTS =~ s/\\/\//g;
 $FEISTY_MEOW_SCRIPTS =~ s/\\/\//g;
-$FEISTY_MEOW_DIR =~ s/\\/\//g;
+$FEISTY_MEOW_APEX =~ s/\\/\//g;
 
 # create our generated shells directory if it's not already there.
 
 # create our generated shells directory if it's not already there.
-if (! -d $FEISTY_MEOW_GENERATED) {
-  mkdir $FEISTY_MEOW_GENERATED;
+if (! -d $FEISTY_MEOW_LOADING_DOCK) {
+  mkdir $FEISTY_MEOW_LOADING_DOCK;
 }
 
 ##############
 
 }
 
 ##############
 
-# set the executable bit for yeti binaries for just this current user.
+# set the executable bit for binaries for just this current user.
 if (-d $BINDIR) {
   system("chmod -R u+x \"$BINDIR\"/*");
 }
 
 if (-d $BINDIR) {
   system("chmod -R u+x \"$BINDIR\"/*");
 }
 
-
 # generate the first set of alias files that are defined in the core
 # and custom scripts directories.
 &rebuild_script_aliases;
 # generate the first set of alias files that are defined in the core
 # and custom scripts directories.
 &rebuild_script_aliases;
-###system("bash \"$FEISTY_MEOW_SCRIPTS\"/core/unter_alia.sh");
 
 # trash the old versions.
 
 # trash the old versions.
-unlink("$FEISTY_MEOW_GENERATED/fmc_aliases_for_scripts.sh");
+unlink("$FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh");
 
 
-printf "writing $FEISTY_MEOW_GENERATED/fmc_aliases_for_scripts.sh...\n";
+if (length($SHELL_DEBUG)) {
+  printf "writing $FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh...\n";
+}
 
 # open the alias files to be created.
 
 # open the alias files to be created.
-open(she, ">> $FEISTY_MEOW_GENERATED/fmc_aliases_for_scripts.sh");
-
-#print "os is $OS\n";
+open(she, ">> $FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh");
 
 # find the list of files in the scripts directory.
 #opendir(scripts, "$FEISTY_MEOW_SCRIPTS");
 #@shell_files = sort(readdir(scripts));
 
 # find the list of files in the scripts directory.
 #opendir(scripts, "$FEISTY_MEOW_SCRIPTS");
 #@shell_files = sort(readdir(scripts));
-#print "yeti scripts: @shell_files\n";
+#print "scripts: @shell_files\n";
 
 
-@shell_files = &load_file_names("$FEISTY_MEOW_SCRIPTS");
+@shell_files = (&load_file_names("$FEISTY_MEOW_SCRIPTS"),
+   &load_file_names("$FEISTY_MEOW_LOADING_DOCK/custom/scripts"));
 
 # construct aliases for items in the scripts directory.
 foreach $file (@shell_files) {
 
 # construct aliases for items in the scripts directory.
 foreach $file (@shell_files) {
@@ -214,6 +219,11 @@ foreach $file (@shell_files) {
     foreach $subfile (@subdir_files) {
       push(@shell_files, "$file/$subfile");
     }
     foreach $subfile (@subdir_files) {
       push(@shell_files, "$file/$subfile");
     }
+  } elsif (-f "$FEISTY_MEOW_LOADING_DOCK/custom/scripts/$file") {
+    # if we see a file in the auto-generated area that comes from the
+    # customized scripts folder, we add it as an alias.
+    make_alias($file, "$FEISTY_MEOW_LOADING_DOCK/custom/scripts/");
+    #print "added custom script file: $FEISTY_MEOW_LOADING_DOCK/custom/scripts/$file\n";
   } else {
     # if it's a regular file, we'll try to make an alias for it.  the function
     # will only fire if the ending is appropriate for the script languages we use.
   } else {
     # if it's a regular file, we'll try to make an alias for it.  the function
     # will only fire if the ending is appropriate for the script languages we use.