#!/bin/bash # Скрипт для работы с проектами # Автор: Роман Коноплев (korodm@gmail.com) # Функция вывода справки function help() { echo "Скрипт для работы с проектами" echo echo "Использование: `basename ${0}` -options project_name" echo "Опции:" echo " -c Создать проект" echo " -r Удалить проект" echo " -h Коммит проекта" echo " -m Создание/удаление/коммит вместе с базой данных" echo " (использовать с -c, -r или -h)" echo echo " -i Вывод этой справки" echo } ################################################################################ # Стандартные переменные ################################################################################ # Рабочий каталог WORK_DIR="/home/korodm/Documents/sites/" # Форматирование вывода END=$(tput hpa $(tput cols))$(tput cub 6) RED=$(tput setf 4) GREEN=$(tput setf 2) RESET=$(tput sgr0) ################################################################################ # Проверки ################################################################################ # Проверка на наличие передаваемых параметров if ! [ -n "${2}" ] then help exit 1 else SITE=${2} fi # Проверка рабочего каталога while [[ ! -d ${WORK_DIR} ]] do printf "path to work dir: " read WORK_DIR done # Если рабочий каталог был указан без / вконце, добавим этот слэш if [[ "${WORK_DIR: -1}" != "/" ]] then WORK_DIR=${WORK_DIR}''"/" fi ################################################################################ # Блок функций ################################################################################ # Функция создания проекта function create() { # Проверка на существование каталога для сайта в рабочем каталоге while [[ -d "${WORK_DIR}${SITE}" ]] do printf "path to project dir: " read SITE done mkdir ${WORK_DIR}${SITE} # Создание index.php printf "<h1>Сайт %s работает!</h1> <h2>%s%s/index.php</h2> <?php phpinfo(); ?>" ${SITE} ${WORK_DIR} ${SITE} > ${WORK_DIR}${SITE}/index.php echo "Создание сайта ${SITE}${END}${GREEN}[OK]${RESET}" } # Функция удаления проекта function delete() { # Проверка на существование каталога для сайта в рабочем каталоге while [[ ! -d "${WORK_DIR}${SITE}" ]] do printf "path to project dir: " read SITE done rm -R ${WORK_DIR}${SITE} echo "Удаление сайта ${SITE}${END}${GREEN}[OK]${RESET}" } # Функция коммита function commit() { # Проверка на существование каталога для сайта в рабочем каталоге while [[ ! -d "${WORK_DIR}${SITE}/.hg" ]] do printf "path to project dir: " read SITE done cd ${WORK_DIR}${SITE} for i in $(find . -type f -name "*.php") do if ! php -l ${i} > /dev/null then echo "Найдены ошибки ${SITE}${END}${RED}[FAIL]${RESET}" exit 1 fi done hg addremove hg commit hg push cd - > /dev/null echo "Коммит сайта ${SITE}${END}${GREEN}[OK]${RESET}" } # Функция создания базы данных function mysql_create() { mysql -uroot -p --execute="create database ${SITE};" mysql -uroot -p --execute="GRANT ALL PRIVILEGES ON ${SITE}.* TO ${SITE}@localhost IDENTIFIED by '${SITE}' WITH GRANT OPTION;" echo "Создание базы данных ${SITE}${END}${GREEN}[OK]${RESET}" } # Функция удаления базы данных function mysql_delete() { mysql -uroot -p --execute="drop database ${SITE};" mysql -uroot -p --execute="USE mysql; DELETE FROM user WHERE User='${SITE}';" echo "Удаление базы данных ${SITE}${END}${GREEN}[OK]${RESET}" } # Функция бэкапа базы данных для последующего коммита function mysql_backup() { # Проверка на существование каталога для сайта в рабочем каталоге while [[ ! -d "${WORK_DIR}${SITE}/.hg" ]] do printf "path to project dir: " read SITE done cd ${WORK_DIR}${SITE} mysqldump -uroot -p ${SITE} > mysql-`date +%m%d%y`.sql echo "Бэкап базы ${SITE}${END}${GREEN}[OK]${RESET}" } ################################################################################ # Основной скрипт ################################################################################ if [ $# -eq 0 ] # Сценарий вызван без аргументов? then help exit 65 fi while getopts ":crhi" OPTION do case ${OPTION} in c ) while getopts ":m" OTHER_OPTION do case ${OTHER_OPTION} in m ) create mysql_create exit 0 ;; * ) echo "Недопустимый сценарий" exit 1 ;; esac done create exit 0 ;; r ) while getopts ":m" OTHER_OPTION do case ${OTHER_OPTION} in m ) delete mysql_delete exit 0 ;; * ) echo "Недопустимый сценарий" exit 1 ;; esac done delete exit 0 ;; h ) while getopts ":m" OTHER_OPTION do case ${OTHER_OPTION} in m ) mysql_backup commit exit 0 ;; * ) echo "Недопустимый сценарий" exit 1 ;; esac done commit exit 0 ;; i ) help exit 0 ;; * ) echo "Недопустимый сценарий" exit 1 ;; esac done exit 0;
Action unknown: copypageplugin__copy