From b46b9f30ef276d2e530922b411c01bc74f44e721 Mon Sep 17 00:00:00 2001 From: ville rantanen Date: Fri, 7 Dec 2018 15:19:59 +0200 Subject: [PATCH] allow overwriting indexes, only when previous was also generated with simplewebpage --- web/SimpleWebPage.py | 62 +++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/web/SimpleWebPage.py b/web/SimpleWebPage.py index a1cd0ce..6671397 100755 --- a/web/SimpleWebPage.py +++ b/web/SimpleWebPage.py @@ -16,7 +16,7 @@ def setup(): epilog = "Recursively generate indexes: \n# find . -type d -not -path '*/.*' -exec SimpleWebPage -f \{\} \;" ) parser.add_argument("-f",action="store_true",dest="overwrite",default=False, - help="Overwrite existing index file.") + help="Overwrite existing index file, even if it's not generated with SimpleWebPage. By default, if file is generated with SimpleWebPage it will be overwritten!") parser.add_argument("-H",action="store_true",dest="hidden",default=False, help="Show hidden files") parser.add_argument("-t",type=str,dest="title",default=None, @@ -46,46 +46,50 @@ def setup2HTML(opts): ]) def HTML2setup(opts): - f = open(os.path.join(opts.path,opts.filename), 'rt') + """ returns new opts and was it able to read HTML """ try: - for l in f.readlines(): - if l.find('name="SimpleWebPageSetup"') > -1: - content = l[l.find('name="SimpleWebPageSetup"'):] - for s in content.split('"')[3].split(";"): - (k,v) = s.split('=',1) - if k == 'hidden': opts.hidden = v == "True" - if k == 'parent': opts.parent = v == "True" - if k == 'title': opts.title = urllib.unquote(v) - if k == 'images': opts.images = v == "True" - print("Reading options from existing " + opts.filename) - break + read_config = False + with open(os.path.join(opts.path,opts.filename), 'rt') as f: + for l in f.readlines(): + if l.find(' -1: + content = l[l.find('name="SimpleWebPageSetup"'):] + for s in content.split('"')[3].split(";"): + (k,v) = s.split('=',1) + if k == 'hidden': opts.hidden = v == "True" + if k == 'parent': opts.parent = v == "True" + if k == 'title': opts.title = urllib.unquote(v) + if k == 'images': opts.images = v == "True" + read_config = True + print("Reading options from existing " + opts.filename) + break + return (opts, read_config) except: - pass - return opts + return (opts, False) def generate_index(opts): - for path,dirs,files in os.walk(opts.path): + for path,dirs, files in os.walk(opts.path): + existing_config = False if opts.filename in files: - if not opts.overwrite: - print(opts.filename+" exists") + opts, existing_config = HTML2setup(opts) + if not existing_config and not opts.overwrite: + print(opts.filename + " exists, and not generated with SimpleWebPage. Exiting.") sys.exit(1) - opts = HTML2setup(opts) files = [ f for f in files if f != opts.filename] if not opts.hidden: files = [ f for f in files if not f.startswith(".")] dirs = [ d for d in dirs if not d.startswith(".")] - f = open(os.path.join(path,opts.filename),'wt') dirs.sort() files.sort() - f.write(get_header(opts)) - if opts.parent: - f.write(get_pathlink(path, '..')) - for di in dirs: - f.write(get_pathlink(path, di)) - for fi in files: - f.write(get_filelink(path, fi, opts.images)) - f.write(get_footer()) - f.close() + with open(os.path.join(path,opts.filename), 'wt') as f: + f.write(get_header(opts)) + if opts.parent: + f.write(get_pathlink(path, '..')) + for di in dirs: + f.write(get_pathlink(path, di)) + for fi in files: + f.write(get_filelink(path, fi, opts.images)) + f.write(get_footer()) + f.close() return def get_filelink(path,fname,images=False):