diff options
-rw-r--r-- | lib/leap_cli/commands/inspect.rb | 62 |
1 files changed, 57 insertions, 5 deletions
diff --git a/lib/leap_cli/commands/inspect.rb b/lib/leap_cli/commands/inspect.rb index 1856ad6..97d0b20 100644 --- a/lib/leap_cli/commands/inspect.rb +++ b/lib/leap_cli/commands/inspect.rb @@ -30,16 +30,39 @@ module LeapCli; module Commands log 2, "file is of type '#{ftype}'" if FTYPE_MAP[ftype] FTYPE_MAP[ftype] - elsif ftype == "ASCII text" - nil + elsif File.extname(object) == ".json" + full_path = File.expand_path(object, Dir.pwd) + if path_match?(:node_config, full_path) + :inspect_node + elsif path_match?(:service_config, full_path) + :inspect_service + elsif path_match?(:tag_config, full_path) + :inspect_tag + elsif path_match?(:provider_config, full_path) + :inspect_provider + elsif path_match?(:common_config, full_path) + :inspect_common + end end elsif manager.nodes[object] :inspect_node + elsif manager.services[object] + :inspect_service + elsif manager.tags[object] + :inspect_tag + elsif object == "common" + :inspect_common + elsif object == "provider" + :inspect_provider else nil end end + # + # inspectors + # + def inspect_x509_key(file_path, options) assert_bin! 'openssl' puts assert_run! 'openssl rsa -in %s -text -check' % file_path @@ -59,9 +82,38 @@ module LeapCli; module Commands #def inspect_ssh_pub_key(file_path) #end - def inspect_node(node_name, options) - node = manager.nodes[node_name] - puts node.dump_json + def inspect_node(arg, options) + inspect_json(arg, options) {|name| manager.nodes[name] } + end + + def inspect_service(arg, options) + inspect_json(arg, options) {|name| manager.services[name] } + end + + def inspect_tag(arg, options) + inspect_json(arg, options) {|name| manager.tags[name] } + end + + def inspect_provider(arg, options) + inspect_json(arg, options) {|name| manager.provider } + end + + def inspect_common(arg, options) + inspect_json(arg, options) {|name| manager.common } + end + + # + # helpers + # + + def inspect_json(arg, options) + name = File.basename(arg).sub(/\.json$/, '') + config = yield name + puts config.dump_json + end + + def path_match?(path_symbol, path) + Dir.glob(Path.named_path([path_symbol, '*'])).include?(path) end end; end |