aboutsummaryrefslogtreecommitdiffstats
path: root/nikola/plugins/task_render_sources.py
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/plugins/task_render_sources.py')
-rw-r--r--nikola/plugins/task_render_sources.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/nikola/plugins/task_render_sources.py b/nikola/plugins/task_render_sources.py
new file mode 100644
index 0000000..ae5ce23
--- /dev/null
+++ b/nikola/plugins/task_render_sources.py
@@ -0,0 +1,54 @@
+import os
+
+from nikola.plugin_categories import Task
+from nikola import utils
+
+
+class Sources(Task):
+ """Copy page sources into the output."""
+
+ name = "render_sources"
+
+ def gen_tasks(self):
+ """Publish the page sources into the output.
+
+ Required keyword arguments:
+
+ translations
+ default_lang
+ post_pages
+ output_folder
+ """
+ kw = {
+ "translations": self.site.config["TRANSLATIONS"],
+ "output_folder": self.site.config["OUTPUT_FOLDER"],
+ "default_lang": self.site.config["DEFAULT_LANG"],
+ }
+
+ self.site.scan_posts()
+ flag = False
+ for lang in kw["translations"]:
+ for post in self.site.timeline:
+ output_name = os.path.join(kw['output_folder'],
+ post.destination_path(lang, post.source_ext()))
+ source = post.source_path
+ if lang != kw["default_lang"]:
+ source_lang = source + '.' + lang
+ if os.path.exists(source_lang):
+ source = source_lang
+ yield {
+ 'basename': 'render_sources',
+ 'name': output_name.encode('utf8'),
+ 'file_dep': [source],
+ 'targets': [output_name],
+ 'actions': [(utils.copy_file, (source, output_name))],
+ 'clean': True,
+ 'uptodate': [utils.config_changed(kw)],
+ }
+ if flag is False: # No page rendered, yield a dummy task
+ yield {
+ 'basename': 'render_sources',
+ 'name': 'None',
+ 'uptodate': [True],
+ 'actions': [],
+ }