#!/usr/bin/env python3
"""
Update a builds manifest with info on a given build
"""
import argparse
import os
import sys
import shutil
import json
import traceback

MAJOR = None

parser = argparse.ArgumentParser(
    description='Update a builds manifest with info on a given build',
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)

parser.add_argument('-f', '--file', required=True, help="path to updates.json")
parser.add_argument('-v', '--version', required=True, help='version number of build')
parser.add_argument('-b', '--build_id', required=True, help="build ID ('20160801142343')")

args = parser.parse_args()

def main():
    try:
        file = args.file
        version = args.version
        short_version = version[0:3]
        
        # Back up JSON file
        shutil.copy2(file, file + '.bak')
        
        # Read in existing file
        with open(file) as f:
            updates = json.loads(f.read())
        
        updates.append({
            'version': version,
            'buildID': args.build_id,
            'detailsURL': f'https://www.zotero.org/support/{short_version}_changelog',
            'major': MAJOR
        })
        
        # Keep last 5 entries
        updates = updates[-5:]
        
        # Write new file
        updates = json.dumps(updates, indent=2)
        with open(file, 'w') as f:
            f.write(updates + "\n")
        
        print(updates)
        
        return 0
    
    except Exception as err:
        sys.stderr.write("\n" + traceback.format_exc())
        return 1

if __name__ == '__main__':
    sys.exit(main())