Add an initial "gmg serve" implementation.
authorBerker Peksag <berker.peksag@gmail.com>
Fri, 15 Aug 2014 20:02:22 +0000 (23:02 +0300)
committerBerker Peksag <berker.peksag@gmail.com>
Fri, 15 Aug 2014 20:02:22 +0000 (23:02 +0300)
The CLI is similar to "paster serve".

mediagoblin/gmg_commands/__init__.py
mediagoblin/gmg_commands/serve.py [new file with mode: 0644]

index e0400897e0d42b14f22e458e07e0f0c60dc8af86..79fb770118f86b2aa81080168b169279468e5c29 100644 (file)
@@ -59,6 +59,10 @@ SUBCOMMAND_MAP = {
         'setup': 'mediagoblin.gmg_commands.deletemedia:parser_setup',
         'func': 'mediagoblin.gmg_commands.deletemedia:deletemedia',
         'help': 'Delete media entries'},
+    'serve': {
+            'setup': 'mediagoblin.gmg_commands.serve:parser_setup',
+            'func': 'mediagoblin.gmg_commands.serve:serve',
+            'help': 'PasteScript replacement'},
     # 'theme': {
     #     'setup': 'mediagoblin.gmg_commands.theme:theme_parser_setup',
     #     'func': 'mediagoblin.gmg_commands.theme:theme',
diff --git a/mediagoblin/gmg_commands/serve.py b/mediagoblin/gmg_commands/serve.py
new file mode 100644 (file)
index 0000000..44f5469
--- /dev/null
@@ -0,0 +1,63 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011, 2012 MediaGoblin contributors.  See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import print_function
+
+
+class ServeCommand(object):
+
+    def loadserver(self, server_spec, name, relative_to, **kw):
+        pass
+
+    def loadapp(self, app_spec, name, relative_to, **kw):
+        pass
+
+    def daemonize(self):
+        # TODO: pass to gunicorn if available
+        pass
+
+    def restart_with_reloader(self):
+        pass
+
+    def restart_with_monitor(self, reloader=False):
+        pass
+
+    def run(self):
+        print('Running...')
+
+
+def parser_setup(subparser):
+    subparser.add_argument('config', metavar='CONFIG_FILE')
+    subparser.add_argument('command',
+                           choices=['start', 'stop', 'restart', 'status'],
+                           nargs='?', default='start')
+    subparser.add_argument('-n', '--app-name',
+                           dest='app_name',
+                           metavar='NAME',
+                           help="Load the named application (default main)")
+    subparser.add_argument('-s', '--server',
+                           dest='server',
+                           metavar='SERVER_TYPE',
+                           help="Use the named server.")
+    subparser.add_argument('--reload',
+                           dest='reload',
+                           action='store_true',
+                           help="Use auto-restart file monitor")
+
+
+def serve(args):
+    serve_cmd = ServeCommand()  # TODO: pass args to it
+    serve_cmd.run()