ops_team 0.9.9 → 0.10.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
  SHA256:
3
- metadata.gz: bb111c3faceceae92cb8ae9907b7bf9da2c4984191bb22f47c3f14237c287c05
4
- data.tar.gz: 8fa74d1592b5b66a66b637325d737358220157796b08e2ab64a8248275ef4624
3
+ metadata.gz: 047c3860b15eb79d392d3616d822530752746acee221a309b3ad0fbe35a7c4fa
4
+ data.tar.gz: db149bdce3d9777ec2416ba7489a0cea00bb268d8d82ce3c22ec4326b6a9c7e9
5
5
  SHA512:
6
- metadata.gz: cea8868f0451869d8c4988b920c76d6c0d2ef6a9b878181da05ba8a7b35b66e5638c7062b4485e29f7fe9298b863c60f712fa12f7364fc723beada03e32bb323
7
- data.tar.gz: 6dc28aae33915e08e482eb0373ba7babedf30b454cfd6189fefd9e3084a7ef0f61227ce8714e0a1433cc1b32ef08f28f56322f16da78051598a7d030058d34b3
6
+ metadata.gz: 3ee633e1ba692622711b0d9b6d2a5e4357dd0dbcfdad22567b858616328d2548a0ee8be45c9aa90517f17f15451dad2ff720cb02314829c0feab41164a4d5e4b
7
+ data.tar.gz: 7b03cdd354652f5c68ca1b430a1540136e08f33498a29021e4ed6fa9147779b82104c6ece6878d16b5c7530af1491f75aad23b7fe2c4db6ae0bf669f17276e5f
@@ -1,11 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'dependency'
4
+ require 'dependencies/helpers/apt_cache_policy'
4
5
 
5
6
  module Dependencies
6
7
  class Apt < Dependency
8
+ PACKAGE_NAME_SEPARATOR = "/"
9
+
7
10
  def met?
8
- execute("dpkg-query --show --showformat '${db:Status-Status}\n' #{name} | grep -q ^installed")
11
+ return apt_cache_policy.installed_version == package_version if package_version
12
+
13
+ apt_cache_policy.installed?
9
14
  end
10
15
 
11
16
  def meet
@@ -23,6 +28,22 @@ module Dependencies
23
28
 
24
29
  private
25
30
 
31
+ def package_name
32
+ name_components[0]
33
+ end
34
+
35
+ def package_version
36
+ name_components[1]
37
+ end
38
+
39
+ def name_components
40
+ name.split(PACKAGE_NAME_SEPARATOR, 2)
41
+ end
42
+
43
+ def apt_cache_policy
44
+ @apt_cache_policy ||= Dependencies::Helpers::AptCachePolicy.new(package_name)
45
+ end
46
+
26
47
  def sudo_string
27
48
  return "" if ENV['USER'] == "root" || Options.get("apt.use_sudo") == false
28
49
 
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dependencies
4
+ module Helpers
5
+ class AptCachePolicy
6
+ INSTALLED_VERSION_REGEX = / Installed: ([-+.a-z0-9]+)/.freeze
7
+
8
+ attr_reader :name
9
+
10
+ def initialize(name)
11
+ @name = name
12
+ end
13
+
14
+ def installed_version
15
+ version_from_policy_version_line(installed_version_line)
16
+ end
17
+
18
+ def installed?
19
+ !!installed_version
20
+ end
21
+
22
+ private
23
+
24
+ def installed_version_line
25
+ apt_cache_lines.find { |line| line.match(/#{INSTALLED_VERSION_REGEX}/) }
26
+ end
27
+
28
+ def version_from_policy_version_line(line)
29
+ return nil if line.nil?
30
+
31
+ # E.g.:
32
+ # Installed: 7.52.1-5+deb9u7
33
+ match = line.match(/#{INSTALLED_VERSION_REGEX}/)
34
+
35
+ match.nil? ? nil : match[1]
36
+ end
37
+
38
+ def version_lines
39
+ @version_lines ||= begin
40
+ version_table_index = apt_cache_lines.find_index { |line| line.match?(/Version table:/) }
41
+
42
+ apt_cache_lines[version_table_index..-1].each_with_object([]) do |line, versions|
43
+ next unless line.match(/ *(\*\*\*)? .*/)
44
+
45
+ versions << line
46
+ end
47
+ end
48
+ end
49
+
50
+ def apt_cache_lines
51
+ @apt_cache_lines ||= `apt-cache policy #{name}`.split("\n")
52
+ end
53
+ end
54
+ end
55
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'ops_team'
5
- s.version = '0.9.9'
5
+ s.version = '0.10.0'
6
6
  s.authors = [
7
7
  'nickthecook@gmail.com'
8
8
  ]
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  'lib/builtins/*',
18
18
  'lib/builtins/helpers/*',
19
19
  'lib/dependencies/*',
20
+ 'lib/dependencies/helpers/*',
20
21
  'loader.rb',
21
22
  'ops_team.gemspec'
22
23
  ]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ops_team
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nickthecook@gmail.com
@@ -166,6 +166,7 @@ files:
166
166
  - lib/dependencies/dir.rb
167
167
  - lib/dependencies/docker.rb
168
168
  - lib/dependencies/gem.rb
169
+ - lib/dependencies/helpers/apt_cache_policy.rb
169
170
  - lib/dependencies/sshkey.rb
170
171
  - lib/dependency.rb
171
172
  - lib/environment.rb