deb: add completions

This commit adds Bash, zsh and fish completions to the Debian binary
package.

Fixes #1032
This commit is contained in:
Andrew Gallant 2018-09-07 13:28:57 -04:00
parent 71fb43e51e
commit c12acd7396
No known key found for this signature in database
GPG Key ID: B2E3A4923F8B0D44
2 changed files with 23 additions and 7 deletions

View File

@ -91,9 +91,13 @@ assets = [
["FAQ.md", "usr/share/doc/ripgrep/FAQ", "644"], ["FAQ.md", "usr/share/doc/ripgrep/FAQ", "644"],
# The man page is automatically generated by ripgrep's build process, so # The man page is automatically generated by ripgrep's build process, so
# this file isn't actually commited. Instead, to create a dpkg, either # this file isn't actually commited. Instead, to create a dpkg, either
# create a deployment directory and copy the man page to it, or use the # create a deployment/deb directory and copy the man page to it, or use the
# 'ci/build_deb.sh' script. # 'ci/build_deb.sh' script.
["deployment/rg.1", "usr/share/man/man1/rg.1", "644"], ["deployment/deb/rg.1", "usr/share/man/man1/rg.1", "644"],
# Similarly for shell completions.
["deployment/deb/rg.bash", "usr/share/bash-completion/completions/rg", "644"],
["deployment/deb/rg.fish", "usr/share/fish/completions/rg.fish", "644"],
["deployment/deb/_rg", "usr/share/zsh/vendor-completions/", "644"],
] ]
extended-description = """\ extended-description = """\
ripgrep (rg) recursively searches your current directory for a regex pattern. ripgrep (rg) recursively searches your current directory for a regex pattern.

View File

@ -18,14 +18,26 @@ fi
# 'cargo deb' does not seem to provide a way to specify an asset that is # 'cargo deb' does not seem to provide a way to specify an asset that is
# created at build time, such as ripgrep's man page. To work around this, # created at build time, such as ripgrep's man page. To work around this,
# we force a debug build, copy out the man page produced from that build, put # we force a debug build, copy out the man page (and shell completions)
# it into a predictable location and then build the deb, which knows where to # produced from that build, put it into a predictable location and then build
# look. # the deb, which knows where to look.
mkdir -p deployment DEPLOY_DIR=deployment/deb
mkdir -p "$DEPLOY_DIR"
cargo build cargo build
# Find and copy man page.
manpage="$(find ./target/debug -name rg.1 -print0 | xargs -0 ls -t | head -n1)" manpage="$(find ./target/debug -name rg.1 -print0 | xargs -0 ls -t | head -n1)"
cp "$manpage" deployment/ cp "$manpage" "$DEPLOY_DIR/"
# Do the same for shell completions.
compbash="$(find ./target/debug -name rg.bash -print0 | xargs -0 ls -t | head -n1)"
cp "$compbash" "$DEPLOY_DIR/"
compfish="$(find ./target/debug -name rg.fish -print0 | xargs -0 ls -t | head -n1)"
cp "$compfish" "$DEPLOY_DIR/"
compzsh="complete/_rg"
cp "$compzsh" "$DEPLOY_DIR/"
# Since we're distributing the dpkg, we don't know whether the user will have # Since we're distributing the dpkg, we don't know whether the user will have
# PCRE2 installed, so just do a static build. # PCRE2 installed, so just do a static build.
PCRE2_SYS_STATIC=1 cargo deb PCRE2_SYS_STATIC=1 cargo deb