summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2018-09-07 13:28:57 -0400
committerAndrew Gallant <jamslam@gmail.com>2018-09-07 14:00:22 -0400
commitb7a456ae83dc0d065fe6f3d1d489e6cf71ba70f8 (patch)
tree528d6160be4cab032ebb60445f985f6d977b1a11
parentd14f0b37d651b276fcd6a6938b0da918b17f3326 (diff)
deb: add completions
This commit adds Bash, zsh and fish completions to the Debian binary package. Fixes #1032
-rw-r--r--Cargo.toml8
-rwxr-xr-xci/build_deb.sh22
2 files changed, 23 insertions, 7 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 7a40ae5c..a7ccd5bd 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -91,9 +91,13 @@ assets = [
["FAQ.md", "usr/share/doc/ripgrep/FAQ", "644"],
# The man page is automatically generated by ripgrep's build process, so
# 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.
- ["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 = """\
ripgrep (rg) recursively searches your current directory for a regex pattern.
diff --git a/ci/build_deb.sh b/ci/build_deb.sh
index eb516191..4812b47e 100755
--- a/ci/build_deb.sh
+++ b/ci/build_deb.sh
@@ -18,14 +18,26 @@ fi
# '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,
-# we force a debug build, copy out the man page produced from that build, put
-# it into a predictable location and then build the deb, which knows where to
-# look.
+# we force a debug build, copy out the man page (and shell completions)
+# produced from that build, put it into a predictable location and then build
+# the deb, which knows where to look.
-mkdir -p deployment
+DEPLOY_DIR=deployment/deb
+mkdir -p "$DEPLOY_DIR"
cargo build
+
+# Find and copy man page.
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
# PCRE2 installed, so just do a static build.
PCRE2_SYS_STATIC=1 cargo deb