X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Fcore%2Fgenerate_aliases.pl;h=faf9e827924de944dd0f57c35100aa09771afed7;hb=7a8f2e623e3e19e4b864bfca5f28f5cbb84154bc;hp=a9c4043518db769c17edfe061c71cd92a2da14dc;hpb=89bbd8fff37ad9c060c989b07fb6d2fb87972a7d;p=feisty_meow.git diff --git a/scripts/core/generate_aliases.pl b/scripts/core/generate_aliases.pl index a9c40435..faf9e827 100644 --- a/scripts/core/generate_aliases.pl +++ b/scripts/core/generate_aliases.pl @@ -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"; @@ -153,10 +150,14 @@ Please see http://feistymeow.org for more details.\n"; #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,13 +185,21 @@ 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. @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"))); +# 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 in main script dirs:\n"; #printf " @shell_files\n"; @@ -201,11 +214,9 @@ foreach $file (@shell_files) { || $file =~ /\/\.\.$/ || $file =~ /\/\.svn$/ || $file =~ /\/\.git$/ - || $file =~ /\/customize\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_.]+$/ -#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 or a file we don't want to include. -# print "skipping name: $file\n"; + print "skipping name: $file\n"; } else { &make_alias($file, ""); } @@ -213,4 +224,18 @@ foreach $file (@shell_files) { 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; +