inspec/lib/vulcano/shell.rb
2015-10-10 01:24:39 +02:00

59 lines
1.3 KiB
Ruby

# encoding: utf-8
# author: Dominik Richter
# author: Christoph Hartmann
module Vulcano::Shell
def self.start(runner)
# load and configure pry
require 'pry'
configure_pry
# store context to run commands in this context
@ctx = runner.create_context
runner.add_content('binding.pry', __FILE__, __LINE__, @ctx)
runner.run
end
def self.configure_pry
# Remove all hooks and checks
Pry.hooks.clear_all
# Add the help command
Pry::Commands.block_command 'usage', 'Show examples' do
Vulcano::Shell.usage
end
# Add a help menu as the default intro
Pry.hooks.add_hook(:before_session, :intro) do
intro
end
end
def self.mark(x)
"\033[1m#{x}\033[0m"
end
def self.intro
puts 'Welcome to the interactive Vulcano Shell'
puts "To find out how to use it, type: #{mark 'usage'}"
puts
end
def self.usage
puts <<EOF
Welcome to the interactive Vulcano Shell.
You can use resources in this environment to test the target machine.
For example:
command('uname -a').stdout
file('/proc/cpuinfo').content
You are currently running on:
OS family: #{mark @ctx.profile_context.os[:family] || 'unknown'}
OS release: #{mark @ctx.profile_context.os[:release] || 'unknown'}
EOF
end
end