dropped the copying of customizations
[feisty_meow.git] / scripts / core / generate_aliases.pl
index 20d5bd96f57e86414a2cd9216510b22c9e94c512..faf9e827924de944dd0f57c35100aa09771afed7 100644 (file)
@@ -23,7 +23,7 @@
 
 require "filename_helper.pl";
 
-use Env qw(FEISTY_MEOW_BINARIES BUILD_TOP FEISTY_MEOW_APEX FEISTY_MEOW_LOADING_DOCK FEISTY_MEOW_SCRIPTS DEBUG_FEISTY_MEOW );
+use Env qw(FEISTY_MEOW_BINARIES BUILD_TOP FEISTY_MEOW_APEX FEISTY_MEOW_LOADING_DOCK FEISTY_MEOW_SCRIPTS DEBUG_FEISTY_MEOW HOME );
 
 # 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
@@ -43,11 +43,10 @@ sub make_alias {
 sub make_bash_alias {
   local($aliasname) = shift(@_);
   local($full_alias) = $aliasname;
+#print "full alias is $full_alias\n";
   $aliasname =~ s/^.*\/([^\/]*)/\1/;
 #print "alias became $aliasname\n";
-  local($source_dir) = shift(@_);
-#print "bash alias is $aliasname, dir is $source_dir\n";
-  print she "define_yeti_alias $aliasname=\"bash $source_dir/$full_alias.sh\"\n";
+  print she "define_yeti_alias $aliasname=\"bash $full_alias.sh\"\n";
 }
 
 # makes an alias for a perl script given the alias name.
@@ -56,9 +55,7 @@ sub make_perl_alias {
   local($full_alias) = $aliasname;
   $aliasname =~ s/^.*\/([^\/]*)/\1/;
 #print "alias became $aliasname\n";
-  local($source_dir) = shift(@_);
-#print "perl alias is $aliasname, dir is $source_dir\n";
-  print she "define_yeti_alias $aliasname=\"perl $source_dir/$full_alias.pl\"\n";
+  print she "define_yeti_alias $aliasname=\"perl $full_alias.pl\"\n";
 }
 
 ##############
@@ -89,6 +86,7 @@ sub rebuild_script_aliases {
   @ALIAS_DEFINITION_FILES = ("$FEISTY_MEOW_SCRIPTS/core/common.alias");
 
   # if custom aliases files exist, add them to the list.
+#hmmm: would be nice to have this name in a symbol somewhere instead of having "custom" or "customize" everywhere.
   foreach $i (&glob_list("$FEISTY_MEOW_LOADING_DOCK/custom/*.alias")) {
     if (-f $i) { push(@ALIAS_DEFINITION_FILES, $i); }
   }
@@ -102,7 +100,6 @@ sub rebuild_script_aliases {
   }
 
   # write the aliases for sh and bash scripts.
-
   local $GENERATED_ALIAS_FILE = "$FEISTY_MEOW_LOADING_DOCK/fmc_core_and_custom_aliases.sh";
   if (length($DEBUG_FEISTY_MEOW)) {
     print "writing generated aliases in $GENERATED_ALIAS_FILE...\n";
@@ -147,16 +144,20 @@ if ( ! length("$FEISTY_MEOW_LOADING_DOCK") ) {
 The FEISTY_MEOW_LOADING_DOCK variable is not defined.  This must point to\
 the location where the generated scripts are stored.  You may still need to\
 configure the feisty meow script system with something like:\
-  bash ~/feisty_meow/scripts/core/reconfigure_feisty_meow.sh\
+  bash /opt/feistymeow.org/feisty_meow/scripts/core/reconfigure_feisty_meow.sh\
 Please see http://feistymeow.org for more details.\n";
   exit 1;
 #really need to use better exit codes.
 }
 
+##############
+
 $FEISTY_MEOW_LOADING_DOCK =~ s/\\/\//g;
 $FEISTY_MEOW_SCRIPTS =~ s/\\/\//g;
 $FEISTY_MEOW_APEX =~ s/\\/\//g;
 
+##############
+
 # create our generated shells directory if it's not already there.
 if (! -d $FEISTY_MEOW_LOADING_DOCK) {
   mkdir $FEISTY_MEOW_LOADING_DOCK;
@@ -166,13 +167,17 @@ if (! -d $FEISTY_MEOW_LOADING_DOCK) {
 
 # set the executable bit for binaries for just this current user.
 if (-d $FEISTY_MEOW_BINARIES) {
-  system("chmod -R u+x \"$FEISTY_MEOW_BINARIES\"/*");
+  system("find \"$FEISTY_MEOW_BINARIES\" -type f -exec chmod u+x \"{}\" ';'");
 }
 
+##############
+
 # generate the first set of alias files that are defined in the core
 # and custom scripts directories.
 &rebuild_script_aliases;
 
+##############
+
 # trash the old versions.
 unlink("$FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh");
 
@@ -180,20 +185,23 @@ if (length($DEBUG_FEISTY_MEOW)) {
   printf "writing $FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh...\n";
 }
 
+##############
+
 # open the alias files to be created.
 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));
-#print "scripts: @shell_files\n";
+@shell_files = (find_files(recursive_find_directories("$FEISTY_MEOW_SCRIPTS")),
+    find_files("$FEISTY_MEOW_LOADING_DOCK/custom/scripts"),
+    find_files(recursive_find_directories("$FEISTY_MEOW_LOADING_DOCK/custom/scripts")));
 
-@shell_files = (&find_files("$FEISTY_MEOW_SCRIPTS"),
-   &find_files("$FEISTY_MEOW_LOADING_DOCK/custom/scripts"),
-   &find_files(find_directories("$FEISTY_MEOW_LOADING_DOCK/custom/scripts")));
-#really want the recursive one called here, but baby steps
+# strip out the customization files, since they are added in on demand only.
+#print "before filtering list: @shell_files\n";
+@shell_files = grep ! /\/customize\//, @shell_files;
+#print "after filtering list: @shell_files\n";
 
-printf "found all these files: @shell_files\n";
+#printf "found all these files in main script dirs:\n";
+#printf "  @shell_files\n";
 
 # construct aliases for items in the scripts directory.
 foreach $file (@shell_files) {
@@ -206,51 +214,28 @@ foreach $file (@shell_files) {
       || $file =~ /\/\.\.$/
       || $file =~ /\/\.svn$/
       || $file =~ /\/\.git$/
-      || $file =~ /\/customize\//
-#hmmm: would be nice to have this name in a symbol somewhere instead of having "customize" everywhere.
       ) {
-    # just skip this item; it's a special directory.
-#print "skipping name: $file\n";
-  } elsif (-d "$FEISTY_MEOW_SCRIPTS/$file") {
-    # if we see a subdirectory in the scripts folder, we add all the
-    # scripts in it as aliases.  we recurse only one level.  we also don't use
-    # our customize directory as aliases, since those are processed way differently.
-#print "adding script dir in: $file\n";
-    opendir(subdir, "$FEISTY_MEOW_SCRIPTS/$file");
-    @subdir_files = sort(readdir(subdir));
-    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";
+    # just skip this item; it's a special directory or a file we don't want to include.
+    print "skipping name: $file\n";
   } else {
-    # last ditch effort to make sense of the file; just go ahead and make an alias unless
-    # the file is part of our customization scheme.
-    if ( ! ($file =~ /customize/) ) {
-#print "adding regular file in: $file\n";
-      # 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.
-      &make_alias($file, "$FEISTY_MEOW_SCRIPTS");
-    } else {
-#print "omitting file in: $file\n";
-    }
+     &make_alias($file, "");
   }
 }
 
-# open the source repository's script directory to find scripts in there.
-local($build_shell_path) = "$BUILD_TOP/scripts/generator";
-@build_shells = &find_files("$build_shell_path");
-#opendir(build_shells_dir, $build_shell_path);
-#@build_shell_files = sort(readdir(build_shells_dir));
-#if (scalar(@build_shell_files) > 0) {
-#  print "build shell folders: @build_shell_files\n";
-#}
-foreach $file (@build_shells) {
-  &make_alias($file, "$build_shell_path");
-}
+close(she);
+
+##############
+
+# prepare a finalizer chunk that is the last thing to load.
+
+open(she, ">> $FEISTY_MEOW_LOADING_DOCK/fmc_ending_sentinel.sh");
+
+# write in our sentinel alias that says alias loading was handled.
+print she "define_yeti_alias CORE_ALIASES_LOADED=true\n";
 
 close(she);
 
+##############
+
+1;
+