1 #email="dlugolecki.rafal@gmail.com"
2 sql_user = rdlugoleck_${name}
3 # this allows me to evaluate pwgen result to value
4 $(eval sql_password := $(shell pwgen -1 -s 50))
5 apache_sites = '/etc/apache2/sites-available'
6 project_dir = `pwd`/${name}
7 host = ${name}.localhost
10 echo "Usage: prj-site OPERATION NAME [type] "
12 echo " operation Operation on project; possible values:"
13 echo " create - creates project stubs according to type"
17 echo " type Type of project; possible values:"
22 create: create-directories create-permissions create-vhost create-$(type) enable
23 cd ${name} && echo ${name} > README && git init && git add . && git commit -a -m 'Initial commit'
24 echo "[+] ${type} ${name} project has been created. Make sure that you have added: '${host}' to your /etc/hosts file"
29 echo "> Creating project directory: ${name}"
32 create-directories: $(project_dir)
33 echo "> Creating directory: ${project_dir}/www"
34 mkdir ${project_dir}/www
36 create-permissions: create-directories
37 echo "> Setting group permissions of {project}/www to www-data, need root permissions to do that."
38 sudo chgrp -R www-data ${project_dir}/www
40 ${apache_sites}/${host}:
41 echo "> Creating project's site configuration"
42 sudo cp ${apache_sites}/dummy.localhost ${apache_sites}/${host}
44 create-vhost: ${apache_sites}/${host}
45 sudo sed -e "s/dummy/${name}/g" -i ${apache_sites}/${host}
46 sudo sed -e "s@/var/www/${name}@${project_dir}/www@" -i ${apache_sites}/${host}
48 sudo service apache2 reload
51 echo "> Removing directory ${project_dir}/www"
52 sudo rm -r ${project_dir}/www
53 echo "> Removing directory: ${project_dir}"
54 sudo rm -r ${project_dir}
57 if test -f ${apache_sites}/${host}; then \
58 echo "> Removing apache configuration file"; \
59 sudo rm ${apache_sites}/${host}; \
62 enable: enable-${type}
63 echo "[+] Enabling ${name}"
64 if test -f /etc/apache2/sites-available/${host}; then \
65 echo "> Enabling project's vhost..."; \
66 sudo a2ensite ${host}; \
67 sudo service apache2 reload; \
69 echo "> Enabling failed. Check your project configuration"; \
74 disable: disable-${type}
75 echo "[+] Disabling ${name}"
76 if test -h /etc/apache2/sites-enabled/${host}; then \
77 echo "> Disabling project's vhost..."; \
78 sudo a2dissite ${host}; \
79 sudo service apache2 reload; \
84 purge: disable purge-${type} remove-vhost remove-directories
85 echo "[+] Project ${name} has been removed"
91 cgi: create-directories
92 echo "[+] CGI installation begins..."
93 echo "AddHandler cgi-script cgi" > ${project_dir}/www/.htaccess
94 echo "Options +ExecCGI" >> ${project_dir}/www/.htaccess
96 symfony2: create-directories create-vhost
97 echo "[+] Symfony installation begins..."
98 echo "> Recreating ${project_dir} for symfony2 specifics"
100 curl -s http://getcomposer.org/installer | php
101 php composer.phar create-project symfony/framework-standard-edition ${project_dir}/ --prefer-dist
102 mv composer.phar ${project_dir}/
103 cd ${project_dir} && php composer.phar install
104 chmod -R 777 ${project_dir}/app/cache
105 chmod -R 777 ${project_dir}/app/logs
106 sudo sed -e "s@${project_dir}/www@${project_dir}/web@" -i ${apache_sites}/${host}
108 create-drupal: create-directories
109 echo "[+] Drupal installation begins..."
110 cd ${project_dir}/www && drush dl drupal
111 mv ${project_dir}/www/drupal*/* ${project_dir}/www/drupal*/.gitignore ${project_dir}/www/drupal*/.htaccess ${project_dir}/www/
112 rm -r ${project_dir}/www/drupal*
113 # sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "create user '$sql_user'@'localhost' identified by '$sql_user';"
114 sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "GRANT ALL PRIVILEGES ON ${sql_user}.* TO '${sql_user}'@'localhost' WITH GRANT OPTION;"
115 sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "SET PASSWORD FOR '${sql_user}'@'localhost' = PASSWORD('${sql_password}');"
116 sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "FLUSH PRIVILEGES;"
117 echo -n "--db-url=mysql://${sql_user}:${sql_password}@localhost/${sql_user}" > /tmp/drupal_options
118 echo -n " --account-mail='${email}'" >> /tmp/drupal_options
119 echo -n " --site-name=${name}" >> /tmp/drupal_options
120 echo -n " --clean-url=true" >> /tmp/drupal_options
121 echo -n " -y minimal" >> /tmp/drupal_options
122 echo "These are parameters with which drupal configuration will be called:"
124 echo " drush si `cat /tmp/drupal_options`\n"
126 cd ${project_dir}/www && cat /tmp/drupal_options | xargs drush si
127 cd ${project_dir}/www && drush en seven toolbar shortcut -y
128 cd ${project_dir}/www && drush vset admin_theme seven
131 echo "> Removing SQL user"
132 sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "DROP USER '${sql_user}'@'localhost';"
133 echo "> Removing SQL database"
134 sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "DROP DATABASE ${sql_user};"
136 .PHONY: help disable purge