import os
import shlex
import sys
from subprocess import Popen


def find_upgrades_script():
    directory = os.getcwd()
    while directory != os.sep:
        path = os.path.join(directory, 'bin', 'upgrade')
        if os.path.isfile(path):
            return path
        directory = os.path.dirname(directory)
    return None


def delegate_to_script(upgrade_script):
    arg = shlex.quote(' '.join(sys.argv[1:]))
    command = ' '.join((upgrade_script, 'create', arg, '--path', os.getcwd()))
    print('>', command)
    exitcode = Popen(shlex.split(command)).wait()
    sys.exit(exitcode)


if __name__ == '__main__':
    upgrade_script = find_upgrades_script()
    if not upgrade_script:
        print('ERROR: could not find a "bin/upgrade" in any parent directories.', file=sys.stderr)
        sys.exit(3)
    delegate_to_script(upgrade_script)
