#!/usr/bin/python

import os
import sys

from os.path import join
from optparse import OptionParser

from rainbow.util import make_reporter, enable_verbose_tracebacks, EnvMerge

enable_verbose_tracebacks()

usage = "usage: sudo %prog [options] RESUME_UID /path/to/program"

def main():
    parser = OptionParser(usage=usage, version='0.1')
    opts, args = parser.parse_args()
    if len(args) < 2 or "SUDO_USER" not in os.environ:
        parser.print_help()
        exit(1)

    resume_uid = args[0]
    launch_argv = args[1:]

    env = EnvMerge()
    path       = env.parent_envvar("PATH") or ""
    term       = env.parent_envvar("TERM") or ""
    display    = env.prefer_our_envvar("DISPLAY") or ""
    xauthority = env.prefer_our_envvar("XAUTHORITY") or ""

    rainbow_argv = [
      "/usr/sbin/rainbow-run",
      "-s", "/var/spool/rainbow/2",
      "-u", os.environ["SUDO_USER"],
      "-c", os.getcwd(),
      "-f", "0", "-f", "1", "-f", "2",
      "-E", "DISPLAY="+display,
      "-E", "XAUTHORITY="+xauthority,
      "-E", "PATH="+path,
      "-E", "TERM="+term,
      "-a", "/usr/bin/rainbow-xify",
      "-o", "audio",
      "-o", "network",
      "-r", resume_uid,
      "--"] + launch_argv

    return os.execv(rainbow_argv[0], rainbow_argv)

if __name__ == "__main__":
    main()
