#!/usr/bin/python3
"""Initialize snapshot storage or capture/list snapshots for a code."""
import argparse
import json
from mykos_snapshots import initialize, capture, list_snapshots, restore, configure_native_hook, remove_native_hook, delete_snapshot

if __name__ == '__main__':
    parser=argparse.ArgumentParser(description=__doc__)
    parser.add_argument('action',choices=['init','capture','list','restore','delete','unhook'])
    parser.add_argument('code',nargs='?')
    parser.add_argument('snapshot',nargs='?')
    args=parser.parse_args()
    try:
        if args.action=='init':
            print(initialize());configure_native_hook()
        elif args.action=='unhook':remove_native_hook()
        elif args.action=='list':print(json.dumps(list_snapshots(args.code)))
        elif args.action in ('restore','delete'):
            if not args.code or not args.snapshot:parser.error('Select a code and snapshot')
            print(json.dumps((restore if args.action=='restore' else delete_snapshot)(args.code,args.snapshot)))
        else:
            if not args.code:parser.error('Select an eight-digit code')
            print(json.dumps(capture(args.code) if args.action=='capture' else list_snapshots(args.code)))
    except (ValueError,RuntimeError,OSError) as error:raise SystemExit(str(error))
