From 15904a10cb3d0bca00703b54c300c7beb05f95f7 Mon Sep 17 00:00:00 2001 From: Chris Koeritz Date: Sun, 12 Feb 2012 13:00:16 -0500 Subject: [PATCH] updated scheme for locating revision control assets; uses a list (in a string) of the folder names, which we later puff out to be an array of names. this chicanery is only needed because bash does not actually export array variables. still! a few other nice clean-ups were done. --- .../custom_overrides/fred/fred_variables.sh | 5 ++ scripts/core/launch_feisty_meow.sh | 14 ++-- scripts/core/variables.sh | 66 ++++++++++--------- scripts/readme.txt | 14 ++++ scripts/rev_control/checkin.sh | 9 ++- scripts/rev_control/getme.sh | 9 ++- 6 files changed, 74 insertions(+), 43 deletions(-) create mode 100644 scripts/readme.txt diff --git a/examples/custom_overrides/fred/fred_variables.sh b/examples/custom_overrides/fred/fred_variables.sh index 8df58455..90376b65 100644 --- a/examples/custom_overrides/fred/fred_variables.sh +++ b/examples/custom_overrides/fred/fred_variables.sh @@ -10,6 +10,11 @@ if [ "$(hostname)" = "zooty.koeritz.com" ]; then export WEB_DIR=/var/www fi +# add a bunch of folders to the list for checkin & checkout. these are +# definitely personal, and some of them are fairly dated (the yeti and +# hoople folders, for example). +REPOSITORY_LIST+=" games hoople hoople1 hoople2 quartz web yeti xsede/xsede_tests xsede/code/cak0l/trunk" + # point to our local certificate for ssh usage. export SVN_SSH="ssh -i $HOME/.ssh/id_dsa_sourceforge" diff --git a/scripts/core/launch_feisty_meow.sh b/scripts/core/launch_feisty_meow.sh index b1becc21..9b1a4e5b 100644 --- a/scripts/core/launch_feisty_meow.sh +++ b/scripts/core/launch_feisty_meow.sh @@ -30,16 +30,18 @@ if [ ! -f "$GENERATED_FEISTY_MEOW_VARIABLES" ]; then echo -e '\n\n' fi -# pull in our variable set. +############## + +# pull in our generated variables that are the minimal set we need to find +# the rest of our resources. source "$GENERATED_FEISTY_MEOW_VARIABLES" ############## -# Set up all of the environment's system variables. This is the first step -# in the majestic plan we have for this shell's initialization. +# load all the standard feisty meow variables into the environment. source $FEISTY_MEOW_SCRIPTS/core/variables.sh -# Set up the temporary directory... +# Set up the temporary directory. source $FEISTY_MEOW_SCRIPTS/core/create_tempdir.sh ############## @@ -61,10 +63,6 @@ if [ -z "$LIGHTWEIGHT_INIT" ]; then if [ ! -z "$SHELL_DEBUG" ]; then echo heavyweight login begins...; fi -#FEISTY_MEOW_GENERATED=$(echo $FEISTY_MEOW_GENERATED | sed -e 's/\\/\//g') -#FEISTY_MEOW_SCRIPTS="$(echo $FEISTY_MEOW_SCRIPTS | sed -e 's/\\/\//g')" -#FEISTY_MEOW_SCRIPTS="$FEISTY_MEOW_SCRIPTS" - # set up the aliases for the shell, but only if they are not already set. alias regenerated &>/dev/null # see if a crucial alias exists. if [ $? -ne 0 ]; then diff --git a/scripts/core/variables.sh b/scripts/core/variables.sh index d3d12f2a..1faf0d1b 100644 --- a/scripts/core/variables.sh +++ b/scripts/core/variables.sh @@ -30,6 +30,10 @@ if [ -z "$HOME" ]; then fi fi +############## + +# windoze specific stuff. + # patch home to undo cygwin style of drive letter. export HOME=$(echo $HOME | sed -e 's/\/cygdrive\//\//g') #echo HOME is now $HOME @@ -38,6 +42,8 @@ if [ "$OS" == "Windows_NT" ]; then export HOSTNAME=$(echo $HOSTNAME | tr A-Z a-z) fi +############## + # ulimit and umask. umask sets a permission mask for all file # creations. The mask shown here disallows writing by the "group" and # "others" categories of users. ulimit sets the user limits. the core @@ -51,10 +57,6 @@ ulimit -c 0 export SCRIPT_SYSTEM=feisty_meow -#if [ -z "$FEISTY_MEOW_DIR" ]; then export FEISTY_MEOW_DIR="$HOME/$SCRIPT_SYSTEM"; fi -#if [ -z "$FEISTY_MEOW_SCRIPTS" ]; then export FEISTY_MEOW_SCRIPTS="$FEISTY_MEOW_DIR/scripts"; fi -#if [ -z "$FEISTY_MEOW_SCRIPTS" ]; then export FEISTY_MEOW_SCRIPTS="$FEISTY_MEOW_SCRIPTS"; fi - # include helpful functions. source "$FEISTY_MEOW_SCRIPTS/core/functions.sh" @@ -70,7 +72,8 @@ fi ############## -# user variables... +# user variables, sort of... if they haven't given themselves a name yet, +# then we will make one up for them. # define a default name, if one wasn't already set. if [ -z "$NAME" ]; then @@ -79,40 +82,16 @@ fi ############## - -############################################################################## # other variables... -############################################################################## -# pull in the custom overrides for feisty_meow scripts. -for i in $FEISTY_MEOW_GENERATED/custom/*.sh; do - if [ ! -f "$i" ]; then - # skip it if it's not real. - continue; - fi - if [ ! -z "$SHELL_DEBUG" ]; then - echo "loading customization: $(basename $(dirname $i))/$(basename $i)" - fi - source $i -done - -# sets the prompts to what we (i.e., i) like... -# there are four different prompts. the first one, PS1, is the one that users -# see the most often. +# sets the main prompt to a simple default, with user@host. export PS1='\u@\h $ '; -### export PS2='> '; export PS3='#? '; export PS4='+ ' # variables for perl. export PERLLIB if [ "$OS" != "Windows_NT" ]; then PERLLIB+="/usr/lib/perl5" else - -#echo "the scripts dir is $FEISTY_MEOW_SCRIPTS" -# FEISTY_MEOW_SCRIPTS="$(echo $FEISTY_MEOW_SCRIPTS | sed -e 's/\\/\//g')" -# FEISTY_MEOW_SCRIPTS="$FEISTY_MEOW_SCRIPTS" -#echo "the scripts dir is now $FEISTY_MEOW_SCRIPTS" - export PERLIO=:perlio # choose perl's IO over the ms-windows version so we can handle file # bytes properly. @@ -141,6 +120,10 @@ export CVS_RSH=ssh HISTSIZE=1000000 HISTFILESIZE=2000000 +# the base checkout list is just to update feisty_meow. additional folder +# names can be added in your customized scripts. +export REPOSITORY_LIST="feisty_meow" + # set the editor for subversion if it hasn't already been set. if [ -z "$SVN_EDITOR" ]; then #hmmm: not sure what original reason for having these different was... @@ -204,8 +187,29 @@ if [ $found_build_vars == 1 ]; then export LD_LIBRARY_PATH="$(dos_to_msys_path $LD_LIBRARY_PATH):$(dos_to_msys_path $BINDIR)" fi -# Set the path for locating applications. +############## + +# pull in the custom overrides for feisty_meow scripts. this is done last, +# because we want to set everything up as expected, then let the user +# override individual variables and definitions. +for i in $FEISTY_MEOW_GENERATED/custom/*.sh; do + if [ ! -f "$i" ]; then + # skip it if it's not real. + continue; + fi + if [ ! -z "$SHELL_DEBUG" ]; then + echo "loading customization: $(basename $(dirname $i))/$(basename $i)" + fi + source $i +done + +############## + +# set the path for locating applications. this is done after any +# potential overrides from the user. export PATH="$(dos_to_msys_path $BINDIR):$(dos_to_msys_path $FEISTY_MEOW_GENERATED):$PATH:/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/lib:/usr/games:/usr/bin:." +############## + if [ ! -z "$SHELL_DEBUG" ]; then echo variables initialization ends....; fi diff --git a/scripts/readme.txt b/scripts/readme.txt new file mode 100644 index 00000000..9992bd9e --- /dev/null +++ b/scripts/readme.txt @@ -0,0 +1,14 @@ + +This is the feisty meow scripts folder, which formerly formed the bulk of the +yeticode scripts collection. We still love yetis however. + +Folders contained herein include: + +core/ + The most crucial scripts that we rely on in the codebase. These are +responsible for bootstrapping the shell scripts and providing the variables +and core aliases that are most often needed. The scripts in this folder also +provide an extensible way to load other aliases and variables to customize +the feisty meow yeti scripts. There, we're still talking about yetis. + +etc... diff --git a/scripts/rev_control/checkin.sh b/scripts/rev_control/checkin.sh index 18b459a0..a730031f 100644 --- a/scripts/rev_control/checkin.sh +++ b/scripts/rev_control/checkin.sh @@ -25,10 +25,17 @@ function do_checkin() fi } +# checks in all the folders in a specified list. function checkin_list { local list=$* for i in $list; do - for j in $i/feisty_meow $i/hoople1 $i/hoople2 $i/quartz $i/web $i/yeti $i/xsede/xsede_tests $i/xsede/code/cak0l/trunk ; do +echo whole list is ${REPOSITORY_LIST} + # turn repo list back into an array. + eval "repository_list=( ${REPOSITORY_LIST[*]} )" + for j in "${repository_list[@]}"; do + # add in the directory component. + j="$i/$j" +echo here the dir thing is: $j if [ ! -d "$j" ]; then continue; fi pushd $j &>/dev/null diff --git a/scripts/rev_control/getme.sh b/scripts/rev_control/getme.sh index 92c3ee55..58da7087 100644 --- a/scripts/rev_control/getme.sh +++ b/scripts/rev_control/getme.sh @@ -38,10 +38,13 @@ function do_update() function checkout_list { list=$* for i in $list; do -#this list should be part of the configuration file, not part of script. - for j in $i/feisty_meow $i/hoople $i/hoople1 $i/hoople2 $i/quartz $i/web $i/yeti $i/xsede/xsede_tests $i/xsede/code/cak0l/trunk ; do + # turn repo list back into an array. + eval "repository_list=( ${REPOSITORY_LIST[*]} )" + for j in "${repository_list[@]}"; do + # add in the directory for our purposes here. + j="$i/$j" if [ ! -d $j ]; then -# echo no directory called $j exists + echo no directory called $j exists continue fi -- 2.34.1