diff --git a/IPython/nbconvert/exporters/export.py b/IPython/nbconvert/exporters/export.py index e829c33..03ac4b0 100755 --- a/IPython/nbconvert/exporters/export.py +++ b/IPython/nbconvert/exporters/export.py @@ -86,7 +86,8 @@ __all__ = [ 'export_python_armor', 'export_reveal', 'export_rst', - 'export_by_name' + 'export_by_name', + 'get_export_names' ] @DocDecorator @@ -223,3 +224,10 @@ def export_by_name(template_name, nb, config=None, transformers=None, filters=No else: raise NameError("template for `%s` not found" % function_name) +def get_export_names(): + "Return a list of the currently supported export targets" + # grab everything after 'export_' + l = [x[len('export_'):] for x in __all__ if x.startswith('export_')] + # filter out the one method that is not a template + l = [x for x in l if 'by_name' not in x] + return sorted(l) diff --git a/IPython/nbconvert/nbconvertapp.py b/IPython/nbconvert/nbconvertapp.py index c2c4d70..04f20fc 100755 --- a/IPython/nbconvert/nbconvertapp.py +++ b/IPython/nbconvert/nbconvertapp.py @@ -26,7 +26,7 @@ import os from IPython.config.application import Application from IPython.utils.traitlets import Bool, Unicode -from .exporters.export import export_by_name +from .exporters.export import export_by_name, get_export_names from .exporters.exporter import Exporter from .transformers import extractfigure from .utils.config import GlobalConfigurable @@ -127,10 +127,15 @@ class NbConvertApp(Application): ipynb_file = (self.extra_args)[2] #Export - return_value = export_by_name(export_type, ipynb_file) - if return_value is None: - print("Error: '%s' template not found." % export_type) - return + try: + return_value = export_by_name(export_type, ipynb_file) + except NameError as e: + print("Error: '%s' exporter not found." % export_type, + file=sys.stderr) + print("Known exporters are:", + "\n\t" + "\n\t".join(get_export_names()), + file=sys.stderr) + sys.exit(-1) else: (output, resources, exporter) = return_value