#!/usr/bin/env python2 from __future__ import print_function import os import signal import struct import sys def output(line): sys.stdout.write(struct.pack('@I', len(line))) sys.stdout.write(line) sys.stdout.flush() def echo_loop(): while True: line = sys.stdin.readline() if not line: break output(line) if sys.platform == "win32": import msvcrt msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) cmd = sys.argv[1] if cmd == 'echo': echo_loop() elif cmd == 'exit': sys.exit(int(sys.argv[2])) elif cmd == 'env': for var in sys.argv[2:]: output(os.environ.get(var, '')) elif cmd == 'pwd': output(os.path.abspath(os.curdir)) elif cmd == 'print_args': for arg in sys.argv[2:]: output(arg) elif cmd == 'ignore_sigterm': signal.signal(signal.SIGTERM, signal.SIG_IGN) output('Ready') while True: try: signal.pause() except AttributeError: import time time.sleep(3600) elif cmd == 'print': sys.stdout.write(sys.argv[2]) sys.stderr.write(sys.argv[3])