diff options
author | kwadronaut <kwadronaut@leap.se> | 2015-11-12 10:00:27 +0100 |
---|---|---|
committer | kwadronaut <kwadronaut@leap.se> | 2015-11-12 10:00:27 +0100 |
commit | 92cc2b1118e98a4fb086d7c62a140dbfc845f4b0 (patch) | |
tree | 92896619c0cf4ace177cecfbdea6cbbbb9bc8419 /lib/leap_cli/commands/util.rb | |
parent | 81467100826ad95266a4c29b11a2ecef759dd782 (diff) | |
parent | 7d0b6b25e49a1ccb70c4f502f7dfc58878b900cc (diff) |
Merge remote-tracking branch 'origin/develop' into HEAD
Diffstat (limited to 'lib/leap_cli/commands/util.rb')
-rw-r--r-- | lib/leap_cli/commands/util.rb | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/leap_cli/commands/util.rb b/lib/leap_cli/commands/util.rb new file mode 100644 index 00000000..c1da570e --- /dev/null +++ b/lib/leap_cli/commands/util.rb @@ -0,0 +1,50 @@ +module LeapCli; module Commands + + extend self + extend LeapCli::Util + extend LeapCli::Util::RemoteCommand + + def path(name) + Path.named_path(name) + end + + # + # keeps prompting the user for a numbered choice, until they pick a good one or bail out. + # + # block is yielded and is responsible for rendering the choices. + # + def numbered_choice_menu(msg, items, &block) + while true + say("\n" + msg + ':') + items.each_with_index &block + say("q. quit") + index = ask("number 1-#{items.length}> ") + if index.empty? + next + elsif index =~ /q/ + bail! + else + i = index.to_i - 1 + if i < 0 || i >= items.length + bail! + else + return i + end + end + end + end + + + def parse_node_list(nodes) + if nodes.is_a? Config::Object + Config::ObjectList.new(nodes) + elsif nodes.is_a? Config::ObjectList + nodes + elsif nodes.is_a? String + manager.filter!(nodes) + else + bail! "argument error" + end + end + +end; end |