]> git.pld-linux.org Git - packages/webapps.git/blob - webapps.sh
- restore webapp_applist()
[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 registered application list for webserver
37 # useful for bash_completion parsing
38 webapp_apps_registered() {
39         local action="$1"
40         local server=$2
41
42         for conf in /etc/$server/webapps.d/*.conf; do
43                 [ -L $conf ] || continue
44                 appname=$(readlink $conf)
45                 appname=${appname#*$webapps/}
46                 appname=${appname%/$server.conf}
47                 [ -f /etc/webapps/$appname/$server.conf ] || continue
48                 echo $appname
49         done
50 }
51
52 # return application list for webserver
53 # useful for bash_completion parsing
54 webapp_applist() {
55         local action="$1"
56         local server=$2
57
58         for app in /etc/webapps/*; do
59                 [ -d $app ] || continue
60                 [ -f $app/$server.conf ] || continue
61                 local appname=${app##*/}
62                 local link=$(webapp_link $appname)
63
64                 case "$action" in
65                 *-registered)
66                         [ -f /etc/$server/webapps.d/$link.conf ] && echo $appname
67                         ;;
68                 *-unregistered)
69                         [ -f /etc/$server/webapps.d/$link.conf ] || echo $appname
70                         ;;
71                 *)
72                         echo $appname
73                 ;;
74                 esac
75         done
76 }
77
78 webapp_list_apps() {
79         echo "available webapps"
80         for app in /etc/webapps/*; do
81                 [ -d $app ] || continue
82
83                 servers=""
84                 for server in $webservers; do
85                         [ -f $app/$server.conf ] || continue
86                         servers="$servers${servers:+ }$server"
87                 done
88
89                 [ "$servers" ] || continue
90                 echo "- ${app##*/} ($servers)"
91         done
92 }
93
94 usage() {
95         cat >&2 <<EOF
96 Usage: $0 register httpd webapp
97 Usage: $0 register httpd webapp/module
98 Usage: $0 unregister httpd webapp
99 Usage: $0 unregister httpd webapp/module
100 Usage: $0 list [$webservers]
101 Usage: $0 list-apps [$webservers]
102
103 Where httpd is one of the webservers
104 apache 1.x: apache
105 apache 2.x: httpd
106 lighttpd: lighttpd
107
108 webapp modules are supported,
109 "drupal tinymce" module webapp name would be "drupal/tinymce".
110 EOF
111 }
112
113 die() {
114         echo >&2 "$0: $*"
115         exit 1
116 }
117
118 checkconfig() {
119         if [ -z "$httpd" ] || [ -z "$app" ]; then
120                 usage
121                 return 1
122         fi
123
124         # sanity check
125         if [ ! -d "$webapps/$app" ]; then
126                 die "'$app' is not webapp? (Missing directory: $webapps/$app)"
127         fi
128         if [ ! -d "/etc/$httpd/webapps.d" ]; then
129                 die "'$httpd' is not a webserver? (Missing directory: /etc/$httpd/webapps.d)"
130         fi
131 }
132
133 case "$action" in
134 register)
135         checkconfig && webapp_register
136         ;;
137 unregister)
138         checkconfig && webapp_unregister
139         ;;
140 list)
141         webapp_list $2
142         ;;
143 list-apps)
144                 webapp_list_apps
145         ;;
146 list-apps-registered)
147         if [ "$2" ]; then
148                 webapp_apps_registered $action $2
149         else
150                 webapp_list_apps
151         fi
152         ;;
153 list-apps-unregistered)
154         if [ "$2" ]; then
155                 webapp_applist $action $2
156         else
157                 webapp_list_apps
158         fi
159         ;;
160 *)
161         usage
162         exit 1
163 esac
This page took 0.099535 seconds and 3 git commands to generate.