bee 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README CHANGED
@@ -25,4 +25,4 @@ or go to URL http://www.apache.org/licenses/LICENSE-2.0).
25
25
 
26
26
  = Copyright
27
27
 
28
- bee version 0.11.0 (C) Michel Casabianca & Contributors - 2006-2011
28
+ bee version 0.11.1 (C) Michel Casabianca & Contributors - 2006-2011
@@ -40,8 +40,8 @@
40
40
  src: "#{base}/hello/build.erb"
41
41
  dest: "#{here}/#{project_name}/build.yml"
42
42
  - cp:
43
- includes: "#{base}/hello/script.rb"
44
- dest: "#{here}/#{project_name}/lib/#{project_name}.rb"
43
+ src: "#{base}/hello/script.rb"
44
+ dest: "#{here}/#{project_name}/lib/#{project_name}.rb"
45
45
  - erb:
46
46
  src: "#{base}/hello/launcher.erb"
47
47
  dest: "#{here}/#{project_name}/bin/#{project_name}"
@@ -1,6 +1,6 @@
1
- - build: <%= name %>
1
+ - build: <%= name %>
2
2
  description: Project <%= name %>
3
- default: all
3
+ default: all
4
4
 
5
5
  - properties:
6
6
  name: "<%= name %>"
@@ -12,20 +12,20 @@
12
12
  clean_dirs: [:build]
13
13
  clean_files: ["**/*~", "**/.#*", "**/.DS_Store"]
14
14
 
15
- - target: run
15
+ - target: run
16
16
  description: Run server
17
17
  script:
18
18
  - "./server.rb"
19
19
 
20
- - target: call
20
+ - target: call
21
21
  description: Call server
22
22
  script:
23
- - get:
23
+ - http_get:
24
24
  url: "#{url}/World"
25
25
  prop: response
26
26
  - print: :response
27
27
 
28
- - target: zip
28
+ - target: zip
29
29
  description: Generate a ZIP archive
30
30
  script:
31
31
  - mkdir: :build
@@ -34,12 +34,12 @@
34
34
  prefix: :zip_prefix
35
35
  dest: :zip_file
36
36
 
37
- - target: clean
37
+ - target: clean
38
38
  description: Clean generated files
39
39
  script:
40
40
  - rmdir: :clean_dirs
41
41
  - rm: :clean_files
42
42
 
43
- - target: all
44
- depends: [clean, zip]
43
+ - target: all
44
+ depends: [clean, zip]
45
45
  description: Generate the whole project
@@ -46,8 +46,8 @@ Usage: bee [options] [targets]
46
46
  -l Print bee logo on console.
47
47
  -a Print list of available targets.
48
48
  -o Print list of available options.
49
- -f Print list of available tasks.
50
- -g Print list of available templates.
49
+ -x Print list of available tasks.
50
+ -y Print list of available templates.
51
51
  targets Targets to run (default target if omitted).
52
52
  EOF
53
53
  # Options descriptions.
@@ -239,9 +239,9 @@ EOF
239
239
  rescue Exception
240
240
  targets = []
241
241
  end
242
- print targets.join(' ')
242
+ print targets.sort.join(' ')
243
243
  elsif print_options
244
- print OPTIONS.map {|o| o[0]}.join(' ')
244
+ print OPTIONS.map {|o| o[0]}.sort.join(' ')
245
245
  elsif print_tasks
246
246
  print Bee::Task::PackageManager.list_tasks.join(' ')
247
247
  elsif print_templates
@@ -169,6 +169,8 @@ module Bee
169
169
  # - prop: Property to set with content of the response body. Optional
170
170
  # defaults to output in a file.
171
171
  # - limit: the redirections limit. Optional, defaults to 10.
172
+ # - username: username for HTTP basic authentication. Optional.
173
+ # - password: password for HTTP basic authentication. Optional.
172
174
  #
173
175
  # Example
174
176
  #
@@ -176,15 +178,20 @@ module Bee
176
178
  # url: http://rubyforge.org/frs/download.php/22185/bee-0.4.0.zip
177
179
  def http_get(parameters)
178
180
  params_desc = {
179
- :url => { :mandatory => true, :type => :string },
180
- :dest => { :mandatory => false, :type => :string },
181
- :prop => { :mandatory => false, :type => :string },
182
- :limit => { :mandatory => false, :type => :integer, :default => 10 }
181
+ :url => { :mandatory => true, :type => :string },
182
+ :dest => { :mandatory => false, :type => :string },
183
+ :prop => { :mandatory => false, :type => :string },
184
+ :limit => { :mandatory => false, :type => :integer,
185
+ :default => 10 },
186
+ :username => { :mandatory => false, :type => :string },
187
+ :password => { :mandatory => false, :type => :string },
183
188
  }
184
189
  check_parameters(parameters, params_desc)
