ops_team 0.9.7 → 0.10.2

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: cf41e11aef46cc62ac4ce648aac3c84ed2de854a23ffe8cc2a89d9a678fde503
4
- data.tar.gz: 84bb677017c9e7ff084f6c3635a6228c26080736c1f27ccfdb6b9a761f3b1f33
3
+ metadata.gz: d9a12cfab8e68251d5651fdb580efaf961d21333a083df1bc7a8bc14ca08e498
4
+ data.tar.gz: 0ddea0179d89116a9ed85c8c6f18dd24e9420cff0d3ae1c1a39aa2b983d0e7e3
5
5
  SHA512:
6
- metadata.gz: 6319116434905f139d5b9853f96cfe7efa9934d34f66df17a0abc1aed531b4389ab163039c867560a53b27738c472f5642aa9de1af7d528b9e2f2d9b6073dc49
7
- data.tar.gz: ff9c8c68c014e39616e572e6fe74fc988d15807da12fd4c99fc7d91144d667bb7e386c62f68af659ca349116566adbc5a473b77a8be33c75dffcd69b6fbfd661
6
+ metadata.gz: 3b17c7f2bfb516da3ffa82acc5b1ac754a41f2b1a762e460c881a83561b874a925ed8cbdc555c53b5a9500681d77a46551086685936c58a4a1b35c9634614f56
7
+ data.tar.gz: 3ddde96d1009c84725c2312e6df25a39e2743b12792e55e300a5dce8b61aac8453527f78c632a573c2507678c948a924d16d96155c9fac7fc5b28de1753a5c1a
@@ -52,6 +52,8 @@ module Builtins
52
52
  end
53
53
 
54
54
  def actions
55
+ return [] unless @config["actions"]
56
+
55
57
  @config["actions"].map do |name, value|
56
58
  format("%<name>-35s %<desc>s",
57
59
  name: name.yellow,
@@ -20,7 +20,7 @@ module Dependencies
20
20
  end
21
21
 
22
22
  def should_meet?
23
- system("which apk")
23
+ `uname`.chomp == "Linux" && system("which apk")
24
24
  end
25
25
  end
26
26
  end
@@ -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
@@ -18,13 +23,29 @@ module Dependencies
18
23
  end
19
24
 
20
25
  def should_meet?
21
- `uname`.chomp == "Linux"
26
+ `uname`.chomp == "Linux" && system("which apt-get")
22
27
  end
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
- return "" if ENV['USER'] == "root" || Options.get("apt.use_sudo") == false
48
+ return "" if ENV['USER'] == "root" || `whoami` == "root" || Options.get("apt.use_sudo") == false
28
49
 
29
50
  "sudo "
30
51
  end
@@ -0,0 +1,43 @@
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 apt_cache_lines
39
+ @apt_cache_lines ||= `apt-cache policy #{name}`.split("\n")
40
+ end
41
+ end
42
+ end
43
+ end
@@ -18,8 +18,9 @@ module Dependencies
18
18
  def meet
19
19
  Secrets.load
20
20
 
21
- FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
21
+ Output.warn("\nNo passphrase set for SSH key '#{priv_key_name}'") if passphrase.nil? || passphrase.empty?
22
22
 
23
+ FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
23
24
  generate_key unless File.exist?(priv_key_name) && File.exist?(pub_key_name)
24
25
  add_key if success? && should_add_key?
25
26
  end
@@ -35,8 +36,6 @@ module Dependencies
35
36
  private
36
37
 
37
38
  def generate_key
38
- Output.warn("\nNo passphrase set for SSH key '#{priv_key_name}'") if passphrase.nil? || passphrase.empty?
39
-
40
39
  execute("ssh-keygen -b #{opt_key_size} -t #{opt_key_algo} -f #{priv_key_name} -q -N '#{passphrase}'")
41
40
  end
42
41
 
@@ -6,6 +6,7 @@ class Environment
6
6
  end
7
7
 
8
8
  def set_variables
9
+ set_ops_variables
9
10
  set_environment_aliases
10
11
  set_configured_variables
11
12
  end
@@ -18,6 +19,10 @@ class Environment
18
19
 
19
20
  private
20
21
 
22
+ def set_ops_variables
23
+ ENV["OPS_YML_DIR"] = Dir.pwd
24
+ end
25
+
21
26
  def set_environment_aliases
22
27
  environment_aliases.each do |alias_name|
23
28
  ENV[alias_name] = environment
data/lib/ops.rb CHANGED
@@ -94,7 +94,8 @@ class Ops
94
94
  @config ||= begin
95
95
  Output.warn("File '#{CONFIG_FILE}' does not exist.") unless File.exist?(CONFIG_FILE)
96
96
  YAML.load_file(CONFIG_FILE)
97
- rescue StandardError
97
+ rescue StandardError => e
98
+ Output.warn("Error parsing '#{CONFIG_FILE}': #{e}")
98
99
  {}
99
100
  end
100
101
  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.7'
5
+ s.version = '0.10.2'
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.7
4
+ version: 0.10.2
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