def main(argv):
    options, args = process_args()

    renderchan = RenderChan()
    renderchan.projects.readonly = True

    if options.profile:
        renderchan.setProfile(options.profile)
    if options.stereo in ("left","l"):
        renderchan.setStereoMode("left")
    elif options.stereo in ("right","r"):
        renderchan.setStereoMode("right")

    if options.active_project:
        renderchan.projects.load(options.active_project)

    if options.compare_time:
        compare_time=float(options.compare_time)
    else:
        compare_time=None
    if not ( options.action and options.action in ['render','merge','snapshot'] ):
        options.action = 'render'

    if options.action != 'snapshot':
        taskfile = RenderChanFile(options.filename, renderchan.modules, renderchan.projects)
        taskfile.setFormat(options.format)

        if options.action == 'merge' and options.stereo and ( options.stereo[0:1]=="v" or options.stereo[0:1]=="h" ):
            pass
        else:
            (isDirty, tasklist, maxTime)=renderchan.parseDirectDependency(taskfile, compare_time)
            if isDirty:
                print("ERROR: There are unrendered dependencies for this file!", file=sys.stderr)
                print("       (Project tree changed or job started too early?)", file=sys.stderr)
                print("       Aborting.", file=sys.stderr)
                exit(1)

    if options.action == 'render':
        if options.start and options.end:
            renderchan.job_render(taskfile, taskfile.getFormat(), updateCompletion, int(options.start), int(options.end), compare_time)
        else:
            renderchan.job_render(taskfile, taskfile.getFormat(), updateCompletion, compare_time)
    elif options.action == 'merge':
        if options.stereo and ( options.stereo[0:1]=="v" or options.stereo[0:1]=="h" ):
            renderchan.job_merge_stereo(taskfile, options.stereo)
        else:
            renderchan.job_merge(taskfile, taskfile.getFormat(), renderchan.projects.stereo, compare_time)
    elif options.action == 'snapshot':
        if not options.snapshot_target:
            print("ERROR: Please specify output filename using --target-dir option.", file=sys.stderr)
        renderchan.job_snapshot(options.filename, os.path.abspath(options.snapshot_target))
def main(argv):
    options, args = process_args()

    renderchan = RenderChan()
    renderchan.projects.readonly = True

    if options.profile:
        renderchan.setProfile(options.profile)
    if options.stereo in ("left", "l"):
        renderchan.setStereoMode("left")
    elif options.stereo in ("right", "r"):
        renderchan.setStereoMode("right")

    if options.active_project:
        renderchan.projects.load(options.active_project)

    if options.compare_time:
        compare_time = float(options.compare_time)
    else:
        compare_time = None
    if not (options.action
            and options.action in ['render', 'merge', 'snapshot']):
        options.action = 'render'

    if options.action != 'snapshot':
        taskfile = RenderChanFile(options.filename, renderchan.modules,
                                  renderchan.projects)
        taskfile.setFormat(options.format)

        if options.action == 'merge' and options.stereo and (
                options.stereo[0:1] == "v" or options.stereo[0:1] == "h"):
            pass
        else:
            (isDirty, tasklist, maxTime) = renderchan.parseDirectDependency(
                taskfile, compare_time)
            if isDirty:
                print(
                    "ERROR: There are unrendered dependencies for this file!",
                    file=sys.stderr)
                print(
                    "       (Project tree changed or job started too early?)",
                    file=sys.stderr)
                print("       Aborting.", file=sys.stderr)
                exit(1)

    if options.action == 'render':
        if options.start and options.end:
            renderchan.job_render(taskfile, taskfile.getFormat(),
                                  updateCompletion, int(options.start),
                                  int(options.end), compare_time)
        else:
            renderchan.job_render(taskfile, taskfile.getFormat(),
                                  updateCompletion, compare_time)
    elif options.action == 'merge':
        if options.stereo and (options.stereo[0:1] == "v"
                               or options.stereo[0:1] == "h"):
            renderchan.job_merge_stereo(taskfile, options.stereo)
        else:
            renderchan.job_merge(taskfile, taskfile.getFormat(),
                                 renderchan.projects.stereo, compare_time)
    elif options.action == 'snapshot':
        if not options.snapshot_target:
            print(
                "ERROR: Please specify output filename using --target-dir option.",
                file=sys.stderr)
        renderchan.job_snapshot(options.filename,
                                os.path.abspath(options.snapshot_target))