185
- url = parameters[:url]
186
- dest = parameters[:dest]
187
- prop = parameters[:prop]
190
+ url = parameters[:url]
191
+ dest = parameters[:dest]
192
+ prop = parameters[:prop]
193
+ username = parameters[:username]
194
+ password = parameters[:password]
188
195
  if not dest and not prop
189
196
  destination = File.basename(url)
190
197
  elsif dest and File.directory?(dest)
@@ -197,7 +204,7 @@ module Bee
197
204
  limit = parameters[:limit]
198
205
  puts "Getting URL '#{url}'..."
199
206
  begin
200
- content = Util::fetch(url, limit)
207
+ content = Util::fetch(url, limit, username, password)
201
208
  rescue Exception
202
209
  error "Error getting URL: #{$!}"
203
210
  end
@@ -548,6 +555,8 @@ EOF
548
555
  # '**/*' to include all files recursively.
549
556
  # - excludes: list of globs for files to exclude from copy. Optional,
550
557
  # default to nil to exclude no file.
558
+ # - dest: destination directory for the copy, must be an existing
559
+ # directory.
551
560
  # - dotmatch: tells if joker matches dot files. Optional, defaults to
552
561
  # false.
553
562
  # - flatten: tells if included files should be copied in destination
@@ -924,16 +933,7 @@ EOF
924
933
  check_parameters(params, params_desc)
925
934
  library = params[:library]
926
935
  message = params[:message]
927
- if Gem::RubyGemsVersion < '1.3.0'
928
- begin
929
- Gem::activate(library, false)
930
- available = true
931
- rescue LoadError
932
- available = false
933
- end
934
- else
935
- available = Gem::available?(library)
936
- end
936
+ available = Bee::Util::gem_available?(library)
937
937
  error message if not available
938
938
  end
939
939
 
@@ -1475,6 +1475,7 @@ EOF
1475
1475
  dest = parameters[:dest]
1476
1476
  files = filter_files(includes, excludes, root, dotmatch)
1477
1477
  # build the archive
1478
+ puts "Building TARGZ archive '#{dest}'"
1478
1479
  begin
1479
1480
  current_dir = Dir.pwd
1480
1481
  abs_dest = File.expand_path(dest)
@@ -69,7 +69,7 @@ module Bee
69
69
 
70
70
  # List all available tasks.
71
71
  def self.list_tasks
72
- names = [nil] + self.find_gems(/^bee_/).map {|gem| gem.name[4..-1]}
72
+ names = [nil] + Bee::Util::find_gems(/^bee_/).map {|gem| gem.name[4..-1]}
73
73
  tasks = []
74
74
  for name in names
75
75
  package = self.load_package(name)
@@ -84,18 +84,17 @@ module Bee
84
84
 
85
85
  # List all available templates.
86
86
  def self.list_templates
87
- gems = self.find_gems(/^bee$/, /^bee_/)
87
+ gems = Bee::Util::find_gems(/^bee$/, /^bee_/)
88
88
  templates = []
89
89
  for gem in gems
90
- package = gem.name == 'bee' ? nil : gem.name[4..-1]
91
- for file in gem.files
92
- if file =~ /egg\/(\w+?).yml/
93
- if package
94
- templates << "#{package}.#{$1}"
95
- else
96
- templates << $1
97
- end
98
- end
90
+ gem_path = gem.full_gem_path
91
+ eggs = Dir.glob("#{gem_path}/egg/*.yml").
92
+ map{|p| p[gem_path.length+5..-5]}
93
+ if gem.name != 'bee'
94
+ package = gem.name[4..-1]
95
+ templates += eggs.map{|e| "#{package}.#{e}"}
96
+ else
97
+ templates += eggs
99
98
  end
100
99
  end
101
100
  return templates.sort
@@ -119,15 +118,6 @@ module Bee
119
118
  end
120
119
  end
121
120
 
122
- def self.find_gems(*patterns)
123
- gems = []
124
- index = Gem::SourceIndex.from_installed_gems()
125
- for pattern in patterns
126
- gems += index.find_name(pattern)
127
- end
128
- return gems
129
- end
130
-
131
121
  end
132
122
 
133
123
  end
@@ -138,7 +138,8 @@ module Bee
138
138
  # Get a given URL.
139
139
  # - url: URL to get.
140
140
  # - limit: redirectrion limit (defaults to HTTP_REDIRECTIONS_LIMIT).
141
- def self.fetch(url, limit=HTTP_REDIRECTIONS_LIMIT)
141
+ def self.fetch(url, limit=HTTP_REDIRECTIONS_LIMIT,
142
+ username=nil, password=nil)
142
143
  raise 'HTTP redirect too deep' if limit == 0
143
144
  response = Net::HTTP.get_response(URI.parse(url))
144
145
  case response
@@ -146,6 +147,14 @@ module Bee
146
147
  response.body
