bellboy 0.3.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -67,6 +67,36 @@ module Bellboy
67
67
 
68
68
  Ridley.new(ridley_options)
69
69
  end
70
+
71
+ def list(berksfile)
72
+ databags = {}
73
+
74
+ local_sources = Bellboy.berks_sources(berksfile)
75
+
76
+ local_sources.each do |source|
77
+ Bellboy.logger.debug "Source: #{source.cached_cookbook.path}"
78
+
79
+ path = File.join(source.cached_cookbook.path, 'data_bags')
80
+ Dir.foreach(path) do |dir|
81
+ subdir = File.join(path, dir)
82
+
83
+ next unless File.directory?(subdir)
84
+ next if dir == '.' || dir == '..'
85
+
86
+ databags[dir] = []
87
+
88
+ Dir.foreach(subdir) do |item|
89
+ next if item == '.' || item == '..'
90
+ next unless item.match('^.*\.json$')
91
+
92
+ databags[dir] << item.chomp('.json')
93
+ end
94
+ end if Dir.exists?(path)
95
+
96
+ end
97
+
98
+ databags
99
+ end
70
100
  end
71
101
  end
72
102
 
@@ -99,5 +99,46 @@ module Bellboy
99
99
  berksfile = Bellboy.berks_from_file(options[:berksfile])
100
100
  Bellboy::Uploader.upload(berksfile, options)
101
101
  end
102
+
103
+ desc 'list', 'List all databags for all Cookbooks known by Berkshelf'
104
+ method_option :berksfile,
105
+ type: :string,
106
+ default: Berkshelf::DEFAULT_FILENAME,
107
+ desc: 'Path to a Berksfile to operate off of.',
108
+ aliases: '-b',
109
+ banner: 'PATH'
110
+ method_option :bellboyfile,
111
+ type: :string,
112
+ default: Bellboy::DEFAULT_FILENAME,
113
+ desc: 'Path to a Bellboy file to operate off of.',
114
+ aliases: '-d',
115
+ banner: 'PATH'
116
+ method_option :bags,
117
+ type: :boolean,
118
+ desc: 'List only the databags.',
119
+ aliases: '-B',
120
+ default: false
121
+ method_option :json,
122
+ type: :boolean,
123
+ desc: 'Output in JSON format.',
124
+ aliases: '-j',
125
+ default: false
126
+ def list
127
+ berksfile = Bellboy.berks_from_file(options[:berksfile])
128
+ databags = Bellboy.list(berksfile)
129
+
130
+ if options[:json]
131
+ Bellboy.logger.log databags.to_json
132
+ else
133
+ databags.each do |bag, items|
134
+ Bellboy.logger.log options[:bags] ? bag : "#{bag}:"
135
+
136
+ items.each do |item|
137
+ Bellboy.logger.log "\t#{item}"
138
+ end unless options[:bags]
139
+ end
140
+ end
141
+
142
+ end
102
143
  end
103
144
  end
@@ -34,7 +34,7 @@ module Bellboy
34
34
 
35
35
  # Output a debug message
36
36
  def debug(message)
37
- puts(message) unless @loglevel < Bellboy::LOG_LEVEL_DEBUG
37
+ $stderr.puts(message) unless @loglevel < Bellboy::LOG_LEVEL_DEBUG
38
38
  end
39
39
  alias_method :verbose, :debug
40
40
 
@@ -24,7 +24,7 @@ describe 'logger' do
24
24
 
25
25
  it 'should log debug messages when \'verbose\' is enabled' do
26
26
  logger = Bellboy::Logger.new( {:verbose => true} )
27
- content = capture(:stdout) { logger.debug 'test message #4' }
27
+ content = capture(:stderr) { logger.debug 'test message #4' }
28
28
  expect(content).to eq("test message #4\n")
29
29
  end
30
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bellboy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-20 00:00:00.000000000 Z
12
+ date: 2014-01-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor