new files implementing cakephp site management
[feisty_meow.git] / scripts / site_avenger / powerup
1 #!/bin/bash
2
3 # Author: Kevin Wentworth
4 # Author: Chris Koeritz
5
6 # This script "powers up" a cakephp site by running the database migrations,
7 # cleaning out the ORM cache, and fixing file permissions.
8 # Note that the mysql database must already exist and allow permissions to
9 # the configured username/password in config/app.php.
10 # This script is currently highly specific to site avenger.
11
12 # General Info:
13 #
14 # The naming scheme here is a little complex, but it's basically this...
15 # A git repository is expected to be provided, and we will get all the code
16 # for the web site from there.  The repository is expected to have a single
17 # application "name" and one or more "themes".  By convention, the name
18 # and the theme are often the same.
19 # For example, let's say our app name is "turtle" and our theme name is "box".
20 # The repo is checked out to a folder called "~/apps/turtle".
21 # This script will want to use "turtle" as the app name.
22 # It will have to be told the theme name, but will assume it's 'Turtle' to
23 # start with.  The concept of the theme comes from cakephp.
24
25 export WORKDIR="$( \cd "$(\dirname "$0")" && \pwd )"  # obtain the script's working directory.
26 source "$WORKDIR/shared_site_mgr.sh"
27
28 # get our defaults.
29 source "$WORKDIR/site_avenger.config"
30
31 ############################
32
33 # main body of script.
34
35 # check for parameters.
36 app_dirname="$1"; shift
37 repo_name="$1"; shift
38 theme_name="$1"; shift
39
40 sep
41
42 check_application_dir "$APPLICATION_DIR"
43
44 # find proper webroot where the site will be initialized.
45 if [ -z "$app_dirname" ]; then
46   # no dir was passed, so guess it.
47   find_app_folder "$APPLICATION_DIR"
48 else
49   test_app_folder "$APPLICATION_DIR" "$app_dirname"
50 fi
51
52 # where we expect to find our checkout folder underneath.
53 full_app_dir="$APPLICATION_DIR/$app_dirname"
54
55 # use our default values for the repository and theme if they're not provided.
56 if [ -z "$repo_name" ]; then
57   repo_name="$app_dirname"
58 fi
59 if [ -z "$theme_name" ]; then
60   theme_name="$(capitalize_first_char ${app_dirname})"
61 fi
62
63 echo "Repository: $repo_name"
64 echo "Theme name: $theme_name"
65 sep
66
67 # this should set the site_store_path variable if everything goes well.
68 update_repo "$full_app_dir" "$CHECKOUT_DIR_NAME" "$DEFAULT_REPOSITORY_ROOT" "$repo_name"
69 check_result "Updating the repository storage directory"
70
71 # update the site to load dependencies.
72 sep
73 composer_repuff "$site_store_path"
74 check_result "Installing site dependencies with composer"
75
76 # set up the symbolic links needed to achieve siteliness.
77 sep
78
79 create_site_links "$site_store_path" "$theme_name"
80
81 sep
82
83 echo "Finished powering up the site in '${app_dirname}'."
84