itamae-plugin-resource-pip 0.1.0 → 1.0.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce7f115766e4005ac824399c3d9825d2864663a7
|
4
|
+
data.tar.gz: ed9a1594bfe82fd27b86ad7ea50a519990d6d976
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 968fb21ac7e683a93c99c7204a1db231ba93025510ef73f7f6aafaf1175293946159e2e69107dfc362563582932769cdb855f72ddf927b2aec54da5d3ccf1192
|
7
|
+
data.tar.gz: 92c4685c5815b17a25645aed52dca76f0d8811b1d3266d2c7f065f5b0cd232656be292e7da01ebd5bd34433cbd5fbfccdbbb4513aa35375cbc8bb78293d9d1fe
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "itamae-plugin-resource-pip"
|
7
|
-
spec.version = "
|
7
|
+
spec.version = "1.0.0"
|
8
8
|
spec.authors = ["MATSUMOTO, Katsuyoshi"]
|
9
9
|
spec.email = ["github@katsyoshi.org"]
|
10
10
|
|
@@ -13,6 +13,14 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.license = "MIT"
|
14
14
|
spec.homepage = "https://github.com/katsyoshi/itamae-plugin-resource-pip"
|
15
15
|
|
16
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
17
|
+
# delete this section to allow pushing this gem to any host.
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
20
|
+
else
|
21
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
22
|
+
end
|
23
|
+
|
16
24
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
25
|
spec.bindir = "exe"
|
18
26
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
@@ -57,7 +57,7 @@ module Itamae
|
|
57
57
|
pips = []
|
58
58
|
run_command([*Array(attributes.pip_binary), 'freeze']).stdout.each_line do |line|
|
59
59
|
name, version = line.split(/==/)
|
60
|
-
pips << {name: name, version: version}
|
60
|
+
pips << {name: name, version: version.chomp}
|
61
61
|
end
|
62
62
|
pips
|
63
63
|
rescue Backend::CommandExecutionError
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module MItamae
|
2
|
+
module Plugin
|
3
|
+
module Resource
|
4
|
+
class Pip < MItamae::Resource::Base
|
5
|
+
define_attribute :action, default: :install
|
6
|
+
define_attribute :pip_binary, type: [String, Array], default: 'pip'
|
7
|
+
define_attribute :package_name, type: String, default_name: true
|
8
|
+
define_attribute :version, type: String, default: false
|
9
|
+
|
10
|
+
self.available_actions = [:install, :uninstall, :upgrade]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module MItamae
|
2
|
+
module Plugin
|
3
|
+
module ResourceExecutor
|
4
|
+
class Pip < MItamae::ResourceExecutor::Base
|
5
|
+
def apply(current, desired)
|
6
|
+
if desired.installed
|
7
|
+
if current.installed
|
8
|
+
if desired.version && current.version != desired.version
|
9
|
+
install!
|
10
|
+
updated!
|
11
|
+
end
|
12
|
+
else
|
13
|
+
install!
|
14
|
+
updated!
|
15
|
+
end
|
16
|
+
else
|
17
|
+
uninstall! if current.installed
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def set_current_attributes(current, action)
|
24
|
+
installed = installed_pips.find {|pip| pip[:name] == attributes.package_name }
|
25
|
+
current.installed = !!installed
|
26
|
+
|
27
|
+
if current.installed
|
28
|
+
version = installed[:version]
|
29
|
+
current.version = version if version != attributes.version
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def installed_pips
|
34
|
+
pips = []
|
35
|
+
run_command([*Array(attributes.pip_binary), 'freeze']).stdout.each_line do |line|
|
36
|
+
name, version = line.chomp.split(/==/)
|
37
|
+
pips << {name: name, version: version}
|
38
|
+
end
|
39
|
+
pips
|
40
|
+
rescue Backend::CommandExecutionError
|
41
|
+
[]
|
42
|
+
end
|
43
|
+
|
44
|
+
def set_desired_attributes(desired, action)
|
45
|
+
case action
|
46
|
+
when :install, :upgrade
|
47
|
+
desired.installed = true
|
48
|
+
when :uninstall
|
49
|
+
desired.installed = false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def build_pip_install_command
|
54
|
+
end
|
55
|
+
|
56
|
+
def install!
|
57
|
+
cmd = [*Array(attributes.pip_binary), 'install']
|
58
|
+
if attributes.version
|
59
|
+
cmd << "#{attributes.package_name}==#{attributes.version}"
|
60
|
+
else
|
61
|
+
cmd << attributes.package_name
|
62
|
+
end
|
63
|
+
|
64
|
+
run_command(cmd)
|
65
|
+
end
|
66
|
+
|
67
|
+
def uninstall!
|
68
|
+
cmd = [*Array(attributes.pip_binary), 'uninstall']
|
69
|
+
if attributes.version
|
70
|
+
cmd << "#{attributes.package_name}==#{attributes.version}"
|
71
|
+
else
|
72
|
+
cmd << attributes.package_name
|
73
|
+
end
|
74
|
+
cmd << '-y'
|
75
|
+
|
76
|
+
run_command(cmd)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itamae-plugin-resource-pip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MATSUMOTO, Katsuyoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: itamae
|
@@ -66,10 +66,13 @@ files:
|
|
66
66
|
- Rakefile
|
67
67
|
- itamae-plugin-resource-pip.gemspec
|
68
68
|
- lib/itamae/plugin/resource/pip.rb
|
69
|
+
- mrblib/itamae/plugin/resource/pip.rb
|
70
|
+
- mrblib/itamae/plugin/resource_executor/pip.rb
|
69
71
|
homepage: https://github.com/katsyoshi/itamae-plugin-resource-pip
|
70
72
|
licenses:
|
71
73
|
- MIT
|
72
|
-
metadata:
|
74
|
+
metadata:
|
75
|
+
allowed_push_host: https://rubygems.org
|
73
76
|
post_install_message:
|
74
77
|
rdoc_options: []
|
75
78
|
require_paths:
|
@@ -86,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
89
|
version: '0'
|
87
90
|
requirements: []
|
88
91
|
rubyforge_project:
|
89
|
-
rubygems_version: 2.
|
92
|
+
rubygems_version: 2.5.2
|
90
93
|
signing_key:
|
91
94
|
specification_version: 4
|
92
95
|
summary: itamae plugin resource pip
|