using OnlinePCA
using ArgParse:
    ArgParseSettings, parse_args, @add_arg_table!

# options
function parse_commandline()
    s = ArgParseSettings()

    @add_arg_table! s begin
        "--binfile", "-s"
            help = "input file (serialized)"
            arg_type = AbstractString
            required = true
        "--rowmeanlist", "-m"
            help = "mean vector of each row"
            arg_type = AbstractString
            required = true
        "--rowvarlist", "-v"
            help = "var vector of each row"
            arg_type = AbstractString
            required = true
        "--rowcv2list", "-c"
            help = "cv2 vector of each row"
            arg_type = AbstractString
            required = true
        "--outdir", "-o"
            help = "output directory"
            arg_type = AbstractString
            default = "."
            required = false
    end

    return parse_args(s)
end

# main
function main()
    parsed_args = parse_commandline()
    println("Parsed args:")
    for (arg,val) in parsed_args
        println("  $arg  =>  $val")
    end

    OnlinePCA.hvg(binfile=parsed_args["binfile"], rowmeanlist=parsed_args["rowmeanlist"], rowvarlist=parsed_args["rowvarlist"], rowcv2list=parsed_args["rowcv2list"], outdir=parsed_args["outdir"])
end

main()
