# almost nothing from the user's environment. this folder needs to be updated
# for your own particular install location.
FEISTY_MEOW_APEX=/opt/feistymeow.org/feisty_meow
-#FEISTY_MEOW_APEX=$HOME/feisty_meow
# crontab miniature docs:
#
##############
-# system-wide install:
+# system-wide install (will be fixed by connect_feisty_meow script):
export FEISTY_MEOW_APEX="/opt/feistymeow.org/feisty_meow"
-# personal install:
-#export FEISTY_MEOW_APEX="$HOME/feisty_meow"
# sets up the feisty_meow scripts if appropriate for the environment.
if [ "${TERM}" != "dumb" -a -z "$PBS_ENVIRONMENT" ]; then
##############
-# system-wide install:
+# system-wide install (will be fixed by connect_feisty_meow script):
export FEISTY_MEOW_APEX="/opt/feistymeow.org/feisty_meow"
-# personal install:
-#export FEISTY_MEOW_APEX="$HOME/feisty_meow"
# the "fredme" macro enables the feisty_meow environment.
alias fredme='source "$FEISTY_MEOW_APEX/scripts/core/launch_feisty_meow.sh"'
# Feel free to send updates to: [ fred@gruntose.com ]
##############
-# a list of core aliases for feisty meow codebase.
+# this file provides a list of core aliases for feisty meow codebase.
+
+##############
+
+# call the generated aliases file, if it exists.
+# we do this first so that our core aliases get a chance to override the aliases
+# based on scripts.
+
+if [ -f "$FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh" ]; then
+ if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then echo loading script aliases...; fi
+ source "$FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh"
+ if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then echo done loading script aliases.; fi
+fi
+
+##############
# repurposes certain commands that feisty meow does a little differently.
define_yeti_alias cls='clear_colormap; clear'
# some important retreads on aliases that provide a sudo-ized version of other scripts.
-define_yeti_alias standup="bash \"$FEISTY_MEOW_SCRIPTS/site_avenger/standup.sh\""
+define_yeti_alias standup="sudo bash \"$FEISTY_MEOW_SCRIPTS/site_avenger/standup.sh\""
#hmmm: some magma intrusions from the fred customizations...
-define_yeti_alias revamp_web_permissions="bash \"$FEISTY_MEOW_SCRIPTS/customize/fred/scripts/cakelampvm/revamp_web_permissions.sh"
+define_yeti_alias revamp_web_permissions="sudo bash \"$FEISTY_MEOW_SCRIPTS/customize/fred/scripts/cakelampvm/revamp_web_permissions.sh"
##############
##############
-# call the generated aliases file, if it exists.
-if [ -f "$FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh" ]; then
- if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then echo loading script aliases...; fi
- source "$FEISTY_MEOW_LOADING_DOCK/fmc_aliases_for_scripts.sh"
- if [ ! -z "$DEBUG_FEISTY_MEOW" ]; then echo done loading script aliases.; fi
-fi
-
-##############
-
# remove the fredization macro if it was defined, helping to avoid running
# the shell scripts twice for users like root that don't always load this
# stuff.
fi
echo
echo "it is $(date +"%A at %H:%M hours on day %e of the %B moon in the gregorian year %Y" | tr A-Z a-z) and our intrepid adventurer $USER is exploring a computer named $(hostname) that is running in a thoughtspace called $osname $osver (code-name $codename), and $USER has deduced that the machine's OS platform is $(uname -m) and its current incarnation has been ${up}." | $splitter
-#hmmm: splitter not accepting these args properly right now:
-#--mincol 2 --maxcol 40
echo
-#echo '++++++++++++++++++++++++++++++++++++++++++'
-#echo
echo "the following things appear to be lying around here..."
echo
ls -hFC $color_add
echo
-#echo '++++++++++++++++++++++++++++++++++++++++++'
-#echo
echo "there appear to be these entities on this host..."
echo
who -suT
"
else
# apex is good, so let's make the scripts good too.
- if [ ! -d "$FEISTY_MEOW_SCRIPTS" ]; then
+ if [ -z "$FEISTY_MEOW_SCRIPTS" -o ! -d "$FEISTY_MEOW_SCRIPTS" ]; then
export FEISTY_MEOW_SCRIPTS="$FEISTY_MEOW_APEX/scripts"
fi
# check again to test our belief system...
fi
fi
-#; /bin/bash -i --norc --noprofile\" > \$HOME/fm-fix
-#; exec /bin/bash -i --norc --noprofile -c 'bash \$HOME/fm-fix ; echo hello ; read line'
-#--norc --noprofile
-#; source \$FEISTY_MEOW_APEX/scripts/core/launch_feisty_meow.sh
-
if [ "$NO_REPAIRS_NEEDED" == "true" ]; then
# we believe it's safe to run through the rest of this script.
function print_instructions()
{
echo -e "\n$(basename $0 .sh):\n"
+
+#hmmm: extract to a terminal size function.
+# calculate the number of columsn in the terminal.
+cols=$(stty size | awk '{print $2}')
+
echo -e 'this script takes two parameters, a "here" folder and a "there" folder, almost as if it were a copy command. but instead, this removes any file from under the "here" location if it cannot be found in the "there" location. so the "there" location is considered a more definitive template of what should be in "here", such that we strip out what "there" does not have.\n\n
-the most" useful way to use this script is for a "here" hierarchy that is a copy of an older version of another "there" hierarchy. the "there" hierarchy may have changed a lot, including new files, changed files, and deleted files. it is a simple operation to copy everything from "there" into "here" (such as by using the command [ cp -R "$there"/* "$here" ] ) , but it is a lot harder to determine what stuff in "here" is out of date and should be removed. that is where this script comes in; it can be run to flush out any older things in "here", rather than requiring the user to manually find all those files. ' | splitter
+the most" useful way to use this script is for a "here" hierarchy that is a copy of an older version of another "there" hierarchy. the "there" hierarchy may have changed a lot, including new files, changed files, and deleted files. it is a simple operation to copy everything from "there" into "here" (such as by using the command [ cp -R "$there"/* "$here" ] ) , but it is a lot harder to determine what stuff in "here" is out of date and should be removed. that is where this script comes in; it can be run to flush out any older things in "here", rather than requiring the user to manually find all those files. ' | splitter --maxcol $(($cols - 1))
echo
echo "Example Usage:"
echo
+++ /dev/null
-#!/bin/bash
-
-# this "fluffs out" the repositories that it finds. what this means is that
-# any git repositories found will have all of their remote state updated (by
-# pulling all remote repos). this ensures that any upstream changes get
-# merged into the local branch.
-# it's better to fluff out your code regularly rather than waiting for a huge
-# merge snarl later. note that if you check in the code frequently with the
-# feisty meow scripts, that will also take care of fluffing out the code.
-
-source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
-source "$FEISTY_MEOW_SCRIPTS/rev_control/version_control.sh"
-
-##############
-
-dir="$1"; shift
-if [ -z "$dir" ]; then
- dir=.
-fi
-
-pushd "$dir" &>/dev/null
-test_or_die "changing to directory: $dir"
-tempfile=$(generate_rev_ctrl_filelist)
-test_or_die "generating revision control file list"
-popd &>/dev/null
-
-perform_revctrl_action_on_file "$tempfile" do_careful_git_update
-test_or_die "fluffing out repository at: $tempfile"
-
--- /dev/null
+#!/bin/bash
+
+# this "puffs out" the repositories that it finds. what this means is that
+# any git repositories found will have all of their remote state updated (by
+# pulling all remote repos). this ensures that any upstream changes get
+# merged into the local branch.
+# it's better to puff out your code regularly rather than waiting for a huge
+# merge snarl later. note that if you check in the code frequently with the
+# feisty meow scripts, that will also take care of puffing out the code.
+
+source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
+source "$FEISTY_MEOW_SCRIPTS/rev_control/version_control.sh"
+
+##############
+
+dir="$1"; shift
+if [ -z "$dir" ]; then
+ dir=.
+fi
+
+pushd "$dir" &>/dev/null
+test_or_die "changing to directory: $dir"
+tempfile=$(generate_rev_ctrl_filelist)
+test_or_die "generating revision control file list"
+popd &>/dev/null
+
+perform_revctrl_action_on_file "$tempfile" do_careful_git_update
+test_or_die "puffing out repository at: $tempfile"
+
# use our splitter tool for lengthy output if it's available.
if [ ! -z "$(which splitter)" ]; then
TO_SPLITTER="$(which splitter)"
+
+#hmmm: another reusable chunk here, getting terminal size.
+ # calculate the number of columsn in the terminal.
+ cols=$(stty size | awk '{print $2}')
+ TO_SPLITTER+=" --maxcol $(($cols - 1))"
else
TO_SPLITTER=cat
fi
source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
-# get our configuration loaded.
+# get our configuration loaded, if we know the config file.
+# if there is none, we will use our default version.
export SITE_MANAGEMENT_CONFIG_FILE
if [ -z "$SITE_MANAGEMENT_CONFIG_FILE" ]; then
SITE_MANAGEMENT_CONFIG_FILE="$WORKDIR/config/default.app"
fi
+
+# load in at least the default version to get us moving.
source "$SITE_MANAGEMENT_CONFIG_FILE"
test_or_die "loading site management configuration from: $SITE_MANAGEMENT_CONFIG_FILE"
test_or_die "Testing application folder: $app_dirname"
echo "Application folder is: $app_dirname"
+
+ local configfile="$WORKDIR/config/${app_dirname}.app"
+ if [ ! -f "$configfile" ]; then
+ # this is not a good config file. we can't auto-guess the config.
+ echo -e "
+There is no specific site configuration file in:
+ $configfile
+We will continue onward using the default and hope that this project follows
+the standard pattern for cakephp projects."
+ # we'll pull in the default config file we set earlier; this will
+ # reinitialize some variables based on the app name.
+ else
+ # they gave us a valid config file. let's try using it.
+ SITE_MANAGEMENT_CONFIG_FILE="$configfile"
+ fi
+
+ # try to load the config.
+ source "$SITE_MANAGEMENT_CONFIG_FILE"
+ test_or_die "loading site management configuration from: $SITE_MANAGEMENT_CONFIG_FILE"
}
# ensures that the app directory name is valid.
# is much more powerful if the site is based on cakephp and site avenger.
export WORKDIR="$( \cd "$(\dirname "$0")" && \pwd )" # obtain the script's working directory.
+export FEISTY_MEOW_APEX="$( \cd "$WORKDIR/../.." && \pwd )"
+
+source "$FEISTY_MEOW_APEX/scripts/core/launch_feisty_meow.sh"
############################
echo "$(basename $0 .sh) {app name}"
echo
echo "
+$(basename $0 .sh) will completely set up a web site, including a domain
+name and an apache configuration file. The site will be acquired from a
+git repository and configured. At the end of this script, the result should
+be an almost working website; you may need to fix the site configuration,
+create databases and so forth.
+
+This script must be run as sudo or root; it makes changes to system files.
app name: The app name parameter is mandatory. The configuration file for
this script will be derived from the app name (e.g. if the app name is MyApp,
then the config file will be 'MyApp.config'). The config files are by
# check for parameters.
app_dirname="$1"; shift
+if [ "$app_dirname" == "-help" -o "$app_dirname" == "--help" ]; then
+ print_instructions
+elif [ -z "$app_dirname" ]; then
+ print_instructions
+fi
+
if (( $EUID != 0 )); then
echo "This script must be run as root or sudo."
exit 1
fi
-if [ -z "$app_dirname" ]; then
- print_instructions
-fi
-
source "$WORKDIR/shared_site_mgr.sh"
-if [ "$app_dirname" == "-help" -o "$app_dirname" == "--help" ]; then
- print_instructions
-fi
-
sep
check_application_dir "$APPLICATION_DIR"
+# find proper webroot where the site will be initialized.
+if [ -z "$app_dirname" ]; then
+ # no dir was passed, so guess it.
+ find_app_folder "$APPLICATION_DIR"
+else
+ test_app_folder "$APPLICATION_DIR" "$app_dirname"
+fi
+
add_domain "$DOMAIN_NAME"
test_or_die "Setting up domain: $DOMAIN_NAME"
+sep
+
add_apache_site "$APPLICATION_NAME" "$DOMAIN_NAME"
test_or_die "Setting up apache site for: $APPLICATION_NAME"
+sep
+
powerup "$APPLICATION_NAME" "$REPO_NAME" "$THEME_NAME"
sep
if [ -f "$site_config" ]; then
echo "The apache configuration file already exists at:"
echo " $site_config"
- echo "Please remove this file before proceeding, if it is junk. For example:"
- echo " sudo rm $site_config"
- exit 1
+ echo "Since apache configuration files can get very complex, we do not want to"
+ echo "assume that this file is removable. Calling the site addition done."
+ exit 0
fi
echo "Creating a new apache2 site for $sitename with config file:"
echo "using the config file: $domain_file"
if [ -f $domain_file ]; then
+ echo
echo "The domain configuration file already exists at:"
echo " $domain_file"
- echo "Please remove this file before proceeding, if it is junk. For example:"
- echo " sudo rm $domain_file"
- exit 1
+ echo "Since we don't want to tear that down if it has specialized configuration"
+ echo "data in it, we will just leave it in place and consider our job done."
+ echo
+ exit 0
fi
echo "