def build_man_page(self): """ """ man_path = os.path.join(self.build_base, 'osc.1.gz') distutils.log.info('generating %s' % man_path) outfile = gzip.open(man_path, 'wt') osccli = commandline.Osc(stdout=outfile) # FIXME: we cannot call the main method because osc expects an ~/.oscrc # file (this would break builds in environments like the obs) # osccli.main(argv = ['osc','man']) osccli.optparser = osccli.get_optparser() osccli.do_man(None) outfile.close()
# this is a hack to make osc work as expected with utf-8 characters, # no matter how site.py is set... reload(sys) loc = locale.getpreferredencoding() if not loc: loc = sys.getpreferredencoding() sys.setdefaultencoding(loc) del sys.setdefaultencoding except NameError: #reload, neither setdefaultencoding are in python3 pass # avoid buffering output on pipes (bnc#930137) # Basically, a "print('foo')" call is translated to a corresponding # fwrite call that writes to the stdout stream (cf. string_print # (Objects/stringobject.c) and builtin_print (Python/bltinmodule.c)); # If no pipe is used, stdout is a tty/refers to a terminal => # the stream is line buffered (see _IO_file_doallocate (libio/filedoalloc.c)). # If a pipe is used, stdout does not refer to a terminal anymore => # the stream is fully buffered by default (see _IO_file_doallocate). # The following fdopen call makes stdout line buffered again (at least on # systems that support setvbuf - if setvbuf is not supported, the stream # remains fully buffered (see PyFile_SetBufSize (Objects/fileobject.c))). if not os.isatty(sys.stdout.fileno()): sys.stdout = os.fdopen(sys.stdout.fileno(), sys.stdout.mode, 1) osccli = commandline.Osc() r = babysitter.run(osccli) sys.exit(r)