# HG changeset patch # User Tero Marttila # Date 1244050395 -10800 # Node ID 20355dd2e61a1cd72f28a6a1ef6c619eb979f45e # Parent 189f331c796089ad6a6e03efd2e7590c69606c6f new structure for bin/degal, adding degal/commands, degal/main diff -r 189f331c7960 -r 20355dd2e61a bin/degal --- a/bin/degal Wed Jun 03 19:40:35 2009 +0300 +++ b/bin/degal Wed Jun 03 20:33:15 2009 +0300 @@ -4,42 +4,12 @@ # Copyright 2008 Tero Marttila # -from degal import folder, shorturl, log - -import os.path, os -from optparse import OptionParser - -def main (dir='.', targets=()) : - root_filter = {} - - for target in targets : - f = root_filter - for path_part in target.split('/') : - if path_part : - if path_part not in f : - f[path_part] = {} - - f = f[path_part] - - log.title("Indexing %s...", dir) - root = folder.Folder(dir) - root.index(root_filter) - log.up() - - if False : - log.title("Syncing ShortURLs...") - shorturl.updateDB(root) - log.up() - - log.title("Rendering updated dirs...") - root.render() - log.up() +# import package +import degal.main if __name__ == '__main__' : - parser = OptionParser(usage="usage: %prog [options] ... [target ...]") + import sys - parser.add_option("-d", "--dir", dest="dir", help="look for images in DIR and write the HTML there", metavar="DIR", default=".") - - options, filter_targets = parser.parse_args() - - main(options.dir, filter_targets) + # run entrypoint with command arguments, and exit with returned error code + sys.exit(degal.main.main(sys.argv)) + diff -r 189f331c7960 -r 20355dd2e61a degal/commands.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/degal/commands.py Wed Jun 03 20:33:15 2009 +0300 @@ -0,0 +1,42 @@ +""" + Implementations of the core CLI commands +""" + +import log, shorturl, folder + +def main (dir='.', targets=()) : + """ + Scan the given root dir for all images, and render updated ones + """ + + root_filter = {} + + # parse the targets into the hierarchial root_filter that we use + for target in targets : + f = root_filter + for path_part in target.split('/') : + if path_part : + if path_part not in f : + f[path_part] = {} + + f = f[path_part] + + # build the index + log.title("Indexing %s...", dir) + root = folder.Folder(dir) + root.index(root_filter) + log.up() + + # XXX: maintain shorturls stuff + if False : + log.title("Syncing ShortURLs...") + shorturl.updateDB(root) + log.up() + + # render output + log.title("Rendering updated dirs...") + root.render() + log.up() + + return 0 + diff -r 189f331c7960 -r 20355dd2e61a degal/main.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/degal/main.py Wed Jun 03 20:33:15 2009 +0300 @@ -0,0 +1,35 @@ +""" + Main entry point for the command-line interface +""" + +import commands + +from optparse import OptionParser + +def option_parser (command_name) : + """ + Build the OptionParser that we use + """ + + # create parser using the given command + parser = OptionParser(prog=command_name) + + # define options + parser.add_option('-d', "--dir", dest='dir', help="Use DIR as the image/HTML path [default: CWD]", metavar='DIR', default='.') + + return parser + +def main (argv) : + """ + Main entry point + """ + + # build optparser + parser = option_parser(argv[0]) + + # parse the given argv + options, filter_targets = parser.parse_args(argv[1:]) + + # run the selected command + return commands.main(options.dir, filter_targets) +