diff --git a/distribusi/cli.py b/distribusi/cli.py index 4bc0305..0d45ebf 100644 --- a/distribusi/cli.py +++ b/distribusi/cli.py @@ -64,8 +64,13 @@ def build_argparser(): '--exclude-directory', help="Exclude one or multiple directories from indexing", nargs="*", - metavar='DIR' - ) + metavar='DIR') + + parser.add_argument( + '-f', + '--force', + help="Force whether distribusi overwrites or removes instances of index.html not generated by distribusi, use at own risk!", + action="store_true") return parser diff --git a/distribusi/distribusi.py b/distribusi/distribusi.py index 5292f1a..024c1a4 100644 --- a/distribusi/distribusi.py +++ b/distribusi/distribusi.py @@ -69,14 +69,37 @@ def div(args, type_, subtype, tag, name): def check_distribusi_index(args, index): + """ + check whether a index.html file is generated by distribusi + """ + + if not args.force: + with open(index, 'r') as f: + if '' in f.read(): + return True + else: + if args.verbose: + print(index, 'not generated by distribusi, skipping') + return False + elif args.force: + return True + +def write_index(args,index, html, html_head, html_footer): + with open(index, 'w') as f: + if not args.no_template: + if args.style: + fs = open(args.style, "r") + style = fs.read() + styled_html_head = html_head % style + else: + styled_html_head = html_head % '' + f.write(styled_html_head) - with open(index, 'r') as f: - if '' in f.read(): - return True - else: - if args.verbose: - print(index, 'not generated by distribusi, skipping') - return False + for line in html: + f.write(line + '\n') + + if not args.no_template: + f.write(html_footer) def distribusify(args, directory): # noqa @@ -153,23 +176,11 @@ def distribusify(args, directory): # noqa index = os.path.join(root, 'index.html') if os.path.exists(index): if check_distribusi_index(args, index): - pass - else: - with open(os.path.join(root, 'index.html'), 'w') as f: - if not args.no_template: - if args.style: - fs = open(args.style, "r") - style = fs.read() - styled_html_head = html_head % style - else: - styled_html_head = html_head % '' - f.write(styled_html_head) - - for line in html: - f.write(line + '\n') - - if not args.no_template: - f.write(html_footer) + write_index(args,index,html, html_head, html_footer) + elif not os.path.exists(index): + write_index(args,index,html, html_head, html_footer) + + if args.remove_index: index = os.path.join(root, 'index.html')