#!/usr/bin/env python3

import sys
import surfex
from datetime import datetime, timedelta
import argparse


def parse_args(argv):
    parser = argparse.ArgumentParser("bufr2json")
    parser.add_argument("-b", dest="bufr", type=str, required=True, help="Bufr file")
    parser.add_argument("-v", dest="vars", nargs="+", type=str, required=True,help="Variables")
    parser.add_argument("-o", dest="output", type=str, required=True,help="Output JSON file")
    parser.add_argument("-dtg", dest="dtg", type=str, required=True, help="DTG (YYYYMMDHH)")
    parser.add_argument("-range", dest="valid_range", type=str, help="Valid range in seconds", default=3600)
    return parser.parse_args(argv)


if __name__ == "__main__":

    args = parse_args(sys.argv[1:])
    variables = args.vars
    bufrfile = args.bufr
    output = args.output
    valid_dtg = args.dtg
    valid_range = args.valid_range
    # args = surfex.parse_args_ascii2sqlite(sys.argv[1:])
    # variables = ["airTemperatureAt2M", "relativeHumidityAt2M", "totalSnowDepth"]
    # bufrfile = "/home/trygveasp/revision_control/offline-surfex-forcing/testdata/ob2020022006"
    # valid_dtg = datetime(year=2020, month=2, day=20, hour=6)
    # valid_range = timedelta(seconds=3600)
    # lonrange = [7, 12]
    # latrange = [57, 62]
    lonrange = None
    latrange = None
    valid_dtg = datetime.strptime(valid_dtg, "%Y%m%d%H")
    valid_range = timedelta(seconds=valid_range)
    bufr_set = surfex.BufrObservationSet(bufrfile, variables, valid_dtg, valid_range, lonrange=lonrange,
                                         latrange=latrange, label="bufr")

    bufr_set.write_json_file(output, indent=2)
