예제 #1
0
	fileopts = []
	for opt in opts_file:
		if opt._short_opts:
			fileopts.extend(opt._short_opts)
		if opt._long_opts:
			fileopts.extend(opt._long_opts)

	diropts = []
	for opt in opts_dir:
		if opt._short_opts:
			diropts.extend(opt._short_opts)
		if opt._long_opts:
			diropts.extend(opt._long_opts)

	flags = [opt.get_opt_string() for opt in opts]

	with open(ZSH_COMPLETION_TEMPLATE) as f:
		template = f.read()

	template = template.replace("{{fileopts}}", "|".join(fileopts))
	template = template.replace("{{diropts}}", "|".join(diropts))
	template = template.replace("{{flags}}", " ".join(flags))

	with open(ZSH_COMPLETION_FILE, "w") as f:
		f.write(template)


parser = youtube_dl.parseOpts()[0]
build_completion(parser)
예제 #2
0

def build_completion(opt_parser):
    commands = []

    for group in opt_parser.option_groups:
        for option in group.option_list:
            long_option = option.get_opt_string().strip('-')
            complete_cmd = [
                'complete', '--command', 'youtube-dl', '--long-option',
                long_option
            ]
            if option._short_opts:
                complete_cmd += [
                    '--short-option', option._short_opts[0].strip('-')
                ]
            if option.help != optparse.SUPPRESS_HELP:
                complete_cmd += ['--description', option.help]
            complete_cmd.extend(EXTRA_ARGS.get(long_option, []))
            commands.append(shell_quote(complete_cmd))

    with open(FISH_COMPLETION_TEMPLATE) as f:
        template = f.read()
    filled_template = template.replace('{{commands}}', '\n'.join(commands))
    with open(FISH_COMPLETION_FILE, 'w') as f:
        f.write(filled_template)


parser = youtube_dl.parseOpts()[0]
build_completion(parser)