Commit 92e2f542 by Brian Coca

fixed issues with utf-8 encoding in docs, moved pager to use display class instad of bare prints

parent 3b75f3d2
...@@ -432,21 +432,20 @@ class CLI(object): ...@@ -432,21 +432,20 @@ class CLI(object):
return result return result
@staticmethod def pager(self, text):
def pager(text):
''' find reasonable way to display text ''' ''' find reasonable way to display text '''
# this is a much simpler form of what is in pydoc.py # this is a much simpler form of what is in pydoc.py
if not sys.stdout.isatty(): if not sys.stdout.isatty():
print(text) self.display.display(text)
elif 'PAGER' in os.environ: elif 'PAGER' in os.environ:
if sys.platform == 'win32': if sys.platform == 'win32':
print(text) self.display.display(text)
else: else:
CLI.pager_pipe(text, os.environ['PAGER']) self.pager_pipe(text, os.environ['PAGER'])
elif subprocess.call('(less --version) 2> /dev/null', shell = True) == 0: elif subprocess.call('(less --version) 2> /dev/null', shell = True) == 0:
CLI.pager_pipe(text, 'less') self.pager_pipe(text, 'less')
else: else:
print(text) self.display.display(text)
@staticmethod @staticmethod
def pager_pipe(text, cmd): def pager_pipe(text, cmd):
...@@ -455,7 +454,7 @@ class CLI(object): ...@@ -455,7 +454,7 @@ class CLI(object):
os.environ['LESS'] = CLI.LESS_OPTS os.environ['LESS'] = CLI.LESS_OPTS
try: try:
cmd = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=sys.stdout) cmd = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=sys.stdout)
cmd.communicate(input=text) cmd.communicate(input=text.encode(sys.stdout.encoding))
except IOError: except IOError:
pass pass
except KeyboardInterrupt: except KeyboardInterrupt:
......
...@@ -73,7 +73,7 @@ class DocCLI(CLI): ...@@ -73,7 +73,7 @@ class DocCLI(CLI):
for path in paths: for path in paths:
self.find_modules(path) self.find_modules(path)
CLI.pager(self.get_module_list_text()) self.pager(self.get_module_list_text())
return 0 return 0
if len(self.args) == 0: if len(self.args) == 0:
...@@ -125,7 +125,7 @@ class DocCLI(CLI): ...@@ -125,7 +125,7 @@ class DocCLI(CLI):
self.display.vvv(traceback.print_exc()) self.display.vvv(traceback.print_exc())
raise AnsibleError("module %s missing documentation (or could not parse documentation): %s\n" % (module, str(e))) raise AnsibleError("module %s missing documentation (or could not parse documentation): %s\n" % (module, str(e)))
CLI.pager(text) self.pager(text)
return 0 return 0
def find_modules(self, path): def find_modules(self, path):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment