Simplify and fix __fish_is_zfs_feature_enabled (#9939)

* Simplify and fix `__fish_is_zfs_feature_enabled`

Previously `__fish_is_zfs_feature_enabled` was doing
`<whitespace>$queried_feature<whitespace>` pattern matching which
was skipping the state part expected in the follow-up checking code.

Passing the dataset/snapshot in a `target` argument is pointless. As
none of the existing code attempts to do this plus it is also a
private function (`__` prefix), rename of the argument and removal
of extra text replacement should not be considered a breaking change.

* Changed the `&& \` into `|| return`

* Run `fish_indent`
This commit is contained in:
Gabriel Górski 2023-08-09 17:28:01 +02:00 committed by GitHub
parent 27a11ef7fe
commit 21ddfabb8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,17 +1,7 @@
function __fish_is_zfs_feature_enabled -a feature target -d "Returns 0 if the given ZFS feature is available or enabled for the given full-path target (zpool or dataset), or any target if none given" function __fish_is_zfs_feature_enabled \
type -q zpool -a feature pool \
or return -d "Returns 0 if the given ZFS pool feature is active or enabled for the given pool or for any pool if none specified"
set -l pool (string replace -r '/.*' '' -- $target)
set -l feature_name "" type -q zpool || return
if test -z "$pool" zpool get -H -o value $feature $pool 2>/dev/null | string match -rq '^(enabled|active)$'
set feature_name (zpool get -H all 2>/dev/null | string match -r "\s$feature\s")
else
set feature_name (zpool get -H all $pool 2>/dev/null | string match -r "$pool\s$feature\s")
end
if test $status -ne 0 # No such feature
return 1
end
set -l state (echo $feature_name | cut -f3)
string match -qr '(active|enabled)' -- $state
return $status
end end