changeset 297:2823ea40cfac

import: Put importer metadata on the class, and allow return values.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 10 Mar 2015 08:34:45 -0700
parents efdefe34ec89
children b7ab1b503510
files piecrust/commands/builtin/util.py piecrust/importing/base.py piecrust/importing/jekyll.py piecrust/importing/piecrust.py
diffstat 4 files changed, 11 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/commands/builtin/util.py	Sun Mar 08 23:00:01 2015 -0700
+++ b/piecrust/commands/builtin/util.py	Tue Mar 10 08:34:45 2015 -0700
@@ -74,6 +74,8 @@
     def setupParser(self, parser, app):
         subparsers = parser.add_subparsers()
         for i in app.plugin_loader.getImporters():
+            if not i.__class__.name:
+                raise Exception("Importer '%s' has no name set." % type(i))
             p = subparsers.add_parser(i.name, help=i.description)
             i.setupParser(p, app)
             p.set_defaults(sub_func=i.checkedImportWebsite)
--- a/piecrust/importing/base.py	Sun Mar 08 23:00:01 2015 -0700
+++ b/piecrust/importing/base.py	Tue Mar 10 08:34:45 2015 -0700
@@ -9,10 +9,9 @@
 
 
 class Importer(object):
-    def __init__(self):
-        self.name = None
-        self.description = None
-        self.requires_website = True
+    name = None
+    description = None
+    requires_website = True
 
     def setupParser(self, parser, app):
         raise NotImplementedError()
@@ -23,8 +22,7 @@
     def checkedImportWebsite(self, ctx):
         if ctx.app.root_dir is None and self.requires_website:
             raise SiteNotFoundError()
-        self.importWebsite(ctx.app, ctx.args)
-        return 0
+        return self.importWebsite(ctx.app, ctx.args)
 
 
 class FileWalkingImporter(Importer):
--- a/piecrust/importing/jekyll.py	Sun Mar 08 23:00:01 2015 -0700
+++ b/piecrust/importing/jekyll.py	Tue Mar 10 08:34:45 2015 -0700
@@ -13,10 +13,8 @@
 
 
 class JekyllImporter(FileWalkingImporter):
-    def __init__(self):
-        super(JekyllImporter, self).__init__()
-        self.name = 'jekyll'
-        self.description = "Imports content from a Jekyll or Octopress blog."
+    name = 'jekyll'
+    description = "Imports content from a Jekyll or Octopress blog."
 
     def setupParser(self, parser, app):
         super(JekyllImporter, self).setupParser(parser, app)
--- a/piecrust/importing/piecrust.py	Sun Mar 08 23:00:01 2015 -0700
+++ b/piecrust/importing/piecrust.py	Tue Mar 10 08:34:45 2015 -0700
@@ -11,11 +11,9 @@
 
 
 class PieCrust1Importer(FileWalkingImporter):
-    def __init__(self):
-        super(PieCrust1Importer, self).__init__()
-        self.name = 'piecrust1'
-        self.description = "Imports content from a PieCrust 1 website."
-        self.requires_website = False
+    name = 'piecrust1'
+    description = "Imports content from a PieCrust 1 website."
+    requires_website = False
 
     def setupParser(self, parser, app):
         super(PieCrust1Importer, self).setupParser(parser, app)