ops_team 0.9.7 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
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