parseArgs :: [String] -> Either String (Config, [String])
parseArgs rawArgs =
    case getOpt RequireOrder options rawArgs of
         (acts, args, []) ->
             case foldl (>>=) (return defaultConfig) acts of
                  Just cfg -> Right (cfg, args)
                  Nothing -> Left ""
         (_, _, errs) -> Left $ concat errs
parseArgs :: [String] -> Either String (Config, [String])
parseArgs rawArgs =
    case getOpt RequireOrder options rawArgs of
         (acts, args, []) ->
             case foldl (>>=) (return defaultConfig) acts of
                  Just cfg -> Right (cfg, args)
                  Nothing -> Left ""
         (_, _, errs) -> Left $ concat errs
parseArgs rawArgs =
    case getOpt RequireOrder options rawArgs of
         (acts, args, []) ->
             case foldl (>>=) (return defaultConfig) acts of
                  Just cfg -> Right (cfg, args)
                  Nothing -> Left ""
         (_, _, errs) -> Left $ concat errs