X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Fcore%2Fgenerate_aliases.pl;h=6662f1fb883d2cad6de99ae057b84cfd60a60ee1;hb=8afa0fb5c6deec20c14f940f944effa9514af8df;hp=ab1f6d954d32f582e3a3a53615c35e3cab4bd63b;hpb=2952ccf47b80174880141a7ecfa122089f349b8d;p=feisty_meow.git diff --git a/scripts/core/generate_aliases.pl b/scripts/core/generate_aliases.pl index ab1f6d95..6662f1fb 100644 --- a/scripts/core/generate_aliases.pl +++ b/scripts/core/generate_aliases.pl @@ -1,25 +1,27 @@ #!/usr/bin/perl -############################################################################### -# # -# Name : generate_aliases # -# Author : Chris Koeritz # -# Rights : Copyright (C) 1996-$now by Author # -# # -# 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 program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; either version 2 of the License or (at your option) # -# any later version. See: "http://www.gruntose.com/Info/GNU/GPL.html" for a # -# version of the License. Please send any updates to "fred@gruntose.com". # -############################################################################### +############## +# +# Name : generate_aliases +# Author : Chris Koeritz +# Rights : Copyright (C) 1996-$now by Author +# +# 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 program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License or (at your option) +# any later version. See: "http://www.gruntose.com/Info/GNU/GPL.html" for a +# version of the License. Please send any updates to "fred@gruntose.com". +############## + +require "filename_helper.pl"; require "importenv.pl"; @@ -69,10 +71,88 @@ 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. +# Any *.alias files found in the $FEISTY_MEOW_GENERATED/custom folder are +# loaded also. +sub rebuild_script_aliases { + + if (length($SHELL_DEBUG)) { + print "rebuiling generated aliases file...\n"; + } + + # create our generated shells directory if it's not already. + if ( ! -d $FEISTY_MEOW_GENERATED ) { + mkdir $FEISTY_MEOW_GENERATED; + if (length($SHELL_DEBUG)) { + print "made FEISTY_MEOW_GENERATED at '$FEISTY_MEOW_GENERATED'\n"; + } + } + + # test if we can use color in ls... + $test_color=` ls --help 2>&1 | grep -i color `; + + # this is an array of files from which to draw alias definitions. + @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")) { + if (-f $i) { push(@ALIAS_DEFINITION_FILES, $i); } + } + 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. + + local $GENERATED_ALIAS_FILE = "$FEISTY_MEOW_GENERATED/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. + + 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 "## please do not edit.\n"; + print GENOUT "##\n"; + + if (length($test_color)) { + print GENOUT "color_add=--color=auto\n"; + } else { + print GENOUT "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 () { + print GENOUT "$line"; + } + } + + close GENOUT; + + if (length($SHELL_DEBUG)) { + print("done rebuiling generated aliases file.\n"); + } +} + +############## + # make sure we know where to store the files we're creating. -if ( ! length("$GENERADIR") ) { +if ( ! length("$FEISTY_MEOW_GENERATED") ) { print "\ -The GENERADIR variable is not defined. This must point to the location where\n\ +The FEISTY_MEOW_GENERATED variable is not defined. This must point to the location where\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"; @@ -80,13 +160,13 @@ http://yeticode.org for more details.\n"; #really need to use better exit codes. } -$GENERADIR =~ s/\\/\//g; -$SHELLDIR =~ s/\\/\//g; -$YETI_DIR =~ s/\\/\//g; +$FEISTY_MEOW_GENERATED =~ s/\\/\//g; +$FEISTY_MEOW_SCRIPTS =~ s/\\/\//g; +$FEISTY_MEOW_DIR =~ s/\\/\//g; # create our generated shells directory if it's not already there. -if (! -d $GENERADIR) { - mkdir $GENERADIR; +if (! -d $FEISTY_MEOW_GENERATED) { + mkdir $FEISTY_MEOW_GENERATED; } ############## @@ -96,30 +176,28 @@ if (-d $BINDIR) { system("chmod -R u+x \"$BINDIR\"/*"); } -############## - -system("bash \"$SHELLDIR\"/core/unter_alia.sh"); - # generate the first set of alias files; these are the root files used - # by the shell. each of them will be written to in turn invoke the - # p_alias files which are made from the set of scripts in YETI_SCRIPTS - # (see below). +# 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("$GENERADIR/p_alias.sh"); +unlink("$FEISTY_MEOW_GENERATED/fmc_aliases_for_scripts.sh"); -printf "writing $GENERADIR/p_alias.sh...\n"; +if (length($SHELL_DEBUG)) { + printf "writing $FEISTY_MEOW_GENERATED/fmc_aliases_for_scripts.sh...\n"; +} # open the alias files to be created. -open(she, ">> $GENERADIR/p_alias.sh"); +open(she, ">> $FEISTY_MEOW_GENERATED/fmc_aliases_for_scripts.sh"); #print "os is $OS\n"; # find the list of files in the scripts directory. -#opendir(scripts, "$SHELLDIR"); +#opendir(scripts, "$FEISTY_MEOW_SCRIPTS"); #@shell_files = sort(readdir(scripts)); #print "yeti scripts: @shell_files\n"; -@shell_files = &load_file_names("$SHELLDIR"); +@shell_files = &load_file_names("$FEISTY_MEOW_SCRIPTS"); # construct aliases for items in the scripts directory. foreach $file (@shell_files) { @@ -127,14 +205,17 @@ foreach $file (@shell_files) { if ($file =~ '^\.$' || $file =~ '^\.\.$' || $file =~ '^.svn$' + || $file =~ '^.git$' || $file =~ /\/\.$/ || $file =~ /\/\.\.$/ - || $file =~ /\/\.svn$/) { + || $file =~ /\/\.svn$/ + || $file =~ /\/\.git$/ + ) { # just skip this item; it's a special directory. - } elsif (-d "$SHELLDIR/$file") { + } 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. - opendir(subdir, "$SHELLDIR/$file"); + opendir(subdir, "$FEISTY_MEOW_SCRIPTS/$file"); @subdir_files = sort(readdir(subdir)); foreach $subfile (@subdir_files) { push(@shell_files, "$file/$subfile"); @@ -142,7 +223,7 @@ foreach $file (@shell_files) { } 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. - &make_alias($file, "$SHELLDIR"); + &make_alias($file, "$FEISTY_MEOW_SCRIPTS"); } }