X-Git-Url: http://git.tremily.us/?p=hooke.git;a=blobdiff_plain;f=hooke%2Fplugin%2Fconfig.py;h=ea1b0397f9d657ab84008cfab5e5ef87062612d5;hp=82ba03844a013160a603796880269875ba5e8499;hb=ec8f0b586953b23dea6ff24060610f56a7dbf975;hpb=c4845a85000b50097f8a6a1688ec34d913fc1bff diff --git a/hooke/plugin/config.py b/hooke/plugin/config.py index 82ba038..ea1b039 100644 --- a/hooke/plugin/config.py +++ b/hooke/plugin/config.py @@ -2,15 +2,15 @@ # # This file is part of Hooke. # -# Hooke is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. +# Hooke is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. # -# Hooke is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. +# Hooke is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General +# Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with Hooke. If not, see @@ -25,14 +25,14 @@ from StringIO import StringIO from ..command import Command, Argument, Failure from ..interaction import ReloadUserInterfaceConfig -from ..plugin import Builtin +from . import Builtin class ConfigPlugin (Builtin): def __init__(self): super(ConfigPlugin, self).__init__(name='config') self._commands = [GetCommand(self), SetCommand(self), - PrintCommand(self)] + PrintCommand(self), SaveCommand(self),] # Define common or complicated arguments @@ -87,13 +87,15 @@ class SetCommand (Command): def _run(self, hooke, inqueue, outqueue, params): hooke.config.set(params['section'], params['option'], params['value']) # push config changes - hooke.load_plugins() - hooke.load_drivers() + hooke.load_log() + hooke.configure_plugins() + hooke.configure_drivers() + hooke.configure_ui() # for post-HookeRunner Hooke return. # notify UI to update config outqueue.put(ReloadUserInterfaceConfig(hooke.config)) class PrintCommand (Command): - """Get the current value of a configuration option. + """Get the current configuration file text. """ def __init__(self, plugin): super(PrintCommand, self).__init__( @@ -103,3 +105,29 @@ class PrintCommand (Command): out = StringIO() hooke.config.write(out) outqueue.put(out.getvalue()) + + +class SaveCommand (Command): + """Save the current configuration options. + """ + def __init__(self, plugin): + super(SaveCommand, self).__init__( + name='save config', + arguments=[ + Argument(name='output', type='file', + help=""" +File name for the output configuration. Defaults to overwriting the +most local loaded config file. +""".strip()), + ], + help=self.__doc__, plugin=plugin) + + def _run(self, hooke, inqueue, outqueue, params): + f = None + try: + if params['output'] != None: + f = open(params['output'], 'w') + hooke.config.write(fp=f) + finally: + if f != None: + f.close()