Skip to content

Commit

Permalink
add fish shell completion
Browse files Browse the repository at this point in the history
  • Loading branch information
folliehiyuki committed Mar 4, 2022
1 parent f1cab23 commit cb1ef51
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 1 deletion.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ test:
executable:
scripts/pyinstaller.py

completion: data/completion/gallery-dl data/completion/_gallery-dl
completion: data/completion/gallery-dl data/completion/_gallery-dl data/completion/gallery-dl.fish

man: data/man/gallery-dl.1 data/man/gallery-dl.conf.5

Expand All @@ -46,3 +46,6 @@ data/completion/gallery-dl: gallery_dl/option.py scripts/completion_bash.py

data/completion/_gallery-dl: gallery_dl/option.py scripts/completion_zsh.py
$(PYTHON) scripts/completion_zsh.py

data/completion/gallery-dl.fish: gallery_dl/option.py scripts/completion_fish.py
$(PYTHON) scripts/completion_fish.py
46 changes: 46 additions & 0 deletions scripts/completion_fish.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.

"""Generate fish completion script from gallery-dl's argument parser"""

import util
from gallery_dl import option


TEMPLATE = """complete -c gallery-dl -x
%(opts)s
"""

opts = []
for action in option.build_parser()._actions:
if not action.option_strings:
continue

opt = "complete -c gallery-dl"

if action.metavar:
if action.metavar == "FILE":
opt += " -r -F"
elif action.metavar == "PATH":
opt += " -x -a '(__fish_complete_directories)'"
else:
opt += " -x"

if len(action.option_strings) == 1:
opt += " -l '" + action.option_strings[0].replace("--", "", 1) + "'"
else:
opt += " -s '" + action.option_strings[0].replace(
"-", "", 1) + "' -l '" + action.option_strings[1].replace(
"--", "", 1) + "'"

opt += " -d '" + action.help.replace("'", '"') + "'"

opts.append(opt)

PATH = util.path("data/completion/gallery-dl.fish")
with open(PATH, "w", encoding="utf-8") as file:
file.write(TEMPLATE % {"opts": "\n".join(opts)})
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ def check_file(fname):
for (path, files) in [
("share/bash-completion/completions", ["data/completion/gallery-dl"]),
("share/zsh/site-functions" , ["data/completion/_gallery-dl"]),
("share/fish/vendor_completions.d" , ["data/completion/gallery-dl.fish"]),
("share/man/man1" , ["data/man/gallery-dl.1"]),
("share/man/man5" , ["data/man/gallery-dl.conf.5"]),
]
Expand Down

0 comments on commit cb1ef51

Please sign in to comment.