]> git.pld-linux.org Git - packages/webapps.git/blobdiff - webapps.sh
- v0.3.2
[packages/webapps.git] / webapps.sh
old mode 100644 (file)
new mode 100755 (executable)
index ce5f82b..8ec93b0
@@ -1,5 +1,7 @@
 #!/bin/sh
+
 webapps=/etc/webapps
+webservers='apache httpd lighttpd'
 action="$1"
 httpd="$2"
 app="$3"
@@ -10,7 +12,7 @@ webapp_link() {
 
 webapp_register() {
        local link=$(webapp_link $app)
-       ln -sf $webapps/$app/$httpd.conf /etc/$httpd/webapps.d/$link.conf
+       ln -sf ../../..$webapps/$app/$httpd.conf /etc/$httpd/webapps.d/$link.conf
 }
 
 webapp_unregister() {
@@ -18,12 +20,85 @@ webapp_unregister() {
        rm -f /etc/$httpd/webapps.d/$link.conf
 }
 
+webapp_list() {
+       echo "registered webapps${1:+ for $1}":
+       for server in ${1:-$webservers}; do
+               [ -d /etc/$server/webapps.d ] || continue
+               echo "$server:"
+               for conf in /etc/$server/webapps.d/*; do
+                       [ -L $conf ] || continue
+                       app=$(readlink -f $conf | sed -e "s,$webapps/,,;s,/$server.conf$,,")
+                       echo "- $app"
+               done
+       done
+}
+
+# return registered application list for webserver
+# useful for bash_completion parsing
+webapp_apps_registered() {
+       local action="$1"
+       local server=$2
+
+       for conf in /etc/$server/webapps.d/*.conf; do
+               [ -L $conf ] || continue
+               appname=$(readlink $conf)
+               appname=${appname#*$webapps/}
+               appname=${appname%/$server.conf}
+               [ -f /etc/webapps/$appname/$server.conf ] || continue
+               echo $appname
+       done
+}
+
+# return application list for webserver
+# useful for bash_completion parsing
+webapp_applist() {
+       local action="$1"
+       local server=$2
+
+       for app in /etc/webapps/*; do
+               [ -d $app ] || continue
+               [ -f $app/$server.conf ] || continue
+               local appname=${app##*/}
+               local link=$(webapp_link $appname)
+
+               case "$action" in
+               *-registered)
+                       [ -f /etc/$server/webapps.d/$link.conf ] && echo $appname
+                       ;;
+               *-unregistered)
+                       [ -f /etc/$server/webapps.d/$link.conf ] || echo $appname
+                       ;;
+               *)
+                       echo $appname
+               ;;
+               esac
+       done
+}
+
+webapp_list_apps() {
+       echo "available webapps"
+       for app in /etc/webapps/*; do
+               [ -d $app ] || continue
+
+               servers=""
+               for server in $webservers; do
+                       [ -f $app/$server.conf ] || continue
+                       servers="$servers${servers:+ }$server"
+               done
+
+               [ "$servers" ] || continue
+               echo "- ${app##*/} ($servers)"
+       done
+}
+
 usage() {
        cat >&2 <<EOF
 Usage: $0 register httpd webapp
 Usage: $0 register httpd webapp/module
 Usage: $0 unregister httpd webapp
 Usage: $0 unregister httpd webapp/module
+Usage: $0 list [$webservers]
+Usage: $0 list-apps [$webservers]
 
 Where httpd is one of the webservers
 apache 1.x: apache
@@ -31,7 +106,7 @@ apache 2.x: httpd
 lighttpd: lighttpd
 
 webapp modules are supported,
-drupal tinymce module webapp name would be drupal/tinymce.
+"drupal tinymce" module webapp name would be "drupal/tinymce".
 EOF
 }
 
@@ -41,23 +116,46 @@ die() {
 }
 
 checkconfig() {
+       if [ -z "$httpd" ] || [ -z "$app" ]; then
+               usage
+               return 1
+       fi
+
        # sanity check
        if [ ! -d "$webapps/$app" ]; then
-               die "Missing directory: $webapps/$app"
+               die "'$app' is not webapp? (Missing directory: $webapps/$app)"
        fi
        if [ ! -d "/etc/$httpd/webapps.d" ]; then
-               die "Missing directory: /etc/$httpd/webapps.d"
+               die "'$httpd' is not a webserver? (Missing directory: /etc/$httpd/webapps.d)"
        fi
 }
 
 case "$action" in
 register)
-       checkconfig
-       webapp_register
+       checkconfig && webapp_register
        ;;
 unregister)
-       checkconfig
-       webapp_unregister
+       checkconfig && webapp_unregister
+       ;;
+list)
+       webapp_list $2
+       ;;
+list-apps)
+               webapp_list_apps
+       ;;
+list-apps-registered)
+       if [ "$2" ]; then
+               webapp_apps_registered $action $2
+       else
+               webapp_list_apps
+       fi
+       ;;
+list-apps-unregistered)
+       if [ "$2" ]; then
+               webapp_applist $action $2
+       else
+               webapp_list_apps
+       fi
        ;;
 *)
        usage
This page took 0.077397 seconds and 4 git commands to generate.