From fd2f8e965c0e2f16481d5f47a1949323bdd0a107 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Tue, 4 Feb 2014 02:59:24 +1600 Subject: [PATCH] [PATCH 06/17] nmbug-status: Consolidate functions and main code --- 12/10ef838d56aaf88413300a59b1074ab27dd167 | 206 ++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 12/10ef838d56aaf88413300a59b1074ab27dd167 diff --git a/12/10ef838d56aaf88413300a59b1074ab27dd167 b/12/10ef838d56aaf88413300a59b1074ab27dd167 new file mode 100644 index 000000000..69e9bbdd8 --- /dev/null +++ b/12/10ef838d56aaf88413300a59b1074ab27dd167 @@ -0,0 +1,206 @@ +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 3AEA6429E2E + for ; Mon, 3 Feb 2014 03:08:16 -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 Om6W-npM-SaK for ; + Mon, 3 Feb 2014 03:08:10 -0800 (PST) +Received: from qmta03.westchester.pa.mail.comcast.net + (qmta03.westchester.pa.mail.comcast.net [76.96.62.32]) + by olra.theworths.org (Postfix) with ESMTP id 1B9CE431E64 + for ; Mon, 3 Feb 2014 03:08:10 -0800 (PST) +Received: from omta24.westchester.pa.mail.comcast.net ([76.96.62.76]) + by qmta03.westchester.pa.mail.comcast.net with comcast + id Mn1p1n0051ei1Bg53n891j; Mon, 03 Feb 2014 11:08:09 +0000 +Received: from odin.tremily.us ([24.18.63.50]) + by omta24.westchester.pa.mail.comcast.net with comcast + id Mn881n00F152l3L3kn89Mz; Mon, 03 Feb 2014 11:08:09 +0000 +Received: from mjolnir.tremily.us (unknown [192.168.0.140]) + by odin.tremily.us (Postfix) with ESMTPS id EE746FB4D4B; + Mon, 3 Feb 2014 03:00:39 -0800 (PST) +Received: (nullmailer pid 689 invoked by uid 1000); + Mon, 03 Feb 2014 10:59:41 -0000 +From: "W. Trevor King" +To: notmuch@notmuchmail.org +Subject: [PATCH 06/17] nmbug-status: Consolidate functions and main code +Date: Mon, 3 Feb 2014 02:59:24 -0800 +Message-Id: + <43b389b156214bb07c09f36cd36fd9fa2ccebf5b.1391424512.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=1391425689; + bh=yMvCAOnnJi1PiHQdjnon2+E+kEYl22joo5zXYe+ylVs=; + h=Received:Received:Received:Received:From:To:Subject:Date: + Message-Id; + b=ljtft7MtzF2ZXrN21J4UBrJ2x7X5BE5yyzKWfG/STBGoGOchjOt/FP7FpizUx6E1J + wDCzK/k2sApv04tsPsfSJP6FqHIZ5GC7OEyIMpFi+E/CR5UGzBr6h55MYO0bR67Hg4 + jK/OPt2MIqCekk0e++M+v+8B6jPR8w1cSk7SlWMXkX7/RcS4kaOEUusfJTxW/f+ycm + NrocLO6G5H+qZazvQd40AD7kdJVexug5o/e9Qr89/HixAGl972FyAWBPu9d6Sn+Sq1 + chVhAVuvLHlxqVy6TcjFncjGiIVsx1eKYudIyKCRqHsHjNH7XSCWFeQtugXZ3A87WO + 1O0LfAZEchlTA== +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, 03 Feb 2014 11:08:16 -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 + -- 2.26.2