From c26043748e272c02c0002b001fbb21bc88fa5c73 Mon Sep 17 00:00:00 2001 From: Jakub Panek <me@panekj.dev> Date: Thu, 22 Jun 2023 04:04:50 +0000 Subject: [PATCH] abuild: fix completions to vendor dir, warn on incorrect dir Signed-off-by: Jakub Panek <me@panekj.dev> --- abuild.in | 14 +++++++++++++- tests/abuild_test | 45 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/abuild.in b/abuild.in index 00463b15..e9ccc42d 100755 --- a/abuild.in +++ b/abuild.in @@ -939,6 +939,10 @@ prepare_subpackages() { warning2 "Add \$pkgname-zsh-completion to subpackages" fi if [ -d "$pkgdir"/usr/share/fish/completions ]; then + warning "Found /usr/share/fish/completions" + warning2 "fish completions for programs should be located in /usr/share/fish/vendor_completions.d" + fi + if [ -d "$pkgdir"/usr/share/fish/vendor_completions.d ]; then warning "Found /usr/share/fish/completions" warning2 "Add \$pkgname-fish-completion to subpackages" fi @@ -2179,7 +2183,15 @@ default_fishcomp() { install_if="$pkgname=$pkgver-r$pkgrel fish" cd "$pkgdir" || return 0 - amove usr/share/fish/completions + + if [ -d usr/share/fish/vendor_completions.d ]; then + amove usr/share/fish/vendor_completions.d + fi + + if [ -d usr/share/fish/completions ]; then + warning "fish completions for programs should be in /usr/share/fish/vendor_completions.d" + amove usr/share/fish/completions + fi } fishcomp() { diff --git a/tests/abuild_test b/tests/abuild_test index 80264b24..b7c431d6 100755 --- a/tests/abuild_test +++ b/tests/abuild_test @@ -44,7 +44,8 @@ init_tests \ abuild_setcap_binary_with_option \ abuild_command_provides \ abuild_gocache_dir \ - abuild_cargo_home_dir + abuild_cargo_home_dir \ + abuild_fish_comp_split export ABUILD_SHAREDIR=$(atf_get_srcdir)/.. export ABUILD_CONF=/dev/null @@ -1018,3 +1019,45 @@ abuild_cargo_home_dir_body() { -o match:"dir:.*/tmp/cargo" \ abuild prepare build } + +abuild_fish_comp_split_body() { + init_keys + mkdir fish-split-dir + cd fish-split-dir + cat >APKBUILD<<-EOF + # Maintainer: Joe User <juser@example.com> + pkgname="fish-split-dir" + pkgver="1.0" + pkgrel=0 + pkgdesc="Dummy test package" + url="https://gitlab.alpinelinux.org/alpine/aports" + arch="noarch" + license="MIT" + prepare() { + mkdir -p "\$builddir" + } + package() { + mkdir -p "\$pkgdir"/usr/share/fish/completions/ + mkdir -p "\$pkgdir"/usr/share/fish/vendor_completions.d/ + echo "comp" > "\$pkgdir"/usr/share/fish/completions/comp.fish + echo "comp" > "\$pkgdir"/usr/share/fish/vendor_completions.d/comp.fish + } + EOF + # test that there is a warning for the legacy dir existing + atf_check -s exit:0 \ + -e match:"fish completions for programs should be located in /usr/share/fish/vendor_completions.d" \ + abuild prepare build rootpkg + + # now add the correct subpackage + echo 'subpackages="$pkgname-fish-completion"' >> APKBUILD + abuild clean prepare build rootpkg + + if ! [ -d pkg/fish-split-dir-fish-completion/usr/share/fish/completions ]; then + echo "missing old dir" + exit 1 + fi + if ! [ -d pkg/fish-split-dir-fish-completion/usr/share/fish/vendor_completions.d ]; then + echo "missing new dir" + exit 1 + fi +} -- GitLab