1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-27 10:16:14 +01:00
github.com_openSUSE_osc/osc-wrapper.py
Daniel Mach da8e23ec7c
Merge pull request #854 from bmwiedemann/python3
Use python3 in osc-wrapper
2022-03-15 10:23:57 +01:00

47 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
# this wrapper exists so it can be put into /usr/bin, but still allows the
# python module to be called within the source directory during development
import locale
import sys
import os
from osc import commandline, babysitter
try:
# 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)
# Note: the following only applies to python2
# 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)
if not os.isatty(sys.stderr.fileno()):
sys.stderr = os.fdopen(sys.stderr.fileno(), sys.stderr.mode, 1)
osccli = commandline.Osc()
r = babysitter.run(osccli)
sys.exit(r)