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

# options
function parse_commandline()
    s = ArgParseSettings()

    @add_arg_table! s begin
        "--tenxfile"
            help = "input 10XHDF5 file"
            arg_type = AbstractString
            required = true
        "--outdir", "-o"
            help = "output directory"
            arg_type = AbstractString
            default = "."
            required = false
        "--group"
            help = "The group name of HDF5 (e.g. mm10)"
            arg_type = AbstractString
            required = true
        "--chunksize"
            help = "The number of rows loaded at once from 10XHDF5"
            arg_type = Union{Number,AbstractString}
            default = 5000
    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

    if typeof(parsed_args["chunksize"]) == String
        chunksize = parse(Int64, parsed_args["chunksize"])
    else
        chunksize = parsed_args["chunksize"]
    end

    OnlinePCA.tenxsumr(tenxfile=parsed_args["tenxfile"], outdir=parsed_args["outdir"], group=parsed_args["group"], chunksize=chunksize)
end

main()