import System
type Args = [Arg]
defaultArgs :: Args
defaultArgs = [
("-inputXMLPath", "localization_client.txt"),
("-outputXMLPath", "locale"),
("-outputXMLName", "localization"),
("-packagePath", "")
]
parseArgs defaults rawArgs = parse defaults rawArgs [] where
parse args [] errs = (args, errs)
parse args ( x:[]) errs = (args, ("Error: alone argument option " ++ x):errs)
parse args (k:v:tl) errs = case tryReplace k v args of
Just args -> parse args tl errs
Nothing -> parse args tl (("Error: unknown option " ++ k):errs)
tryReplace _ _ [] = Nothing
tryReplace key val ((k, v):rest) = if key == k
then Just ((key, val):rest)
else case tryReplace key val rest of
Just xs -> Just ((k, v):xs)
Nothing -> Nothing
main = do
rawArgs <- getArgs
let (args, errs) = parseArgs defaultArgs rawArgs
forM_ args $ \(arg, val) ->
aW1wb3J0IENvbnRyb2wuTW9uYWQKaW1wb3J0IFN5c3RlbQoKdHlwZSBBcmcgID0gKFN0cmluZywgU3RyaW5nKQp0eXBlIEFyZ3MgPSBbQXJnXQoKZGVmYXVsdEFyZ3MgOjogQXJncwpkZWZhdWx0QXJncyA9IFsKCSgiLWlucHV0WE1MUGF0aCIsICAibG9jYWxpemF0aW9uX2NsaWVudC50eHQiKSwKCSgiLW91dHB1dFhNTFBhdGgiLCAibG9jYWxlIiksCgkoIi1vdXRwdXRYTUxOYW1lIiwgImxvY2FsaXphdGlvbiIpLAoJKCItcGFja2FnZVBhdGgiLCAgICIiKQoJXQoKcGFyc2VBcmdzIDo6IEFyZ3MgLT4gW1N0cmluZ10gLT4gKEFyZ3MsIFtTdHJpbmddKQpwYXJzZUFyZ3MgZGVmYXVsdHMgcmF3QXJncyA9IHBhcnNlIGRlZmF1bHRzIHJhd0FyZ3MgW10gd2hlcmUKCXBhcnNlIGFyZ3MgICAgICBbXSAgZXJycyA9IChhcmdzLCBlcnJzKQoJcGFyc2UgYXJncyAoICB4OltdKSBlcnJzID0gKGFyZ3MsICgiRXJyb3I6IGFsb25lIGFyZ3VtZW50IG9wdGlvbiAiICsrIHgpOmVycnMpCglwYXJzZSBhcmdzIChrOnY6dGwpIGVycnMgPSBjYXNlIHRyeVJlcGxhY2UgayB2IGFyZ3Mgb2YKCQlKdXN0IGFyZ3MgLT4gcGFyc2UgYXJncyB0bCBlcnJzCgkJTm90aGluZyAgIC0+IHBhcnNlIGFyZ3MgdGwgKCgiRXJyb3I6IHVua25vd24gb3B0aW9uICIgKysgayk6ZXJycykKCnRyeVJlcGxhY2UgOjogU3RyaW5nIC0+IFN0cmluZyAtPiBBcmdzIC0+IE1heWJlIEFyZ3MKdHJ5UmVwbGFjZSBfIF8gW10gPSBOb3RoaW5nCnRyeVJlcGxhY2Uga2V5IHZhbCAoKGssIHYpOnJlc3QpID0gaWYga2V5ID09IGsKCXRoZW4gSnVzdCAoKGtleSwgdmFsKTpyZXN0KQoJZWxzZSBjYXNlIHRyeVJlcGxhY2Uga2V5IHZhbCByZXN0IG9mCgkJSnVzdCB4cyAtPiBKdXN0ICgoaywgdik6eHMpCgkJTm90aGluZyAtPiBOb3RoaW5nCgptYWluID0gZG8KCXJhd0FyZ3MgPC0gZ2V0QXJncwoJbGV0IChhcmdzLCBlcnJzKSA9IHBhcnNlQXJncyBkZWZhdWx0QXJncyByYXdBcmdzCglmb3JNXyAocmV2ZXJzZSBlcnJzKSBwdXRTdHJMbgoJcHV0U3RyTG4gIlBhcmFtZXRlcnM6IgoJZm9yTV8gIGFyZ3MgJCBcKGFyZywgdmFsKSAtPgoJCXB1dFN0ckxuIChhcmcgKysgIiA9ICIgKysgdmFsKQ==