From 2e615322ecf238e87f4013e650a6d5a5ce240031 Mon Sep 17 00:00:00 2001 From: Jianfei Hu Date: Sat, 4 Aug 2018 08:09:20 -0700 Subject: [PATCH] add option for --front_matter to control whether generate front matter. --- .gitignore | 4 +++- main.py | 16 +++++++++++++--- src/dokuwiki_to_hugo.py | 18 +++++++++++------- ...ugo_file_config.py => hugo_front_matter.py} | 2 +- ...ile_config.py => test_hugo_front_matter.py} | 6 +++--- 5 files changed, 31 insertions(+), 15 deletions(-) rename src/{hugo_file_config.py => hugo_front_matter.py} (96%) rename test/{test_hugo_file_config.py => test_hugo_front_matter.py} (89%) diff --git a/.gitignore b/.gitignore index b7ed096..da16978 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +# default output directory for the converter. +output/* # Created by https://www.gitignore.io/api/pycharm,python @@ -149,4 +151,4 @@ ENV/ # Rope project settings .ropeproject -# End of https://www.gitignore.io/api/pycharm,python \ No newline at end of file +# End of https://www.gitignore.io/api/pycharm,python diff --git a/main.py b/main.py index 0c6c6ba..0428e5b 100644 --- a/main.py +++ b/main.py @@ -3,8 +3,16 @@ import argparse from src.dokuwiki_to_hugo import DokuWikiToHugo -def main(directory, root): - DokuWikiToHugo(root).doku_to_hugo(directory) +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + +def main(directory, options): + DokuWikiToHugo(options.root, front_matter=options.front_matter).doku_to_hugo(directory) if __name__ == "__main__": @@ -12,5 +20,7 @@ if __name__ == "__main__": parser.add_argument("-d", "--dir", help="the directory of your DokuWiki pages collection", required=True) parser.add_argument("-r", "--root", help="the root directory name in your hugo content where to link to", required=False) + parser.add_argument("--front_matter", default=True, type=str2bool, + help="whether to generate front matter in the converted markdown.") opts = parser.parse_args() - main(opts.dir, opts.root) + main(opts.dir, opts) diff --git a/src/dokuwiki_to_hugo.py b/src/dokuwiki_to_hugo.py index c6ccd5a..5be2612 100644 --- a/src/dokuwiki_to_hugo.py +++ b/src/dokuwiki_to_hugo.py @@ -1,15 +1,16 @@ import os import shutil -from src.hugo_file_config import HugoFileConfig +from src.hugo_front_matter import HugoFrontMatter from src.markdown_converter import MarkdownConverter class DokuWikiToHugo: root_dir = "" - def __init__(self, root=None): - self.header_converter = HugoFileConfig() + def __init__(self, root=None, front_matter=True): + self.header_converter = HugoFrontMatter() + self.convert_frontmatter = front_matter DokuWikiToHugo.root_dir = root pass @@ -24,7 +25,10 @@ class DokuWikiToHugo: for root, subFolders, files in os.walk(directory): files = [f for f in files if not f[0] == '.'] for file in files: - self.process_file(root, file) + try: + self.process_file(root, file) + except: + print('failed to convert ' + file) def process_file(self, root, file): destination_dir = 'output/' + root @@ -35,11 +39,11 @@ class DokuWikiToHugo: if not os.path.exists(destination_dir): os.makedirs(destination_dir) - - header = self.header_converter.create(source_file) converted_text = MarkdownConverter(source_file).convert() with open(destination_dir + '/' + destination_file, "w") as text_file: - text_file.write(header) + if self.convert_frontmatter: + header = self.header_converter.create(source_file) + text_file.write(header) text_file.write('\n') text_file.write(converted_text) diff --git a/src/hugo_file_config.py b/src/hugo_front_matter.py similarity index 96% rename from src/hugo_file_config.py rename to src/hugo_front_matter.py index 35697e3..a778e17 100644 --- a/src/hugo_file_config.py +++ b/src/hugo_front_matter.py @@ -2,7 +2,7 @@ import os.path import time -class HugoFileConfig: +class HugoFrontMatter: def filename(self, location): return location.split('/')[-1][0:-4] diff --git a/test/test_hugo_file_config.py b/test/test_hugo_front_matter.py similarity index 89% rename from test/test_hugo_file_config.py rename to test/test_hugo_front_matter.py index 1edd3c7..6c4411c 100644 --- a/test/test_hugo_file_config.py +++ b/test/test_hugo_front_matter.py @@ -3,10 +3,10 @@ from os import utime from time import mktime from unittest import TestCase -from src.hugo_file_config import HugoFileConfig +from src.hugo_front_matter import HugoFrontMatter -class TestHugoFileConfig(TestCase): +class TestHugoFrontMatter(TestCase): def set_file_timestamp(self): date = datetime(2014, 10, 10, 12) u_time = mktime(date.timetuple()) @@ -15,7 +15,7 @@ class TestHugoFileConfig(TestCase): def setUp(self): self.set_file_timestamp() - self.header = HugoFileConfig() + self.header = HugoFrontMatter() def test_dokuwiki_in_subdir_creates_tags_for_each_dir(self): expected_header = """+++