#!/usr/bin/env python3.5

import steem
import sys
import argparse
import pprint
import json
from steem.blockchain import Blockchain

def main():
    parser = argparse.ArgumentParser(description="UNIX tail(1)-like tool for the steem blockchain")
    parser.add_argument('-f','--follow',help='Constantly stream output to stdout', action='store_true')
    parser.add_argument('-n','--lines', type=int,  default=10,    help='How many ops to show')
    parser.add_argument('-j','--json',  help='Output as JSON instead of human-readable pretty-printed format', action='store_true')
    args = parser.parse_args(sys.argv[1:])

    b = Blockchain()
    stream = b.reliable_stream()

    op_count = 0
    if args.json: 
       if not args.follow: sys.stdout.write('[')
    for op in stream:
        if args.json:
           sys.stdout.write('%s' % json.dumps(op))
        else:
           pprint.pprint(op)
        op_count += 1
        if not args.follow:
           if op_count > args.lines:
              if args.json: sys.stdout.write(']')
              return
           else:
              if args.json: sys.stdout.write(',')


if __name__=='__main__':
   main()
