X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=devel%2Fnmbug%2Fnmbug-status;h=a7a391da43a38980b03c6c44d37cec8eb689be79;hb=fd29d3f;hp=55f0d738f383781319ee4164f004ca5e78411853;hpb=73fcfa861cf412a548238fdf3e0a505d98d7ea78;p=notmuch diff --git a/devel/nmbug/nmbug-status b/devel/nmbug/nmbug-status index 55f0d738..a7a391da 100755 --- a/devel/nmbug/nmbug-status +++ b/devel/nmbug/nmbug-status @@ -6,9 +6,12 @@ # - python 2.6 for json # - argparse; either python 2.7, or install separately +from __future__ import print_function + +import codecs import datetime -import notmuch -import rfc822 +import email.utils +import locale import urllib import json import argparse @@ -16,6 +19,10 @@ import os import sys import subprocess + +_ENCODING = locale.getpreferredencoding() or sys.getdefaultencoding() + + # parse command line arguments parser = argparse.ArgumentParser() @@ -36,27 +43,31 @@ else: nmbhome = os.getenv('NMBGIT', os.path.expanduser('~/.nmbug')) # read only the first line from the pipe - sha1 = subprocess.Popen(['git', '--git-dir', nmbhome, - 'show-ref', '-s', 'config'], - stdout=subprocess.PIPE).stdout.readline() - - sha1 = sha1.rstrip() + sha1_bytes = subprocess.Popen( + ['git', '--git-dir', nmbhome, 'show-ref', '-s', 'config'], + stdout=subprocess.PIPE).stdout.readline() + sha1 = sha1_bytes.decode(_ENCODING).rstrip() - fp = subprocess.Popen(['git', '--git-dir', nmbhome, - 'cat-file', 'blob', sha1+':status-config.json'], - stdout=subprocess.PIPE).stdout + fp_byte_stream = subprocess.Popen( + ['git', '--git-dir', nmbhome, 'cat-file', 'blob', + sha1+':status-config.json'], + stdout=subprocess.PIPE).stdout + fp = codecs.getreader(encoding=_ENCODING)(stream=fp_byte_stream) config = json.load(fp) if args.list_views: for view in config['views']: - print view['title'] + 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']) + print(' and '.join(view['query'])) sys.exit(0) +else: + # only import notmuch if needed + import notmuch if args.text: output_format = 'text' @@ -73,7 +84,7 @@ class Thread: def output_with_separator(threadlist, sep): outputs = (thread.join_utf8_with_newlines() for thread in threadlist) - print sep.join(outputs) + print(sep.join(outputs)) headers = ['date', 'from', 'subject'] @@ -91,13 +102,13 @@ def print_view(title, query, comment): lines = None if output_format == 'html': - print '

%s

' % (title, title) - print comment - print 'The view is generated from the following query:' - print '
' - print query_string - print '
' - print '\n' + print('

%s

' % (title, title)) + print(comment) + print('The view is generated from the following query:') + print('
') + print(query_string) + print('
') + print('
\n') for m in q_new.search_messages(): @@ -124,7 +135,7 @@ def print_view(title, query, comment): val = str.join(' ', val.split(None)[1:4]) val = str(datetime.datetime.strptime(val, '%d %b %Y').date()) elif header == 'from': - (val, addr) = rfc822.parseaddr(val) + (val, addr) = email.utils.parseaddr(val) if val == '': val = addr.split('@')[0] @@ -154,7 +165,7 @@ def print_view(title, query, comment): if output_format == 'html': output_with_separator(threadlist, '\n\n') - print '

' + print('') else: output_with_separator(threadlist, '\n\n') @@ -163,26 +174,26 @@ def print_view(title, query, comment): db = notmuch.Database(mode=notmuch.Database.MODE.READ_WRITE) if output_format == 'html': - print ''' + print(''' Notmuch Patches -''' - print '

Notmuch Patches

' - print 'Generated: %s
' % datetime.datetime.utcnow().date() - print 'For more infomation see
nmbug' +''') + print('

Notmuch Patches

') + print('Generated: %s
' % datetime.datetime.utcnow().date()) + print('For more infomation see nmbug') - print '

Views

' - print '') for view in config['views']: print_view(**view) if output_format == 'html': - print '\n' + print('\n')