Combined module management actions into a single file, so it should be easier to add new optional modules.

This commit is contained in:
James Valleroy 2014-01-31 21:44:32 -05:00
parent 411785eb3f
commit c9d58ee73d
6 changed files with 69 additions and 50 deletions

View File

@ -1,14 +0,0 @@
#!/bin/sh
# Usage: module-disable python_root module
# This will change when we switch to using aptitude.
# TODO: Replace this with "aptitude purge plinth-<module>"
case "$2" in
owncloud)
if [ -e "$1"/modules/owncloud.py ] ; then
rm -f "$1"/modules/owncloud.py
echo "disabled owncloud"
fi
;;
esac

View File

@ -1,14 +0,0 @@
#!/bin/sh
# Usage: module-enable python_root module
# This will change when we switch to using aptitude.
# TODO: Replace this with "aptitude install plinth-<module>"
case "$2" in
owncloud)
if [ ! -e "$1"/modules/owncloud.py ] ; then
ln -s "$1"/modules/installed/apps/owncloud.py "$1"/modules/owncloud.py
echo "enabled owncloud"
fi
;;
esac

View File

@ -1,7 +0,0 @@
#!/bin/sh
# Usage: module-list-available
# This will change when we switch to using aptitude.
# TODO: Replace this with something like "aptitude search -F %p plinth-"
echo "owncloud"

View File

@ -1,9 +0,0 @@
#!/bin/sh
# Usage: module-list-enabled python_root
# This will change when we switch to using aptitude.
# TODO: Replace this with something like 'aptitude search -F %p | grep "plinth-"'
if [ -e "$1"/modules/owncloud.py ] ; then
echo "owncloud"
fi

59
actions/module-manager Executable file
View File

@ -0,0 +1,59 @@
#!/bin/bash
# Usage:
# module-manager list-available
# module-manager list-enabled <python_root>
# module-manager enable <python_root> <module_name>
# module-manager disable <python_root> <module_name>
# associate array with mapping between module names and install paths
# (relative to <python_root>/modules/)
declare -A modules=( ["owncloud"]="installed/apps/owncloud.py" )
case "$1" in
"list-available")
# TODO: Replace this with something like "aptitude search -F %p plinth-"
echo "${!modules[@]}"
;;
"list-enabled")
# TODO: Replace this with something like 'aptitude search -F %p | grep "plinth-"'
for module in "${!modules[@]}"
do
if [ -e "$2"/modules/"$module".py ] ; then
echo "$module"
fi
done
;;
"enable")
# TODO: Replace this with "aptitude install plinth-<module>"
for module in "${!modules[@]}"
do
if [ "$3" == "$module" ] ; then
if [ ! -e "$2"/modules/"$3".py ] ; then
ln -s "$2"/modules/"${modules["$3"]}" "$2"/modules/"$3".py
RETVAL=$?
[ $RETVAL -eq 0 ] && echo "enabled" "$3"
[ $RETVAL -ne 0 ] && echo "failed to enable" "$3"
fi
fi
done
;;
"disable")
# TODO: Replace this with "aptitude purge plinth-<module>"
for module in "${!modules[@]}"
do
if [ "$3" == "$module" ] ; then
if [ -e "$2"/modules/"$3".py ] ; then
rm -f "$2"/modules/"$3".py
RETVAL=$?
[ $RETVAL -eq 0 ] && echo "disabled" "$3"
[ $RETVAL -ne 0 ] && echo "failed to disable" "$3"
fi
fi
done
;;
esac

View File

@ -18,12 +18,13 @@ class Packages(PagePlugin, FormPlugin):
@cherrypy.expose
@require()
def index(self, *args, **kwargs):
output, error = actions.run("module-list-available")
output, error = actions.run("module-manager", ["list-available"])
if error:
raise Exception("something is wrong: " + error)
modules_available = output.split()
output, error = actions.run("module-list-enabled", cfg.python_root)
output, error = actions.run("module-manager", \
["list-enabled", cfg.python_root])
if error:
raise Exception("something is wrong: " + error)
modules_enabled = output.split()
@ -35,13 +36,15 @@ class Packages(PagePlugin, FormPlugin):
if module in modules_enabled:
if module not in modules_selected:
output, error = actions.superuser_run(\
"module-disable", [cfg.python_root, module])
"module-manager",\
["disable", cfg.python_root, module])
# TODO: need a smoother way for plinth
# to unload the module
else:
if module in modules_selected:
output, error = actions.superuser_run(\
"module-enable", [cfg.python_root, module])
"module-manager",\
["enable", cfg.python_root, module])
# TODO: need to get plinth to load
# the module we just enabled
@ -57,12 +60,13 @@ class Packages(PagePlugin, FormPlugin):
return self.fill_template(title=_("Add/Remove Plugins"), main=main, sidebar_right=sidebar_right)
def form(self, message=None, *args, **kwargs):
output, error = actions.run("module-list-available")
output, error = actions.run("module-manager", ["list-available"])
if error:
raise Exception("something is wrong: " + error)
modules_available = output.split()
output, error = actions.run("module-list-enabled", cfg.python_root)
output, error = actions.run("module-manager",\
["list-enabled", cfg.python_root])
if error:
raise Exception("something is wrong: " + error)
modules_enabled = output.split()