#!/usr/bin/env python3
#
# Copyright (c) 2020 VIAVI, Inc.
#
# Written by Fabien Proriol <fabien.proriol@jdsu.com>
#
from lxml import etree
import os
import sys
import gzip
import struct
import argparse
from viavi.upgrade.vui import extract_vui, create_vui, install_vui



def init_argparse():
    parser = argparse.ArgumentParser(
        usage="%(prog)s cmd [OPTION] source",
        description="Viavi Upgrader Image manipulation.\n\
        vui create <path>/release.xml -> generate VUI file from release.xml, release.xml.sig, and tar\n\
        vui getxml  <vui_url> -> generate release.xml\n\
        vui extract <vui_url> -> generate release.xml, release.xml.sig and tar\n\
        vui install <vui_url> -> install release\n\
        <vui_url> can be : \n\
        - a network url: http://foo.com/bar.vui\n\
        - a file: file:///foo/bar.vui or /foo/bar.vui\n\
        ", formatter_class=argparse.RawTextHelpFormatter)
    parser.add_argument('cmd')
    parser.add_argument('source')
    return parser


if __name__ == "__main__":
    parser = init_argparse()
    args = parser.parse_args()

    if args.cmd == "extract":
        exit(extract_vui(args.source))

    if args.cmd == "getxml":
        exit(extract_vui(args.source, True))

    if args.cmd == "create":
        ret = create_vui(args.source)
        if ret.isdigit():
            print("ERROR")
            exit(ret)
        print(f"{ret} created")
        exit(0)

    if args.cmd == "install":
        exit(install_vui(args.source))

    parser.print_help()

