All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vishal Verma <vishal.l.verma@intel.com>
To: linux-nvdimm@lists.01.org
Subject: [ndctl PATCH] ndctl: make completion smarter wrt mode/type/idle options
Date: Mon, 27 Jun 2016 14:43:38 -0600	[thread overview]
Message-ID: <1467060218-20256-1-git-send-email-vishal.l.verma@intel.com> (raw)

Add three new 'filters' for mode, type, and idle.

'mode' and 'type' work with each other to prevent a blk namespace from
showing modes like 'dax' or 'memory', or if those modes are specified,
then limiting 'type' to 'pmem'.

Also show completions for --map= only if mode is 'memory'.

For idle filtering (typically relevant for 'ndctl list', only show idle
{namespaces, regions} in the completion id a --idle has been specified
on the command line so far. This makes sense because trying to list an
idle namespace without --idle (even if you know that is the one you
want) won't show any output withot --idle.

Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
---

Applies on top of the last bash-completion patch:
"ndctl: bash completion updates for the --namespace= filter"

 contrib/ndctl | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/contrib/ndctl b/contrib/ndctl
index b7a82fc..15ca3bf 100755
--- a/contrib/ndctl
+++ b/contrib/ndctl
@@ -110,6 +110,8 @@ __ndctl_get_regions()
 {
 	local opts="--regions $*"
 	[ -n "$bus_filter" ] && opts="$opts --bus=$bus_filter"
+	[ -n "$type_filter" ] && opts="$opts --type=$type_filter"
+	[ -n "$idle_filter" ] && opts="$opts --idle"
 	echo "$(ndctl list $opts | grep -E "^\s*\"dev\":" | cut -d\" -f4)"
 }
 
@@ -118,6 +120,8 @@ __ndctl_get_ns()
 	opts="--namespaces $*"
 	[ -n "$bus_filter" ] && opts="$opts --bus=$bus_filter"
 	[ -n "$reg_filter" ] && opts="$opts --bus=$reg_filter"
+	[ -n "$type_filter" ] && opts="$opts --type=$type_filter"
+	[ -n "$idle_filter" ] && opts="$opts --idle"
 	echo "$(ndctl list $opts | grep -E "^\s*\"dev\":" | cut -d\" -f4)"
 }
 
@@ -147,7 +151,7 @@ __ndctl_comp_options()
 			opts=$(__ndctl_get_dimms)
 			;;
 		--namespace)
-			opts=$(__ndctl_get_ns -i)
+			opts=$(__ndctl_get_ns)
 			;;
 		--reconfig)
 			# It is ok to reconfig disabled namespaces
@@ -155,12 +159,20 @@ __ndctl_comp_options()
 			;;
 		--type)
 			opts="pmem blk"
+			if [[ "$mode_filter" == @(dax|memory) ]]; then
+				opts="pmem"
+			fi
 			;;
 		--mode)
 			opts="raw sector memory dax"
+			if [[ "$type_filter" == "blk" ]]; then
+				opts="raw sector"
+			fi
 			;;
 		--map)
-			opts="mem dev"
+			if [[ "$mode_filter" == "memory" ]]; then
+				opts="mem dev"
+			fi
 			;;
 		*)
 			return
@@ -224,13 +236,13 @@ __ndctl_prev_skip_opts ()
 	done
 }
 
-bus_filter=''
-reg_filter=''
-
 __ndctl_init_filters()
 {
 	bus_filter=''
 	reg_filter=''
+	type_filter=''
+	idle_filter=''
+	mode_filter=''
 
 	for __word in "${words[@]}"; do
 		if [[ "$__word" =~ --bus=(.*) ]]; then
@@ -245,6 +257,15 @@ __ndctl_init_filters()
 			local regions=$(__ndctl_get_regions -i)
 			[[ "$regions" == *"$reg_filter"* ]] || reg_filter=''
 		fi
+		if [[ "$__word" =~ --idle ]]; then
+			idle_filter="1"
+		fi
+		if [[ "$__word" =~ --type=(.*) ]]; then
+			type_filter="${BASH_REMATCH[1]}"
+		fi
+		if [[ "$__word" =~ --mode=(.*) ]]; then
+			mode_filter="${BASH_REMATCH[1]}"
+		fi
 	done
 }
 
-- 
2.5.5

_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

             reply	other threads:[~2016-06-27 20:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-27 20:43 Vishal Verma [this message]
2016-06-27 21:13 ` [ndctl PATCH] ndctl: make completion smarter wrt mode/type/idle options Dan Williams
2016-06-27 21:18   ` Verma, Vishal L

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1467060218-20256-1-git-send-email-vishal.l.verma@intel.com \
    --to=vishal.l.verma@intel.com \
    --cc=linux-nvdimm@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.