mirror of https://github.com/ytdl-org/youtube-dl
parent
eb3bd7ba8d
commit
56d1912f1d
@ -0,0 +1,5 @@ |
||||
|
||||
{{commands}} |
||||
|
||||
|
||||
complete --command youtube-dl --arguments ":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory" |
@ -0,0 +1,48 @@ |
||||
#!/usr/bin/env python |
||||
from __future__ import unicode_literals |
||||
|
||||
import optparse |
||||
import os |
||||
from os.path import dirname as dirn |
||||
import sys |
||||
|
||||
sys.path.append(dirn(dirn((os.path.abspath(__file__))))) |
||||
import youtube_dl |
||||
from youtube_dl.utils import shell_quote |
||||
|
||||
FISH_COMPLETION_FILE = 'youtube-dl.fish' |
||||
FISH_COMPLETION_TEMPLATE = 'devscripts/fish-completion.in' |
||||
|
||||
EXTRA_ARGS = { |
||||
'recode-video': ['--arguments', 'mp4 flv ogg webm mkv', '--exclusive'], |
||||
|
||||
# Options that need a file parameter |
||||
'download-archive': ['--require-parameter'], |
||||
'cookies': ['--require-parameter'], |
||||
'load-info': ['--require-parameter'], |
||||
'batch-file': ['--require-parameter'], |
||||
} |
||||
|
||||
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('-') |
||||
help_msg = shell_quote([option.help]) |
||||
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) |
Loading…
Reference in new issue