use Options.Applicative to parse command line argument