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

This commit is contained in:
Brian Coca 2015-08-14 22:00:15 -04:00
parent 3b75f3d26a
commit 92e2f54228
2 changed files with 9 additions and 10 deletions

View file

@ -432,21 +432,20 @@ class CLI(object):
return result
@staticmethod
def pager(text):
def pager(self, text):
''' find reasonable way to display text '''
# this is a much simpler form of what is in pydoc.py
if not sys.stdout.isatty():
print(text)
self.display.display(text)
elif 'PAGER' in os.environ:
if sys.platform == 'win32':
print(text)
self.display.display(text)
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:
CLI.pager_pipe(text, 'less')
self.pager_pipe(text, 'less')
else:
print(text)
self.display.display(text)
@staticmethod
def pager_pipe(text, cmd):
@ -455,7 +454,7 @@ class CLI(object):
os.environ['LESS'] = CLI.LESS_OPTS
try:
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:
pass
except KeyboardInterrupt:

View file

@ -73,7 +73,7 @@ class DocCLI(CLI):
for path in paths:
self.find_modules(path)
CLI.pager(self.get_module_list_text())
self.pager(self.get_module_list_text())
return 0
if len(self.args) == 0:
@ -125,7 +125,7 @@ class DocCLI(CLI):
self.display.vvv(traceback.print_exc())
raise AnsibleError("module %s missing documentation (or could not parse documentation): %s\n" % (module, str(e)))
CLI.pager(text)
self.pager(text)
return 0
def find_modules(self, path):