bee_python 0.1.3 → 0.2.0

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.
Files changed (3) hide show
  1. data/README +1 -1
  2. data/lib/bee_task_python.rb +60 -21
  3. metadata +5 -5
data/README CHANGED
@@ -20,4 +20,4 @@ or go to URL http://www.apache.org/licenses/LICENSE-2.0).
20
20
 
21
21
  = Copyright
22
22
 
23
- Bee_python version 0.1.3 (C) Michel Casabianca - 2008-2010
23
+ Bee_python version 0.2.0 (C) Michel Casabianca - 2008-2010
@@ -356,17 +356,67 @@ module Bee
356
356
 
357
357
  # Check Python dependencies using PIP (see http://pypi.python.org/pypi/pip).
358
358
  # Takes a single parameter that is the map of dependencies that gives version
359
- # for a given dependency. A vesion set to ~ (or nil) indicates that this
359
+ # for a given dependency. A version set to ~ (or nil) indicates that this
360
360
  # dependency is needed in any version (useful for developement libraries used
361
361
  # for development).
362
362
  #
363
363
  # Example:
364
364
  #
365
365
  # - python.dependencies: { Django: "1.2.3", PyYAML: ~ }
366
- def dependencies(dependencies)
367
- error "python.deps_check parameter is a Map" unless
368
- dependencies.kind_of?(Hash)
366
+ def dependencies(deps)
367
+ error "python.dependencies parameter is a Map" unless
368
+ deps.kind_of?(Hash)
369
369
  puts "Checking Python dependencies..."
370
+ installed = installed_dependencies()
371
+ check_dependencies(deps, installed)
372
+ end
373
+
374
+ # Check Python dependencies using PIP (see http://pypi.python.org/pypi/pip).
375
+ # Takes a single parameter that is the requirements file name. A dependency
376
+ # may specify no version, in this case we check that dependency in installed
377
+ # in any version..
378
+ #
379
+ # Example:
380
+ #
381
+ # - python.requirements: requirements.txt
382
+ def requirements(reqs)
383
+ error "python.requirements parameter is a string" unless
384
+ reqs.kind_of?(String)
385
+ puts "Checking Python requirements..."
386
+ installed = installed_dependencies()
387
+ content = File.read(reqs).strip
388
+ dependencies = {}
389
+ for line in content
390
+ if line =~ /.+==.+/
391
+ name, version = line.scan(/[^=]+/).map{|e| e.strip}
392
+ dependencies[name] = version
393
+ else
394
+ dependencies[line.strip] = nil
395
+ end
396
+ end
397
+ check_dependencies(dependencies, installed)
398
+ end
399
+
400
+ private
401
+
402
+ # Add directories to the Python path environment variable.
403
+ # - dirs: directory (string) or list of directories to add to path.
404
+ def add_python_path(dirs)
405
+ if dirs and dirs.length > 0
406
+ dirs = Array(dirs)
407
+ puts "Adding to PYTHONPATH: '#{dirs.join(',')}'" if @verbose
408
+ if ENV['PYTHONPATH']
409
+ ENV['PYTHONPATH'] = dirs.join(File::PATH_SEPARATOR) +
410
+ File::PATH_SEPARATOR + ENV['PYTHONPATH'] if dirs.length > 0
411
+ else
412
+ ENV['PYTHONPATH'] = dirs.join(File::PATH_SEPARATOR)
413
+ end
414
+ end
415
+ end
416
+
417
+ # Get installed dependencies running PIP and return them as a map
418
+ # with dependencies names and versions.
419
+ def installed_dependencies
370
420
  lines = `pip freeze`.strip.split("\n")
371
421
  installed = {}
372
422
  for line in lines
@@ -377,6 +427,12 @@ module Bee
377
427
  installed[name] = version
378
428
  end
379
429
  end
430
+ installed
431
+ end
432
+
433
+ # Check that dependencies (as a map) are installed. Throws an error if
434
+ # not.
435
+ def check_dependencies(dependencies, installed)
380
436
  for name in dependencies.keys.sort
381
437
  if installed.has_key?(name)
382
438
  if not dependencies[name] or dependencies[name] == '*'
@@ -394,23 +450,6 @@ module Bee
394
450
  end
395
451
  end
396
452
 
397
- private
398
-
399
- # Add directories to the Python path environment variable.
400
- # - dirs: directory (string) or list of directories to add to path.
401
- def add_python_path(dirs)
402
- if dirs and dirs.length > 0
403
- dirs = Array(dirs)
404
- puts "Adding to PYTHONPATH: '#{dirs.join(',')}'" if @verbose
405
- if ENV['PYTHONPATH']
406
- ENV['PYTHONPATH'] = dirs.join(File::PATH_SEPARATOR) +
407
- File::PATH_SEPARATOR + ENV['PYTHONPATH'] if dirs.length > 0
408
- else
409
- ENV['PYTHONPATH'] = dirs.join(File::PATH_SEPARATOR)
410
- end
411
- end
412
- end
413
-
414
453
  end
415
454
 
416
455
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bee_python
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 3
10
- version: 0.1.3
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michel Casabianca
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-09-07 00:00:00 +02:00
18
+ date: 2013-09-11 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency