let defaultArgs = [
("-inputXMLPath", "localization_client.txt");
("-outputXMLPath", "locale");
("-outputXMLName", "localization");
("-packagePath", "")
];;
let rec tryReplace key aval args = match args
with [] -> None
| ((k, v)::rest) when k == key -> Some ((key, aval)::rest)
| ((k, v)::rest) -> match tryReplace key aval rest
with Some xs -> Some ((k, v)::xs)
| None -> None ;;
let parseArgs defaults raw_args =
let rec parse args raw_args errs = match raw_args
with [] -> (args, errs)
| (x::[]) -> (args, ("Error: alone argument option " ^ x)::errs)
| (k::v::tl) -> match tryReplace k v args
with Some args -> parse args tl errs
| None -> parse args tl (("Error: unknown option " ^ k)::errs) in
parse defaults raw_args [] ;;
let main () =
let (params, errs) = parseArgs defaultArgs args in
bGV0IGRlZmF1bHRBcmdzID0gWwoJKCItaW5wdXRYTUxQYXRoIiwgICJsb2NhbGl6YXRpb25fY2xpZW50LnR4dCIpOwoJKCItb3V0cHV0WE1MUGF0aCIsICJsb2NhbGUiKTsKCSgiLW91dHB1dFhNTE5hbWUiLCAibG9jYWxpemF0aW9uIik7CgkoIi1wYWNrYWdlUGF0aCIsICAgIiIpCgldOzsKCmxldCByZWMgdHJ5UmVwbGFjZSBrZXkgYXZhbCBhcmdzID0gbWF0Y2ggYXJncwoJd2l0aCBbXSAgICAgICAgICAgICAgICAgICAgICAgIC0+IE5vbmUKCXwgKChrLCB2KTo6cmVzdCkgd2hlbiBrID09IGtleSAtPiBTb21lICgoa2V5LCBhdmFsKTo6cmVzdCkKCXwgKChrLCB2KTo6cmVzdCkgICAgICAgICAgICAgICAtPiBtYXRjaCB0cnlSZXBsYWNlIGtleSBhdmFsIHJlc3QKCQl3aXRoIFNvbWUgeHMgLT4gU29tZSAoKGssIHYpOjp4cykKCQl8ICAgIE5vbmUgICAgLT4gTm9uZSA7OwoKbGV0IHBhcnNlQXJncyBkZWZhdWx0cyByYXdfYXJncyA9CglsZXQgcmVjIHBhcnNlIGFyZ3MgcmF3X2FyZ3MgZXJycyA9IG1hdGNoIHJhd19hcmdzCgkJd2l0aCAgICAgW10gIC0+IChhcmdzLCBlcnJzKQoJCXwgICAgKHg6OltdKSAtPiAoYXJncywgKCJFcnJvcjogYWxvbmUgYXJndW1lbnQgb3B0aW9uICIgXiB4KTo6ZXJycykKCQl8IChrOjp2Ojp0bCkgLT4gbWF0Y2ggdHJ5UmVwbGFjZSBrIHYgYXJncwoJCQl3aXRoIFNvbWUgYXJncyAtPiBwYXJzZSBhcmdzIHRsIGVycnMKCQkJfCAgICBOb25lICAgICAgLT4gcGFyc2UgYXJncyB0bCAoKCJFcnJvcjogdW5rbm93biBvcHRpb24gIiBeIGspOjplcnJzKSBpbgoJcGFyc2UgZGVmYXVsdHMgcmF3X2FyZ3MgW10gOzsKCmxldCBtYWluICgpID0KCWxldCBhcmdzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBTeXMuYXJndikgaW4KCWxldCAocGFyYW1zLCBlcnJzKSA9IHBhcnNlQXJncyBkZWZhdWx0QXJncyBhcmdzIGluCglMaXN0Lml0ZXIgcHJpbnRfc3RyaW5nIChMaXN0LnJldiBlcnJzKSA7CglwcmludF9zdHJpbmcgIlBhcmFtZXRlcnM6XG4iIDsKCUxpc3QuaXRlciAoZnVuIChrZXksIHYpIC0+IHByaW50X3N0cmluZyAoa2V5IF4gIiA9ICIgXiB2IF4gIlxuIikpIHBhcmFtcyA7CglleGl0IDAgOzs=