147
148
  when Net::HTTPRedirection
148
149
  fetch(response['location'], limit-1)
150
+ when Net::HTTPUnauthorized
151
+ uri = URI.parse(url)
152
+ Net::HTTP.start(uri.host, uri.port) do |http|
153
+ request = Net::HTTP::Get.new("#{uri.path}?#{uri.query}")
154
+ request.basic_auth(username, password)
155
+ response = http.request(request)
156
+ return response.body
157
+ end
149
158
  else
150
159
  response.error!
151
160
  end
@@ -166,11 +175,27 @@ module Bee
166
175
  end
167
176
  # get gem descriptor
168
177
  if version
169
- gem_descriptor = Gem.source_index.find_name(gem, version)[0]
178
+ if Gem::Specification.respond_to?(:find_by_name)
179
+ begin
180
+ gem_descriptor = Gem::Specification.find_by_name(gem, version)
181
+ rescue Exception
182
+ gem_descriptor = nil
183
+ end
184
+ else
185
+ gem_descriptor = Gem.source_index.find_name(gem, version)[0]
186
+ end
170
187
  raise "Gem '#{gem}' was not found in version '#{version}'" if
171
188
  not gem_descriptor
172
189
  else
173
- gem_descriptor = Gem.source_index.find_name(gem)[0]
190
+ if Gem::Specification.respond_to?(:find_by_name)
191
+ begin
192
+ gem_descriptor = Gem::Specification::find_by_name(gem)
193
+ rescue Exception
194
+ gem_descriptor = nil
195
+ end
196
+ else
197
+ gem_descriptor = Gem.source_index.find_name(gem)[0]
198
+ end
174
199
  raise "Gem '#{gem}' was not found" if not gem_descriptor
175
200
  end
176
201
  # get resource path
@@ -195,7 +220,7 @@ module Bee
195
220
  resource = ":#{prefix}#{package}.egg/#{egg}.yml"
196
221
  begin
197
222
  file = absolute_path(resource, Dir.pwd)
198
- rescue
223
+ rescue Exception
199
224
  raise BuildError.new("Template '#{template}' not found")
200
225
  end
201
226
  raise BuildError.new("Template '#{template}' not found") if
@@ -236,6 +261,59 @@ module Bee
236
261
  end
237
262
  return hash
238
263
  end
264
+
265
+ # Tells if a given gem is available.
266
+ def self.gem_available?(gem)
267
+ if lower_version(Gem::RubyGemsVersion, [1, 3, 0])
268
+ begin
269
+ Gem::activate(gem, false)
270
+ return true
271
+ rescue LoadError
272
+ return false
273
+ end
274
+ elsif lower_version(Gem::RubyGemsVersion, [1, 8, 0])
275
+ return Gem::available?(gem)
276
+ else
277
+ begin
278
+ Gem::Specification::find_by_name(gem)
279
+ return true
280
+ rescue LoadError
281
+ return false
282
+ end
283
+ end
284
+ end
285
+
286
+ # Find gems with name matching a given pattern. Returns the list of gem
287
+ # specifications.
288
+ def self.find_gems(*patterns)
289
+ gems = []
290
+ if Bee::Util::lower_version(Gem::RubyGemsVersion, [1, 8, 0])
291
+ index = Gem::SourceIndex.from_installed_gems()
292
+ for pattern in patterns
293
+ gems += index.find_name(pattern)
294
+ end
295
+ else
296
+ for pattern in patterns
297
+ Gem::Specification::each do |spec|
298
+ gems << spec if spec.name =~ pattern
299
+ end
300
+ end
301
+ end
302
+ return gems.uniq
303
+ end
304
+
305
+ # Tells if a given version is lower tah another.
306
+ def self.lower_version(v1, v2)
307
+ v1 = to_version(v1) if v1.kind_of?(String)
308
+ v2 = to_version(v2) if v2.kind_of?(String)
309
+ return ((v1 <=> v2) < 0)
310
+ end
311
+
312
+ # Convert a string to a version number (array of integers). Thus will turn
313
+ # '1.2.3' to [1, 2, 3].
314
+ def self.to_version(string)
315
+ return string.split('.').map{|s| s.to_i}
316
+ end
239
317
 
240
318
  # Class that holds information about a given method.
241
319
  class MethodInfo
@@ -1,5 +1,5 @@
1
1
  module Bee
2
2
 
3
- VERSION = '0.11.0'
3
+ VERSION = '0.11.1'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bee
3
3
  version: !ruby/object:Gem::Version
4
- hash: 51
4
+ hash: 49
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 11
9
- - 0
10
- version: 0.11.0
9
+ - 1
10
+ version: 0.11.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michel Casabianca & Contributors
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-10 00:00:00 +01:00
18
+ date: 2011-12-09 00:00:00 +01:00
19
19
  default_executable: bee
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency