From: Chris Koeritz Date: Sat, 11 Nov 2017 06:01:33 +0000 (-0500) Subject: crucial fix for last version, oops X-Git-Tag: 2.140.95^2~1^2^2 X-Git-Url: https://feistymeow.org/gitweb/?a=commitdiff_plain;h=45e12c67fbdf820e0a6929e1175d533b8756be6b;p=feisty_meow.git crucial fix for last version, oops --- diff --git a/scripts/core/launch_feisty_meow.sh b/scripts/core/launch_feisty_meow.sh index c5a6fd36..26ad78e2 100644 --- a/scripts/core/launch_feisty_meow.sh +++ b/scripts/core/launch_feisty_meow.sh @@ -24,141 +24,163 @@ # argument 0. instead, we just check for the bad condition of a malconfigured # script system and try to repair it. +# we start out thinking things are good. +NO_REPAIRS_NEEDED=true + # check if any crucial folder is hosed. we will torch the existing config # to the extent we can. -if [ ! -d "$FEISTY_MEOW_SCRIPTS" -o ! -d "$FEISTY_MEOW_APEX" ]; then +if [ ! -d "$FEISTY_MEOW_APEX" ]; then + # flag some problems. + unset NO_REPAIRS_NEEDED # wipe out the offending variable(s). unset FEISTY_MEOW_SCRIPTS FEISTY_MEOW_APEX # clean out any unfortunate wrongness that may exist in our generated areas. - if [ -d "$"FEISTY_MEOW_LOADING_DOCK ]; then \rm -rf "$FEISTY_MEOW_LOADING_DOCK"; fi + if [ -d "$FEISTY_MEOW_LOADING_DOCK" ]; then \rm -rf "$FEISTY_MEOW_LOADING_DOCK"; fi if [ -d "$FEISTY_MEOW_GENERATED_STORE" ]; then \rm -rf "$FEISTY_MEOW_GENERATED_STORE"; fi # also wipe any values from the variables pointing at generated stuff. unset FEISTY_MEOW_LOADING_DOCK FEISTY_MEOW_GENERATED_STORE - exec $* -fi - -############## - -# some preconditions we want to establish before loading anything... - -# make sure that aliases can be used in non-interactive shells. -shopt -s expand_aliases - -# patch the user variable if we were launched by one of our cron jobs. -if [ -z "$USER" -a ! -z "$CRONUSER" ]; then - export USER="$CRONUSER" -fi - -############## - -export ERROR_OCCURRED= - # there have been no errors to start with, at least. we will set this - # to non-empty if something bad happens. - -if [ -z "$FEISTY_MEOW_LOADING_DOCK" ]; then - # FEISTY_MEOW_LOADING_DOCK is where the generated files are located. - # this is our single entry point we can use without knowing any variables - # yet in the initialization process. - export FEISTY_MEOW_LOADING_DOCK="$HOME/.zz_feisty_loading" -#hmmm: the above is kind of a constant. that's not so great. - - # make sure our main variables are established. - FEISTY_MEOW_VARIABLES_LOADING_FILE="$FEISTY_MEOW_LOADING_DOCK/fmc_variables.sh" - if [ ! -f "$FEISTY_MEOW_VARIABLES_LOADING_FILE" ]; then - echo -e "\ - -The feisty meow scripts need initialization via the bootstrap process. For\n\ -example, if the feisty meow folder lives in '$DEFAULT_FEISTYMEOW_ORG_DIR', then this\n\ -command bootstraps feisty meow:\n\ -\n\ - bash $example_dir/feisty_meow/scripts/core/reconfigure_feisty_meow.sh\n\ -\n\ -\n" - ERROR_OCCURRED=true - fi + echo " - ############## +The feisty meow configuration is damaged somehow. Please change to the +directory where it is stored, e.g.: - if [ -z "$ERROR_OCCURRED" ]; then + cd /opt/feistymeow.org/feisty_meow - # pull in our generated variables that are the minimal set we need to find - # the rest of our resources. - source "$FEISTY_MEOW_VARIABLES_LOADING_FILE" +and execute this command: - # Set up the temporary directory. - source "$FEISTY_MEOW_SCRIPTS/core/create_tempdir.sh" - fi + export FEISTY_MEOW_APEX=\"\$(pwd)\"; export FEISTY_MEOW_SCRIPTS=\"\$(pwd)/scripts\"; bash scripts/core/reconfigure_feisty_meow.sh && exec bash -i -c \"source \$(pwd)/core/launch_feisty_meow.sh; bash\" +" fi -############## - -if [ -z "$ERROR_OCCURRED" ]; then +if [ "$NO_REPAIRS_NEEDED" == "true" ]; then - # load the larger body of standard feisty meow variables into the environment. - # we actually want this to always run also; it will decide what variables need - # to be set again. - source "$FEISTY_MEOW_SCRIPTS/core/variables.sh" + # we believe it's safe to run through the rest of this script. ############## - # include helpful functions. we do this every time rather than making it part - # of variable initialization, because functions cannot be exported to - # sub-shells in bash. - source "$FEISTY_MEOW_SCRIPTS/core/functions.sh" + # some preconditions we want to establish before loading anything... - # load some helper methods for the terminal which we'll use below. - source "$FEISTY_MEOW_SCRIPTS/tty/terminal_titler.sh" - - ############## + # make sure that aliases can be used in non-interactive shells. + shopt -s expand_aliases - # check hash table before searching path. - shopt -s checkhash - # don't check path for sourced files. - shopt -u sourcepath - # ignore duplicate lines. - HISTCONTROL=ignoredups - # append to the history file. - shopt -s histappend - # automatically update window size if needed. - shopt -s checkwinsize - - ############## - - # make history writes immediate to avoid losing history if bash is zapped. - echo $PROMPT_COMMAND | grep -q history - if [ $? -ne 0 ]; then - # we only change the prompt command if we think it hasn't already been done. - export PROMPT_COMMAND="history -a;$PROMPT_COMMAND" + # patch the user variable if we were launched by one of our cron jobs. + if [ -z "$USER" -a ! -z "$CRONUSER" ]; then + export USER="$CRONUSER" fi ############## - # perform the bulkier parts of the initialization process. + export ERROR_OCCURRED= + # there have been no errors to start with, at least. we will set this + # to non-empty if something bad happens. - if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then echo "heavyweight init begins..."; fi + if [ -z "$FEISTY_MEOW_LOADING_DOCK" ]; then + # FEISTY_MEOW_LOADING_DOCK is where the generated files are located. + # this is our single entry point we can use without knowing any variables + # yet in the initialization process. + export FEISTY_MEOW_LOADING_DOCK="$HOME/.zz_feisty_loading" + #hmmm: the above is kind of a constant. that's not so great. - # set up the aliases for the shell, but only if they are not already set. - type CORE_ALIASES_LOADED &>/dev/null - if [ $? -ne 0 ]; then - if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then - echo "the aliases were missing, now they are being added..." + # make sure our main variables are established. + FEISTY_MEOW_VARIABLES_LOADING_FILE="$FEISTY_MEOW_LOADING_DOCK/fmc_variables.sh" + if [ ! -f "$FEISTY_MEOW_VARIABLES_LOADING_FILE" ]; then + echo -e "\ + + The feisty meow scripts need initialization via the bootstrap process. For\n\ + example, if the feisty meow folder lives in '$DEFAULT_FEISTYMEOW_ORG_DIR', then this\n\ + command bootstraps feisty meow:\n\ + \n\ + bash $example_dir/feisty_meow/scripts/core/reconfigure_feisty_meow.sh\n\ + \n\ + \n" + ERROR_OCCURRED=true fi - source "$FEISTY_MEOW_LOADING_DOCK/fmc_core_and_custom_aliases.sh" - fi - #echo before the new labelling, terminal titles have: - #show_terminal_titles + ############## - # a minor tickle of the title of the terminal, unless we already have some history. - label_terminal_with_info + if [ -z "$ERROR_OCCURRED" ]; then - if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then echo "heavyweight init is done."; fi + # pull in our generated variables that are the minimal set we need to find + # the rest of our resources. + source "$FEISTY_MEOW_VARIABLES_LOADING_FILE" + + # Set up the temporary directory. + source "$FEISTY_MEOW_SCRIPTS/core/create_tempdir.sh" + fi - if [ -z "$ERROR_OCCURRED" ]; then - # set a sentinel variable to say we loaded the feisty meow environment. - export FEISTY_MEOW_SCRIPTS_LOADED=true fi -fi # no error occurred. + ############## + + if [ -z "$ERROR_OCCURRED" ]; then + + # load the larger body of standard feisty meow variables into the environment. + # we actually want this to always run also; it will decide what variables need + # to be set again. + source "$FEISTY_MEOW_SCRIPTS/core/variables.sh" + + ############## + + # include helpful functions. we do this every time rather than making it part + # of variable initialization, because functions cannot be exported to + # sub-shells in bash. + source "$FEISTY_MEOW_SCRIPTS/core/functions.sh" + + # load some helper methods for the terminal which we'll use below. + source "$FEISTY_MEOW_SCRIPTS/tty/terminal_titler.sh" + + ############## + + # check hash table before searching path. + shopt -s checkhash + # don't check path for sourced files. + shopt -u sourcepath + # ignore duplicate lines. + HISTCONTROL=ignoredups + # append to the history file. + shopt -s histappend + # automatically update window size if needed. + shopt -s checkwinsize + + ############## + + # make history writes immediate to avoid losing history if bash is zapped. + echo $PROMPT_COMMAND | grep -q history + if [ $? -ne 0 ]; then + # we only change the prompt command if we think it hasn't already been done. + export PROMPT_COMMAND="history -a;$PROMPT_COMMAND" + fi + + ############## + + # perform the bulkier parts of the initialization process. + + if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then echo "heavyweight init begins..."; fi + + # set up the aliases for the shell, but only if they are not already set. + type CORE_ALIASES_LOADED &>/dev/null + if [ $? -ne 0 ]; then + if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then + echo "the aliases were missing, now they are being added..." + fi + source "$FEISTY_MEOW_LOADING_DOCK/fmc_core_and_custom_aliases.sh" + fi + + #echo before the new labelling, terminal titles have: + #show_terminal_titles + + # a minor tickle of the title of the terminal, unless we already have some history. + label_terminal_with_info + + if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then echo "heavyweight init is done."; fi + + if [ -z "$ERROR_OCCURRED" ]; then + # set a sentinel variable to say we loaded the feisty meow environment. + export FEISTY_MEOW_SCRIPTS_LOADED=true + fi + + fi # no error occurred. + +fi # "$NO_REPAIRS_NEEDED" was == "true"