common/btrfs: Improve _require_btrfs_command
authorMarcos Paulo de Souza <mpdesouza@suse.com>
Fri, 7 Feb 2020 13:19:50 +0000 (10:19 -0300)
committerEryu Guan <guaneryu@gmail.com>
Mon, 17 Feb 2020 13:05:57 +0000 (21:05 +0800)
Now _require_btrfs_command can also check for subfuntion options, like
"subvolume delete --subvolid".

Signed-off-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
common/btrfs

index 85b33e4c067a020ea5f0d5043a9b25c02f1d40ad..7971c046e3892ccf4233904a8a1fa1a60d69f8fa 100644 (file)
@@ -12,12 +12,14 @@ _btrfs_get_subvolid()
 
 # _require_btrfs_command <command> [<subcommand>|<option>]
 # We check for btrfs and (optionally) features of the btrfs command
-# It can both subfunction like "inspect-internal dump-tree" and
-# options like "check --qgroup-report"
+# This function support both subfunction like "inspect-internal dump-tree" and
+# options like "check --qgroup-report", and also subfunction options like
+# "subvolume delete --subvolid"
 _require_btrfs_command()
 {
        local cmd=$1
        local param=$2
+       local param_arg=$3
        local safe_param
 
        _require_command "$BTRFS_UTIL_PROG" btrfs
@@ -39,6 +41,13 @@ _require_btrfs_command()
 
        $BTRFS_UTIL_PROG $cmd $param --help &> /dev/null
        [ $? -eq 0 ] || _notrun "$BTRFS_UTIL_PROG too old (must support $cmd $param)"
+
+       test -z "$param_arg" && return
+
+       # replace leading "-"s for grep
+       safe_param=$(echo $param_arg | sed 's/^-*//')
+       $BTRFS_UTIL_PROG $cmd $param --help | grep -wq $safe_param || \
+               _notrun "$BTRFS_UTIL_PROG too old (must support $cmd $param $param_arg)"
 }
 
 # Require extra check on btrfs qgroup numbers