macOS の bash で mkdocs のコマンドを補完する
MkDocs で作成したコンテンツをローカルで確認する際、シェルから mkdocs serve
を手打ちしていましたが、サブコマンドをフルスペルで手入力するのが面倒なので bash 用の補完ファイルを作成してみました。
検証環境
対象 |
バージョン |
macOS |
14.2.1 |
bash |
5.2.26 |
bash-completion@2 |
2.11 |
mkdocs |
1.5.3 |
mkdcos のヘルプ
mkdocs のサブコマンドを確認する為、ヘルプを表示させます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | $ mkdocs --help
Usage: mkdocs [OPTIONS] COMMAND [ARGS]...
MkDocs - Project documentation with Markdown.
Options:
-V, --version Show the version and exit.
-q, --quiet Silence warnings
-v, --verbose Enable verbose output
--color / --no-color Force enable or disable color and wrapping for the output. Default is auto-detect.
-h, --help Show this message and exit.
Commands:
build Build the MkDocs documentation
get-deps Show required PyPI packages inferred from plugins in mkdocs.yml
gh-deploy Deploy your documentation to GitHub Pages
new Create a new MkDocs project
serve Run the builtin development server
|
サブコマンドの候補は以下の 5 つ、存在することが分かります。
- build
- get-deps
- gh-deploy
- new
- serve
補完用ファイルの作成
以下の内容で /opt/homebrew/etc/bash_completion.d/mkdocs
というファイルを新規作成しました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 | _mkdocs() {
local cur prev words cword split
_init_completion || return
local defaultIFS=$' \t\n'
local IFS=$defaultIFS
case $cword in
1)
COMPREPLY=( $(compgen -W 'build get-deps gh-deploy new serve' -- "$cur") )
;;
*)
case ${words[1]} in
build)
;;
get-deps)
;;
gh-deploy)
;;
new)
;;
serve)
;;
esac
;;
esac
}
complete -F _mkdocs mkdocs
|
作成後はファイルに実行権限を付与します。
| chmod 755 /opt/homebrew/etc/bash_completion.d/mkdocs
|
新規にシェルを起動します。 これで mkdocs s[TAB]
が mkdocs serve
に補完されるようになりました。