diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/closeproject | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/bin/closeproject b/bin/closeproject new file mode 100755 index 0000000..19b4433 --- /dev/null +++ b/bin/closeproject @@ -0,0 +1,70 @@ +#!/bin/bash + +dbquery() { + mysql -s -s -e "$*" trac +} + +# main function +main() { + echo + + # project_name may not be an empty string and must be >= 3 characters + while [[ ${#project_name} -lt 3 ]] + do + eask_str "a project name (min 3 chars)" + project_name=${REPLY} + done + + if [[ -z $(dbquery "SELECT id FROM project WHERE project_name = '${project_name}'") ]] + then + eerror "Project ${project_name} does not exists." + fi + + svn_home=${SVN_ROOT}/${project_name} + trac_home=${TRAC_ROOT}/${project_name} + trac_db=trac_${project_name} + + eheading "setting trac permissions" + for perm in BROWSER_VIEW CHANGESET_VIEW FILE_VIEW LOG_VIEW MILESTONE_VIEW \ + REPORT_SQL_VIEW REPORT_VIEW ROADMAP_VIEW SEARCH_VIEW TICKET_VIEW \ + TIMELINE_VIEW WIKI_VIEW + do + eexec trac-admin ${trac_home} permission remove anonymous ${perm} + done + + for perm in TICKET_CREATE TICKET_MODIFY WIKI_CREATE WIKI_MODIFY + do + eexec trac-admin ${trac_home} permission remove authenticated ${perm} + done + + # apply changes to /etc/apache2/vhosts.d/dev_vhost.include + eexec sed -i -e "s/Use SVNProject ${project_name}/Use SVNProjectClosed ${project_name}/" /etc/apache2/vhosts.d/dev_vhost.include + eexec /etc/init.d/apache2 reload + + # set project to private in database + dbquery "UPDATE project SET private = 1 WHERE project_name = '${project_name}'" + + eheading "committing changes to our git-repository in /etc" + pushd /etc > /dev/null + eexec git add ${APACHE_PROJECT_CONF/\/etc\/} + eexec git commit -m "opened project ${project_name}" + popd > /dev/null +} + +# go to script dir +pushd $(dirname $0) > /dev/null + +# get global functions +source "./functions.sh" + +# load configuration +source "./config.sh" + +# exit on errors +set -e + +# start main program +main "$@" + +# leave script dir +popd > /dev/null |