Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 0F345431FAF for ; Mon, 10 Feb 2014 10:42:17 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pt8eCdaLPHKn for ; Mon, 10 Feb 2014 10:42:11 -0800 (PST) Received: from qmta12.westchester.pa.mail.comcast.net (qmta12.westchester.pa.mail.comcast.net [76.96.59.227]) by olra.theworths.org (Postfix) with ESMTP id 61E52431FDF for ; Mon, 10 Feb 2014 10:41:56 -0800 (PST) Received: from omta15.westchester.pa.mail.comcast.net ([76.96.62.87]) by qmta12.westchester.pa.mail.comcast.net with comcast id QiCj1n0081swQuc5Cihw5l; Mon, 10 Feb 2014 18:41:56 +0000 Received: from odin.tremily.us ([24.18.63.50]) by omta15.westchester.pa.mail.comcast.net with comcast id Qihu1n00b152l3L3bihvdS; Mon, 10 Feb 2014 18:41:56 +0000 Received: from mjolnir.tremily.us (unknown [192.168.0.140]) by odin.tremily.us (Postfix) with ESMTPS id 8D72010167AD; Mon, 10 Feb 2014 10:41:54 -0800 (PST) Received: (nullmailer pid 1255 invoked by uid 1000); Mon, 10 Feb 2014 18:40:44 -0000 From: "W. Trevor King" To: notmuch@notmuchmail.org Subject: [PATCH v2 06/20] nmbug-status: Consolidate functions and main code Date: Mon, 10 Feb 2014 10:40:27 -0800 Message-Id: <43b389b156214bb07c09f36cd36fd9fa2ccebf5b.1392056624.git.wking@tremily.us> X-Mailer: git-send-email 1.8.5.2.8.g0f6c0d1 In-Reply-To: References: In-Reply-To: References: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20121106; t=1392057716; bh=yMvCAOnnJi1PiHQdjnon2+E+kEYl22joo5zXYe+ylVs=; h=Received:Received:Received:Received:From:To:Subject:Date: Message-Id; b=bxmgbBkbZ6uZdNj/k5H6p17VIYv+XKt9hOgIWYOUeEpo2syEw8mpQkqyymDG22Lry bC/dd9rBO35PCyQBZ6//54pLiy0urp2s3RFnzcWAClCGHumbnwYB3t/UgSGLlfpIXD vZNIZblPl02Aj6jZdG/aXeoGQdR4yOJFbrN0I2SVeG28QG/8s9xSTHsWwHdwMhm+qQ T9niWQH/Xi9D3+2lWx3vIjzoPOo7AY2Kj4i2rkd6K9SvdovmJ1u3pe3yeQ0l9DfLrY Ts2gO/mzPBcZdqBOdzog0o063uH13jB++iqVzJzBvJyswKYUDU/0Q9K7FHGH49E3sR Z2agrjmdMKVwA== Cc: Tomi Ollila X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Feb 2014 18:42:17 -0000 The definitions of Thread, output_with_separator, and print_view were between the main argparse and view-printing code. Group them together with our existing read_config at the top of the module, which makes for easier reading in the main section. I also: * Made 'headers' a print_view argument instead of a module-level global. The list -> tuple conversion avoids having a mutable default argument, which makes some people jumpy ;). * Made 'db' a print_view argument instead of relying on the global namespace to access it from print_view. --- devel/nmbug/nmbug-status | 78 +++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/devel/nmbug/nmbug-status b/devel/nmbug/nmbug-status index 22eeb5c..199892f 100755 --- a/devel/nmbug/nmbug-status +++ b/devel/nmbug/nmbug-status @@ -47,40 +47,6 @@ def read_config(path=None, encoding=None): return json.load(fp) -# parse command line arguments - -parser = argparse.ArgumentParser() -parser.add_argument('--text', help='output plain text format', - action='store_true') -parser.add_argument('--config', help='load config from given file', - metavar='PATH') -parser.add_argument('--list-views', help='list views', - action='store_true') -parser.add_argument('--get-query', help='get query for view', - metavar='VIEW') - -args = parser.parse_args() - -config = read_config(path=args.config) - -if args.list_views: - for view in config['views']: - print(view['title']) - sys.exit(0) -elif args.get_query != None: - for view in config['views']: - if args.get_query == view['title']: - print(' and '.join(view['query'])) - sys.exit(0) -else: - # only import notmuch if needed - import notmuch - -if args.text: - output_format = 'text' -else: - output_format = 'html' - class Thread: def __init__(self, last, lines): self.last = last @@ -89,16 +55,17 @@ class Thread: def join_utf8_with_newlines(self): return '\n'.join( (line.encode('utf-8') for line in self.lines) ) + def output_with_separator(threadlist, sep): outputs = (thread.join_utf8_with_newlines() for thread in threadlist) print(sep.join(outputs)) -headers = ['date', 'from', 'subject'] -def print_view(title, query, comment): +def print_view(database, title, query, comment, + headers=('date', 'from', 'subject')): query_string = ' and '.join(query) - q_new = notmuch.Query(db, query_string) + q_new = notmuch.Query(database, query_string) q_new.set_sort(notmuch.Query.SORT.OLDEST_FIRST) last_thread_id = '' @@ -176,6 +143,41 @@ def print_view(title, query, comment): else: output_with_separator(threadlist, '\n\n') + +# parse command line arguments + +parser = argparse.ArgumentParser() +parser.add_argument('--text', help='output plain text format', + action='store_true') +parser.add_argument('--config', help='load config from given file', + metavar='PATH') +parser.add_argument('--list-views', help='list views', + action='store_true') +parser.add_argument('--get-query', help='get query for view', + metavar='VIEW') + +args = parser.parse_args() + +config = read_config(path=args.config) + +if args.list_views: + for view in config['views']: + print(view['title']) + sys.exit(0) +elif args.get_query != None: + for view in config['views']: + if args.get_query == view['title']: + print(' and '.join(view['query'])) + sys.exit(0) +else: + # only import notmuch if needed + import notmuch + +if args.text: + output_format = 'text' +else: + output_format = 'html' + # main program db = notmuch.Database(mode=notmuch.Database.MODE.READ_WRITE) @@ -200,7 +202,7 @@ if output_format == 'html': print('') for view in config['views']: - print_view(**view) + print_view(database=db, **view) if output_format == 'html': print('\n') -- 1.8.5.2.8.g0f6c0d1