]> git.pld-linux.org Git - packages/webapps.git/blob - webapps.sh
- use variable substitution for basename
[packages/webapps.git] / webapps.sh
1 #!/bin/sh
2
3 webapps=/etc/webapps
4 webservers='apache httpd lighttpd'
5 action="$1"
6 httpd="$2"
7 app="$3"
8
9 webapp_link() {
10         echo "$1" | tr '/' '-'
11 }
12
13 webapp_register() {
14         local link=$(webapp_link $app)
15         ln -sf ../../..$webapps/$app/$httpd.conf /etc/$httpd/webapps.d/$link.conf
16 }
17
18 webapp_unregister() {
19         local link=$(webapp_link $app)
20         rm -f /etc/$httpd/webapps.d/$link.conf
21 }
22
23 webapp_list() {
24         echo "registered webapps${1:+ for $1}":
25         for server in ${1:-$webservers}; do
26                 [ -d /etc/$server/webapps.d ] || continue
27                 echo "$server:"
28                 for conf in /etc/$server/webapps.d/*; do
29                         [ -L $conf ] || continue
30                         app=$(readlink $conf | sed -e "s,.*$webapps/,,;s,/$server.conf$,,")
31                         echo "- $app"
32                 done
33         done
34 }
35
36 # return application list for webserver
37 # useful for bash_completion parsing
38 webapp_applist() {
39         local action="$1"
40         local server=$2
41
42         for app in /etc/webapps/*; do
43                 [ -d $app ] || continue
44                 [ -f $app/$server.conf ] || continue
45                 local appname=${app##*/}
46                 local link=$(webapp_link $appname)
47
48                 case "$action" in
49                 *-registered)
50                         [ -f /etc/$server/webapps.d/$link.conf ] && echo $appname
51                         ;;
52                 *-unregistered)
53                         [ -f /etc/$server/webapps.d/$link.conf ] || echo $appname
54                         ;;
55                 *)
56                         echo $appname
57                 ;;
58                 esac
59         done
60 }
61
62 webapp_list_apps() {
63         echo "available webapps"
64         for app in /etc/webapps/*; do
65                 [ -d $app ] || continue
66
67                 servers=""
68                 for server in $webservers; do
69                         [ -f $app/$server.conf ] || continue
70                         servers="$servers${servers:+ }$server"
71                 done
72
73                 [ "$servers" ] || continue
74                 echo "- ${app##*/} ($servers)"
75         done
76 }
77
78 usage() {
79         cat >&2 <<EOF
80 Usage: $0 register httpd webapp
81 Usage: $0 register httpd webapp/module
82 Usage: $0 unregister httpd webapp
83 Usage: $0 unregister httpd webapp/module
84 Usage: $0 list [$webservers]
85 Usage: $0 list-apps [$webservers]
86
87 Where httpd is one of the webservers
88 apache 1.x: apache
89 apache 2.x: httpd
90 lighttpd: lighttpd
91
92 webapp modules are supported,
93 "drupal tinymce" module webapp name would be "drupal/tinymce".
94 EOF
95 }
96
97 die() {
98         echo >&2 "$0: $*"
99         exit 1
100 }
101
102 checkconfig() {
103         if [ -z "$httpd" ] || [ -z "$app" ]; then
104                 usage
105                 return 1
106         fi
107
108         # sanity check
109         if [ ! -d "$webapps/$app" ]; then
110                 die "'$app' is not webapp? (Missing directory: $webapps/$app)"
111         fi
112         if [ ! -d "/etc/$httpd/webapps.d" ]; then
113                 die "'$httpd' is not a webserver? (Missing directory: /etc/$httpd/webapps.d)"
114         fi
115 }
116
117 case "$action" in
118 register)
119         checkconfig && webapp_register
120         ;;
121 unregister)
122         checkconfig && webapp_unregister
123         ;;
124 list)
125         webapp_list $2
126         ;;
127 list-apps|list-apps-registered|list-apps-unregistered)
128         if [ "$2" ]; then
129                 webapp_applist $action $2
130         else
131                 webapp_list_apps
132         fi
133         ;;
134 *)
135         usage
136         exit 1
137 esac
This page took 0.231074 seconds and 3 git commands to generate.