From: W. Trevor King Date: Mon, 10 Feb 2014 18:40:27 +0000 (+1600) Subject: [PATCH v2 06/20] nmbug-status: Consolidate functions and main code X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=1b04cafb2692c66fe56e3d0b869ebe81e4b65785;p=notmuch-archives.git [PATCH v2 06/20] nmbug-status: Consolidate functions and main code --- diff --git a/1a/6ba0a4f41039b18bc185b7046dacbdc0c40594 b/1a/6ba0a4f41039b18bc185b7046dacbdc0c40594 new file mode 100644 index 000000000..d823412f9 --- /dev/null +++ b/1a/6ba0a4f41039b18bc185b7046dacbdc0c40594 @@ -0,0 +1,207 @@ +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 +