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.
- data/README +1 -1
- data/lib/bee_task_python.rb +60 -21
- metadata +5 -5
data/README
CHANGED
data/lib/bee_task_python.rb
CHANGED
@@ -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
|
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(
|
367
|
-
error "python.
|
368
|
-
|
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:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
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-
|
18
|
+
date: 2013-09-11 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|