puppet-repl 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.travis.yml +8 -1
- data/CHANGELOG.md +17 -1
- data/Gemfile +3 -5
- data/Gemfile.lock +16 -19
- data/README.md +96 -45
- data/VERSION +1 -1
- data/lib/awesome_print/ext/awesome_puppet.rb +5 -4
- data/lib/puppet-repl/cli.rb +96 -64
- data/lib/puppet-repl/support/environment.rb +6 -6
- data/lib/puppet-repl/support/errors.rb +69 -0
- data/lib/puppet-repl/support/facts.rb +9 -0
- data/lib/puppet-repl/support/input_responders.rb +62 -16
- data/lib/puppet-repl/support/node.rb +72 -7
- data/lib/puppet-repl/support/play.rb +33 -11
- data/lib/puppet-repl/support/scope.rb +17 -13
- data/lib/puppet-repl/support.rb +29 -0
- data/lib/puppet-repl.rb +34 -0
- data/lib/version.rb +1 -1
- data/puppet-repl.gemspec +23 -13
- data/resources/classes.png +0 -0
- data/resources/classification.png +0 -0
- data/resources/command_line_node.png +0 -0
- data/resources/functions.png +0 -0
- data/resources/hiera.png +0 -0
- data/resources/set_node.png +0 -0
- data/resources/tab_complete.png +0 -0
- data/resources/variables.png +0 -0
- data/spec/fixtures/invalid_node_obj.yaml +8 -0
- data/spec/fixtures/node_obj.yaml +315 -0
- data/spec/prepl_spec.rb +16 -0
- data/spec/puppet-repl_spec.rb +301 -51
- data/spec/spec_helper.rb +17 -15
- data/spec/support_spec.rb +114 -2
- metadata +32 -34
@@ -0,0 +1,69 @@
|
|
1
|
+
module PuppetRepl
|
2
|
+
module Exception
|
3
|
+
class Error < StandardError
|
4
|
+
attr_accessor :data
|
5
|
+
def initialize(data={})
|
6
|
+
@data = data
|
7
|
+
end
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
class FatalError < Error
|
12
|
+
end
|
13
|
+
|
14
|
+
class ConnectError < Error
|
15
|
+
def message
|
16
|
+
out = <<-EOF
|
17
|
+
#{data[:message]}
|
18
|
+
EOF
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class UndefinedNode < FatalError
|
23
|
+
def message
|
24
|
+
out = <<-EOF
|
25
|
+
Cannot find node with name: #{data[:name]} on remote server
|
26
|
+
EOF
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class TimeOutError < Error
|
31
|
+
#Errno::ETIMEDOUT
|
32
|
+
end
|
33
|
+
|
34
|
+
class NoClassError < FatalError
|
35
|
+
def message
|
36
|
+
out = <<-EOF
|
37
|
+
#{data[:message]}
|
38
|
+
You are missing puppet classes that are required for compilation.
|
39
|
+
Please ensure these classes are installed on this machine in any of the following paths:
|
40
|
+
#{data[:default_modules_paths]}
|
41
|
+
EOF
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class NodeDefinitionError < FatalError
|
46
|
+
def message
|
47
|
+
out = <<-EOF
|
48
|
+
You are missing a default node definition in your site.pp that is required for compilation.
|
49
|
+
Please ensure you have at least the following default node definition
|
50
|
+
node default {
|
51
|
+
# include classes here
|
52
|
+
}
|
53
|
+
in your #{data[:default_site_manifest]} file.
|
54
|
+
EOF
|
55
|
+
out.fatal
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class AuthError < FatalError
|
60
|
+
def message
|
61
|
+
out = <<-EOF
|
62
|
+
#{data[:message]}
|
63
|
+
You will need to edit your auth.conf or conf.d/auth.conf (puppetserver) to allow node calls.
|
64
|
+
EOF
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
@@ -22,6 +22,15 @@ module PuppetRepl
|
|
22
22
|
end
|
23
23
|
@facts
|
24
24
|
end
|
25
|
+
|
26
|
+
def server_facts
|
27
|
+
data = {}
|
28
|
+
data["servername"] = Facter.value("fqdn")
|
29
|
+
data['serverip'] = Facter.value("ipaddress")
|
30
|
+
data["serverversion"] = Puppet.version.to_s
|
31
|
+
data
|
32
|
+
end
|
33
|
+
|
25
34
|
end
|
26
35
|
end
|
27
36
|
end
|
@@ -1,41 +1,83 @@
|
|
1
1
|
module PuppetRepl
|
2
2
|
module Support
|
3
3
|
module InputResponders
|
4
|
+
|
5
|
+
def static_responder_list
|
6
|
+
["exit", "functions", "classification","vars", "krt", "facts",
|
7
|
+
"resources", "classes", "play","reset", "help"
|
8
|
+
]
|
9
|
+
end
|
10
|
+
|
4
11
|
def help(args=[])
|
5
12
|
PuppetRepl::Cli.print_repl_desc
|
6
13
|
end
|
7
14
|
|
15
|
+
def handle_set(input)
|
16
|
+
output = ''
|
17
|
+
args = input.split(' ')
|
18
|
+
args.shift # throw away the set
|
19
|
+
case args.shift
|
20
|
+
when /node/
|
21
|
+
if name = args.shift
|
22
|
+
output = "Resetting to use node #{name}"
|
23
|
+
reset
|
24
|
+
set_remote_node_name(name)
|
25
|
+
else
|
26
|
+
out_buffer.puts "Must supply a valid node name"
|
27
|
+
end
|
28
|
+
when /loglevel/
|
29
|
+
if level = args.shift
|
30
|
+
@log_level = level
|
31
|
+
set_log_level(level)
|
32
|
+
output = "loglevel #{Puppet::Util::Log.level} is set"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
output
|
36
|
+
end
|
37
|
+
|
8
38
|
def facts(args=[])
|
9
|
-
|
10
|
-
|
11
|
-
ap(vars, {:sort_keys => true, :indent => -1})
|
39
|
+
variables = node.facts.values
|
40
|
+
variables.ai({:sort_keys => true, :indent => -1})
|
12
41
|
end
|
13
42
|
|
14
43
|
def functions(args=[])
|
15
|
-
|
44
|
+
filter = args.first || ''
|
45
|
+
function_map.keys.sort.grep(/^#{Regexp.escape(filter)}/)
|
16
46
|
end
|
17
47
|
|
18
48
|
def vars(args=[])
|
19
49
|
# remove duplicate variables that are also in the facts hash
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
50
|
+
variables = scope.to_hash.delete_if {| key, value | node.facts.values.key?(key) }
|
51
|
+
variables['facts'] = 'removed by the puppet-repl' if variables.key?('facts')
|
52
|
+
output = "Facts were removed for easier viewing".ai + "\n"
|
53
|
+
output += variables.ai({:sort_keys => true, :indent => -1})
|
24
54
|
end
|
25
55
|
|
26
56
|
def environment(args=[])
|
27
|
-
|
57
|
+
"Puppet Environment: #{puppet_env_name}"
|
28
58
|
end
|
29
59
|
|
30
60
|
def reset(args=[])
|
31
61
|
set_scope(nil)
|
32
|
-
|
33
|
-
|
62
|
+
set_remote_node_name(nil)
|
63
|
+
set_node(nil)
|
64
|
+
set_facts(nil)
|
34
65
|
set_log_level(log_level)
|
35
66
|
end
|
36
67
|
|
68
|
+
def set_log_level(level)
|
69
|
+
Puppet::Util::Log.level = level.to_sym
|
70
|
+
buffer_log = Puppet::Util::Log.newdestination(:buffer)
|
71
|
+
if buffer_log
|
72
|
+
# if this is already set the buffer_log is nil
|
73
|
+
buffer_log.out_buffer = out_buffer
|
74
|
+
buffer_log.err_buffer = out_buffer
|
75
|
+
end
|
76
|
+
nil
|
77
|
+
end
|
78
|
+
|
37
79
|
def krt(args=[])
|
38
|
-
|
80
|
+
known_resource_types.ai({:sort_keys => true, :indent => -1})
|
39
81
|
end
|
40
82
|
|
41
83
|
def play(args=[])
|
@@ -44,20 +86,24 @@ module PuppetRepl
|
|
44
86
|
play_back(config)
|
45
87
|
end
|
46
88
|
|
89
|
+
def classification(args=[])
|
90
|
+
node.classes.ai
|
91
|
+
end
|
92
|
+
|
47
93
|
def resources(args=[])
|
48
94
|
res = scope.compiler.catalog.resources.map do |res|
|
49
95
|
res.to_s.gsub(/\[/, "['").gsub(/\]/, "']") # ensure the title has quotes
|
50
96
|
end
|
51
97
|
if !args.first.nil?
|
52
|
-
|
98
|
+
res[args.first.to_i].ai
|
53
99
|
else
|
54
|
-
|
55
|
-
|
100
|
+
output = "Resources not shown in any specific order\n".warning
|
101
|
+
output += res.ai
|
56
102
|
end
|
57
103
|
end
|
58
104
|
|
59
105
|
def classes(args=[])
|
60
|
-
|
106
|
+
scope.compiler.catalog.classes.ai
|
61
107
|
end
|
62
108
|
|
63
109
|
end
|
@@ -1,14 +1,40 @@
|
|
1
|
+
require 'puppet/indirector/node/rest'
|
2
|
+
|
1
3
|
module PuppetRepl
|
2
4
|
module Support
|
3
5
|
module Node
|
4
|
-
# creates a node object
|
6
|
+
# creates a node object using defaults or gets the remote node
|
7
|
+
# object if the remote_node_name is defined
|
5
8
|
def create_node
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Puppet[:trusted_server_facts] = true if Puppet.version.to_f >= 4.1
|
10
|
+
|
11
|
+
if remote_node_name
|
12
|
+
# refetch
|
13
|
+
node_obj = set_node_from_name(remote_node_name)
|
14
|
+
end
|
15
|
+
unless node_obj
|
16
|
+
options = {}
|
17
|
+
options[:parameters] = default_facts.values
|
18
|
+
options[:facts] = default_facts
|
19
|
+
options[:classes] = []
|
20
|
+
options[:environment] = puppet_environment
|
21
|
+
node_obj = Puppet::Node.new(default_facts.values['fqdn'], options)
|
22
|
+
node_obj.add_server_facts(server_facts) if node_obj.respond_to?(:add_server_facts)
|
23
|
+
node_obj
|
24
|
+
end
|
25
|
+
node_obj
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_remote_node_name(name)
|
29
|
+
@remote_node_name = name
|
30
|
+
end
|
31
|
+
|
32
|
+
def remote_node_name=(name)
|
33
|
+
@remote_node_name = name
|
34
|
+
end
|
35
|
+
|
36
|
+
def remote_node_name
|
37
|
+
@remote_node_name
|
12
38
|
end
|
13
39
|
|
14
40
|
# @return [node] puppet node object
|
@@ -16,6 +42,45 @@ module PuppetRepl
|
|
16
42
|
@node ||= create_node
|
17
43
|
end
|
18
44
|
|
45
|
+
def get_remote_node(name)
|
46
|
+
indirection = Puppet::Indirector::Indirection.instance(:node)
|
47
|
+
indirection.terminus_class = 'rest'
|
48
|
+
remote_node = indirection.find(name, :environment => puppet_environment)
|
49
|
+
remote_node
|
50
|
+
end
|
51
|
+
|
52
|
+
# this is a hack to get around that the puppet node fact face does not return
|
53
|
+
# a proper node object with the facts hash populated
|
54
|
+
# returns a node object with a proper facts hash
|
55
|
+
def convert_remote_node(remote_node)
|
56
|
+
options = {}
|
57
|
+
# remove trusted data as it will later get populated during compilation
|
58
|
+
parameters = remote_node.parameters.dup
|
59
|
+
trusted_data = parameters.delete('trusted')
|
60
|
+
options[:parameters] = parameters || {}
|
61
|
+
options[:facts] = Puppet::Node::Facts.new(remote_node.name,remote_node.parameters)
|
62
|
+
options[:classes] = remote_node.classes
|
63
|
+
options[:environment] = puppet_environment
|
64
|
+
node_object = Puppet::Node.new(remote_node.name, options)
|
65
|
+
node_object.add_server_facts(server_facts) if node_object.respond_to?(:add_server_facts)
|
66
|
+
node_object.trusted_data = trusted_data
|
67
|
+
node_object
|
68
|
+
end
|
69
|
+
|
70
|
+
# query the remote puppet server and retrieve the node object
|
71
|
+
#
|
72
|
+
def set_node_from_name(name)
|
73
|
+
out_buffer.puts ("Fetching node #{name}")
|
74
|
+
remote_node = get_remote_node(name)
|
75
|
+
if remote_node and remote_node.parameters.empty?
|
76
|
+
remote_node_name = nil # clear out the remote name
|
77
|
+
raise PuppetRepl::Exception::UndefinedNode.new(:name => remote_node.name)
|
78
|
+
end
|
79
|
+
remote_node_name = remote_node.name
|
80
|
+
node_object = convert_remote_node(remote_node)
|
81
|
+
set_node(node_object)
|
82
|
+
end
|
83
|
+
|
19
84
|
def set_node(value)
|
20
85
|
@node = value
|
21
86
|
end
|
@@ -9,23 +9,45 @@ module PuppetRepl
|
|
9
9
|
elsif File.exists? config[:play]
|
10
10
|
play_back_string(File.read(config[:play]))
|
11
11
|
else config[:play]
|
12
|
-
puts "puppet-repl can't play #{config[:play]}'"
|
12
|
+
out_buffer.puts "puppet-repl can't play #{config[:play]}'"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
require '
|
19
|
-
|
17
|
+
def convert_to_text(url)
|
18
|
+
require 'uri'
|
19
|
+
url_data = URI(url)
|
20
|
+
case url_data.host
|
21
|
+
when /^github.com/
|
22
|
+
if url_data.path =~ /blob/
|
23
|
+
url.gsub('blob', 'raw')
|
24
|
+
end
|
25
|
+
when /^gist.github.com/
|
26
|
+
unless url_data.path =~ /raw/
|
27
|
+
url = url += '.txt'
|
28
|
+
end
|
29
|
+
when /^gitlab.com/
|
30
|
+
if url_data.path =~ /snippets/
|
31
|
+
url += '/raw' unless url_data.path =~ /raw/
|
32
|
+
url
|
33
|
+
else
|
34
|
+
url.gsub('blob', 'raw')
|
35
|
+
end
|
36
|
+
else
|
37
|
+
url
|
38
|
+
end
|
39
|
+
end
|
20
40
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
41
|
+
def play_back_url(url)
|
42
|
+
begin
|
43
|
+
require 'open-uri'
|
44
|
+
require 'net/http'
|
45
|
+
converted_url = convert_to_text(url)
|
46
|
+
str = open(converted_url).read
|
47
|
+
play_back_string(str)
|
48
|
+
rescue SocketError
|
49
|
+
abort "puppet-repl can't play `#{converted_url}'"
|
25
50
|
end
|
26
|
-
play_back_string open(url).read
|
27
|
-
rescue SocketError
|
28
|
-
abort "puppet-repl can't play `#{url}'"
|
29
51
|
end
|
30
52
|
|
31
53
|
def play_back_string(str)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module PuppetRepl
|
2
2
|
module Support
|
3
3
|
module Scope
|
4
|
-
|
5
4
|
def set_scope(value)
|
6
5
|
@scope = value
|
7
6
|
end
|
@@ -9,22 +8,27 @@ module PuppetRepl
|
|
9
8
|
# @return [Scope] puppet scope object
|
10
9
|
def scope
|
11
10
|
unless @scope
|
12
|
-
|
13
|
-
@scope ||= create_scope(node)
|
11
|
+
@scope ||= create_scope
|
14
12
|
end
|
15
13
|
@scope
|
16
14
|
end
|
17
15
|
|
18
|
-
def create_scope
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
16
|
+
def create_scope
|
17
|
+
do_initialize
|
18
|
+
begin
|
19
|
+
@compiler = create_compiler(node) # creates a new compiler for each scope
|
20
|
+
scope = Puppet::Parser::Scope.new(@compiler)
|
21
|
+
# creates a node class
|
22
|
+
scope.source = Puppet::Resource::Type.new(:node, node.name)
|
23
|
+
scope.parent = @compiler.topscope
|
24
|
+
load_lib_dirs
|
25
|
+
# compiling will load all the facts into the scope
|
26
|
+
# without this step facts will not get resolved
|
27
|
+
scope.compiler.compile # this will load everything into the scope
|
28
|
+
rescue StandardError => e
|
29
|
+
err = parse_error(e)
|
30
|
+
raise err
|
31
|
+
end
|
28
32
|
scope
|
29
33
|
end
|
30
34
|
|
data/lib/puppet-repl/support.rb
CHANGED
@@ -16,6 +16,31 @@ module PuppetRepl
|
|
16
16
|
include PuppetRepl::Support::InputResponders
|
17
17
|
include PuppetRepl::Support::Play
|
18
18
|
|
19
|
+
# parses the error type into a more useful error message defined in errors.rb
|
20
|
+
# returns new error object or the original if error cannot be parsed
|
21
|
+
def parse_error(error)
|
22
|
+
case error
|
23
|
+
when SocketError
|
24
|
+
PuppetRepl::Exception::ConnectError.new(:message => "Unknown host: #{Puppet[:server]}")
|
25
|
+
when Net::HTTPError
|
26
|
+
PuppetRepl::Exception::AuthError.new(:message => error.message)
|
27
|
+
when Errno::ECONNREFUSED
|
28
|
+
PuppetRepl::Exception::ConnectError.new(:message => error.message)
|
29
|
+
when Puppet::Error
|
30
|
+
if error.message =~ /could\ not\ find\ class/i
|
31
|
+
PuppetRepl::Exception::NoClassError.new(:default_modules_paths => default_modules_paths,
|
32
|
+
:message => error.message)
|
33
|
+
elsif error.message =~ /default\ node/i
|
34
|
+
PuppetRepl::Exception::NodeDefinitionError.new(:default_site_manifest => default_site_manifest,
|
35
|
+
:message => error.message)
|
36
|
+
else
|
37
|
+
error
|
38
|
+
end
|
39
|
+
else
|
40
|
+
error
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
19
44
|
# returns an array of module directories, generally this is the only place
|
20
45
|
# to look for puppet code by default. This is read from the puppet configuration
|
21
46
|
def default_modules_paths
|
@@ -92,5 +117,9 @@ module PuppetRepl
|
|
92
117
|
File.join(Puppet[:environmentpath],default_puppet_env_name,'manifests')
|
93
118
|
end
|
94
119
|
|
120
|
+
def default_site_manifest
|
121
|
+
File.join(default_manifests_dir, 'site.pp')
|
122
|
+
end
|
123
|
+
|
95
124
|
end
|
96
125
|
end
|
data/lib/puppet-repl.rb
CHANGED
@@ -3,6 +3,8 @@ require_relative 'version'
|
|
3
3
|
require 'awesome_print'
|
4
4
|
require_relative 'awesome_print/ext/awesome_puppet'
|
5
5
|
require_relative 'trollop'
|
6
|
+
require 'puppet/util/log'
|
7
|
+
require_relative 'puppet-repl/support/errors'
|
6
8
|
# monkey patch in some color effects string methods
|
7
9
|
class String
|
8
10
|
def red; "\033[31m#{self}\033[0m" end
|
@@ -18,3 +20,35 @@ class String
|
|
18
20
|
split('_').map(&:capitalize).join
|
19
21
|
end
|
20
22
|
end
|
23
|
+
|
24
|
+
Puppet::Util::Log.newdesttype :buffer do
|
25
|
+
require 'puppet/util/colors'
|
26
|
+
include Puppet::Util::Colors
|
27
|
+
|
28
|
+
attr_accessor :err_buffer, :out_buffer
|
29
|
+
|
30
|
+
def initialize(err=$stderr, out=$stdout)
|
31
|
+
@err_buffer = err
|
32
|
+
@out_buffer = out
|
33
|
+
end
|
34
|
+
|
35
|
+
def handle(msg)
|
36
|
+
levels = {
|
37
|
+
:emerg => { :name => 'Emergency', :color => :hred, :stream => err_buffer },
|
38
|
+
:alert => { :name => 'Alert', :color => :hred, :stream => err_buffer },
|
39
|
+
:crit => { :name => 'Critical', :color => :hred, :stream => err_buffer },
|
40
|
+
:err => { :name => 'Error', :color => :hred, :stream => err_buffer },
|
41
|
+
:warning => { :name => 'Warning', :color => :hred, :stream => err_buffer },
|
42
|
+
|
43
|
+
:notice => { :name => 'Notice', :color => :reset, :stream => out_buffer },
|
44
|
+
:info => { :name => 'Info', :color => :green, :stream => out_buffer },
|
45
|
+
:debug => { :name => 'Debug', :color => :cyan, :stream => out_buffer },
|
46
|
+
}
|
47
|
+
|
48
|
+
str = msg.respond_to?(:multiline) ? msg.multiline : msg.to_s
|
49
|
+
str = msg.source == "Puppet" ? str : "#{msg.source}: #{str}"
|
50
|
+
|
51
|
+
level = levels[msg.level]
|
52
|
+
level[:stream].puts colorize(level[:color], "#{level[:name]}: #{str}")
|
53
|
+
end
|
54
|
+
end
|
data/lib/version.rb
CHANGED
data/puppet-repl.gemspec
CHANGED
@@ -2,18 +2,21 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: puppet-repl 0.2.0 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "puppet-repl"
|
8
|
-
s.version = "0.
|
9
|
+
s.version = "0.2.0"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Corey Osman"]
|
12
|
-
s.date = "2016-
|
14
|
+
s.date = "2016-05-17"
|
13
15
|
s.description = "A interactive command line tool for evaluating the puppet language"
|
14
16
|
s.email = "corey@nwops.io"
|
15
17
|
s.executables = ["prepl"]
|
16
18
|
s.extra_rdoc_files = [
|
19
|
+
"CHANGELOG.md",
|
17
20
|
"LICENSE.txt",
|
18
21
|
"README.md"
|
19
22
|
]
|
@@ -35,6 +38,7 @@ Gem::Specification.new do |s|
|
|
35
38
|
"lib/puppet-repl/support.rb",
|
36
39
|
"lib/puppet-repl/support/compiler.rb",
|
37
40
|
"lib/puppet-repl/support/environment.rb",
|
41
|
+
"lib/puppet-repl/support/errors.rb",
|
38
42
|
"lib/puppet-repl/support/facts.rb",
|
39
43
|
"lib/puppet-repl/support/functions.rb",
|
40
44
|
"lib/puppet-repl/support/input_responders.rb",
|
@@ -44,7 +48,17 @@ Gem::Specification.new do |s|
|
|
44
48
|
"lib/trollop.rb",
|
45
49
|
"lib/version.rb",
|
46
50
|
"puppet-repl.gemspec",
|
51
|
+
"resources/classes.png",
|
52
|
+
"resources/classification.png",
|
53
|
+
"resources/command_line_node.png",
|
54
|
+
"resources/functions.png",
|
55
|
+
"resources/hiera.png",
|
56
|
+
"resources/set_node.png",
|
57
|
+
"resources/tab_complete.png",
|
58
|
+
"resources/variables.png",
|
47
59
|
"spec/fixtures/environments/production/manifests/site.pp",
|
60
|
+
"spec/fixtures/invalid_node_obj.yaml",
|
61
|
+
"spec/fixtures/node_obj.yaml",
|
48
62
|
"spec/fixtures/sample_manifest.pp",
|
49
63
|
"spec/prepl_spec.rb",
|
50
64
|
"spec/puppet-repl_spec.rb",
|
@@ -53,8 +67,7 @@ Gem::Specification.new do |s|
|
|
53
67
|
]
|
54
68
|
s.homepage = "http://github.com/nwops/puppet-repl"
|
55
69
|
s.licenses = ["MIT"]
|
56
|
-
s.
|
57
|
-
s.rubygems_version = "2.0.14"
|
70
|
+
s.rubygems_version = "2.4.5.1"
|
58
71
|
s.summary = "A repl for the puppet language"
|
59
72
|
|
60
73
|
if s.respond_to? :specification_version then
|
@@ -62,22 +75,19 @@ Gem::Specification.new do |s|
|
|
62
75
|
|
63
76
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
64
77
|
s.add_runtime_dependency(%q<puppet>, [">= 3.8"])
|
65
|
-
s.add_runtime_dependency(%q<facterdb>, ["
|
66
|
-
s.add_runtime_dependency(%q<awesome_print>, ["
|
67
|
-
s.add_development_dependency(%q<pry>, [">= 0"])
|
78
|
+
s.add_runtime_dependency(%q<facterdb>, ["~> 0.3"])
|
79
|
+
s.add_runtime_dependency(%q<awesome_print>, ["~> 1.6"])
|
68
80
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
69
81
|
else
|
70
82
|
s.add_dependency(%q<puppet>, [">= 3.8"])
|
71
|
-
s.add_dependency(%q<facterdb>, ["
|
72
|
-
s.add_dependency(%q<awesome_print>, ["
|
73
|
-
s.add_dependency(%q<pry>, [">= 0"])
|
83
|
+
s.add_dependency(%q<facterdb>, ["~> 0.3"])
|
84
|
+
s.add_dependency(%q<awesome_print>, ["~> 1.6"])
|
74
85
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
75
86
|
end
|
76
87
|
else
|
77
88
|
s.add_dependency(%q<puppet>, [">= 3.8"])
|
78
|
-
s.add_dependency(%q<facterdb>, ["
|
79
|
-
s.add_dependency(%q<awesome_print>, ["
|
80
|
-
s.add_dependency(%q<pry>, [">= 0"])
|
89
|
+
s.add_dependency(%q<facterdb>, ["~> 0.3"])
|
90
|
+
s.add_dependency(%q<awesome_print>, ["~> 1.6"])
|
81
91
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
82
92
|
end
|
83
93
|
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/resources/hiera.png
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|