From c8a3e1757e306aff1eee9aece8c5f19596b6e60a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Sun, 1 May 2016 22:53:12 +0200 Subject: [PATCH] Turn 'title' command into a more generic 'set_meta' command. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This can set an arbitrary number of meta keys and also supports creating meta files for directories (i.e. index.md files). Signed-off-by: Toke Høiland-Jørgensen --- sigal/__init__.py | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/sigal/__init__.py b/sigal/__init__.py index 5b67295..6a657ea 100644 --- a/sigal/__init__.py +++ b/sigal/__init__.py @@ -225,21 +225,38 @@ def serve(destination, port, config): print('\nAll done!') @main.command() -@argument('image') -@argument('title') -@option('-f', '--force', default=False, is_flag=True, +@argument('target') +@argument('keys', nargs=-1) +@option('-o', '--overwrite', default=False, is_flag=True, help='Overwrite existing .md file') -def title(image, title, force=False): - "Write image title to corresponding .md file" +def set_meta(target, keys, overwrite=False): + """Write metadata keys to .md file. - if not os.path.exists(image): - sys.stderr.write("The image {} does not exist.\n".format(image)) + TARGET can be a media file or an album directory. KEYS are key/value pairs. + + Ex, to set the title of test.jpg to "My test image": + + sigal set_meta test.jpg title "My test image" + """ + + if not os.path.exists(target): + sys.stderr.write("The target {} does not exist.\n".format(target)) sys.exit(1) - descfile = os.path.splitext(image)[0] + '.md' - if os.path.exists(descfile) and not force: - sys.stderr.write("Description file for {} already exists. " - "Use --force to overwrite it.\n".format(image)) + if len(keys) < 2 or len(keys) % 2 > 0: + sys.stderr.write("Need an even number of arguments.\n") + sys.exit(1) + + if os.path.isdir(target): + descfile = os.path.join(target, 'index.md') + else: + descfile = os.path.splitext(target)[0] + '.md' + if os.path.exists(descfile) and not overwrite: + sys.stderr.write("Description file '{}' already exists. " + "Use --overwrite to overwrite it.\n".format(descfile)) sys.exit(2) with open(descfile, "w") as fp: - fp.write("Title: {}\n".format(title)) + for i in range(len(keys)//2): + k,v = keys[i*2:(i+1)*2] + fp.write("{}: {}\n".format(k.capitalize(), v)) + print("{} metadata key(s) written to {}".format(len(keys)//2, descfile))