mirror of
https://github.com/inspec/inspec
synced 2024-11-27 23:20:33 +00:00
28fb05ad97
Signed-off-by: Dominik Richter <dominik.richter@gmail.com>
66 lines
1.3 KiB
Ruby
66 lines
1.3 KiB
Ruby
# encoding: utf-8
|
|
# author: Dominik Richter
|
|
# author: Christoph Hartmann
|
|
|
|
module Vulcano
|
|
class Shell
|
|
def initialize(runner)
|
|
@runner = runner
|
|
# load and configure pry
|
|
require 'pry'
|
|
configure_pry
|
|
end
|
|
|
|
def start
|
|
# store context to run commands in this context
|
|
@runner.add_content('binding.pry', __FILE__, __LINE__)
|
|
@runner.run
|
|
end
|
|
|
|
def configure_pry
|
|
# Remove all hooks and checks
|
|
Pry.hooks.clear_all
|
|
that = self
|
|
|
|
# Add the help command
|
|
Pry::Commands.block_command 'usage', 'Show examples' do
|
|
that.usage
|
|
end
|
|
|
|
# Add a help menu as the default intro
|
|
Pry.hooks.add_hook(:before_session, :intro) do
|
|
intro
|
|
end
|
|
end
|
|
|
|
def mark(x)
|
|
"\033[1m#{x}\033[0m"
|
|
end
|
|
|
|
def intro
|
|
puts 'Welcome to the interactive Vulcano Shell'
|
|
puts "To find out how to use it, type: #{mark 'usage'}"
|
|
puts
|
|
end
|
|
|
|
def usage
|
|
ctx = @runner.backend
|
|
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.os[:family] || 'unknown'}
|
|
OS release: #{mark ctx.os[:release] || 'unknown'}
|
|
|
|
EOF
|
|
end
|
|
end
|
|
end
|