summaryrefslogtreecommitdiff
path: root/openstackclient/shell.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-08-01 17:37:00 +0000
committerGerrit Code Review <review@openstack.org>2016-08-01 17:37:00 +0000
commitf40f3f9f2fc07ebbd552d97c6e7a6a683fbd496e (patch)
tree6f41aeb77ca4caa655d60a815125b1b9f3319421 /openstackclient/shell.py
parent19bea1ca91166a2c7588b1ce7963fe73e8b6c406 (diff)
parent756d2fac67b4128312e1d779648e62f1458b4ffc (diff)
downloadpython-openstackclient-f40f3f9f2fc07ebbd552d97c6e7a6a683fbd496e.tar.gz
Merge "arguments are not locale decoded into Unicode"
Diffstat (limited to 'openstackclient/shell.py')
-rw-r--r--openstackclient/shell.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/openstackclient/shell.py b/openstackclient/shell.py
index b4f2df43..d6ce4ef6 100644
--- a/openstackclient/shell.py
+++ b/openstackclient/shell.py
@@ -18,7 +18,9 @@
import argparse
import getpass
+import locale
import logging
+import six
import sys
import traceback
@@ -474,8 +476,17 @@ class OpenStackShell(app.App):
tcmd.run(targs)
-def main(argv=sys.argv[1:]):
+def main(argv=None):
+ if argv is None:
+ argv = sys.argv[1:]
+ if six.PY2:
+ # Emulate Py3, decode argv into Unicode based on locale so that
+ # commands always see arguments as text instead of binary data
+ encoding = locale.getpreferredencoding()
+ if encoding:
+ argv = map(lambda arg: arg.decode(encoding), argv)
+
return OpenStackShell().run(argv)
if __name__ == "__main__":
- sys.exit(main(sys.argv[1:]))
+ sys.exit(main())