def warning(message, answer=None):
"""
Print warning message into srdErr and may can for answer
:param message: message
:param answer: list of supported options. Default is first item.
"""
c = ""
if sys.stderr.isatty():
sys.stderr.write("\n\x1b[92;01m%s " % message)
else:
sys.stderr.write("\n%s " % message)
if answer:
fd = sys.stdin.fileno()
oldterm = termios.tcgetattr(fd)
newattr = termios.tcgetattr(fd)
newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSANOW, newattr)
oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
try:
while 1:
try:
c = sys.stdin.read(1)
break
except IOError:
pass
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
c = ("%s" % c).lower()
if sys.stderr.isatty():
sys.stderr.write(" %s\x1b[39;49;00m\n\n" % c)
else:
sys.stderr.write(" %s\n\n" % c)
if answer:
for it in answer:
if c in it:
return c
return answer.pop(0)
评论列表
文章目录