ops_team 0.9.5 → 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 +4 -4
- data/lib/builtins/background.rb +5 -0
- data/lib/builtins/exec.rb +6 -1
- data/lib/dependencies/apk.rb +1 -1
- data/lib/dependencies/apt.rb +23 -2
- data/lib/dependencies/helpers/apt_cache_policy.rb +55 -0
- data/lib/dependencies/sshkey.rb +2 -3
- data/lib/ops.rb +10 -2
- data/ops_team.gemspec +2 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 047c3860b15eb79d392d3616d822530752746acee221a309b3ad0fbe35a7c4fa
|
4
|
+
data.tar.gz: db149bdce3d9777ec2416ba7489a0cea00bb268d8d82ce3c22ec4326b6a9c7e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ee633e1ba692622711b0d9b6d2a5e4357dd0dbcfdad22567b858616328d2548a0ee8be45c9aa90517f17f15451dad2ff720cb02314829c0feab41164a4d5e4b
|
7
|
+
data.tar.gz: 7b03cdd354652f5c68ca1b430a1540136e08f33498a29021e4ed6fa9147779b82104c6ece6878d16b5c7530af1491f75aad23b7fe2c4db6ae0bf669f17276e5f
|
data/lib/builtins/background.rb
CHANGED
@@ -18,6 +18,7 @@ module Builtins
|
|
18
18
|
|
19
19
|
def run
|
20
20
|
subprocess = fork do
|
21
|
+
set_bglog_file_permissions
|
21
22
|
run_ops(args)
|
22
23
|
end
|
23
24
|
|
@@ -26,6 +27,10 @@ module Builtins
|
|
26
27
|
|
27
28
|
private
|
28
29
|
|
30
|
+
def set_bglog_file_permissions
|
31
|
+
File.new(Background.log_filename, "w").chmod(0o600)
|
32
|
+
end
|
33
|
+
|
29
34
|
def run_ops(args)
|
30
35
|
Output.notice("Running '#{args.join(' ')}' with stderr and stdout redirected to '#{Background.log_filename}'")
|
31
36
|
$stdout.sync = $stderr.sync = true
|
data/lib/builtins/exec.rb
CHANGED
data/lib/dependencies/apk.rb
CHANGED
data/lib/dependencies/apt.rb
CHANGED
@@ -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
|
-
|
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,11 +23,27 @@ module Dependencies
|
|
18
23
|
end
|
19
24
|
|
20
25
|
def should_meet?
|
21
|
-
`uname`.chomp == "Linux"
|
26
|
+
`uname`.chomp == "Linux" && system("which apt-get &>/dev/null")
|
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
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
|
data/lib/dependencies/sshkey.rb
CHANGED
@@ -18,8 +18,9 @@ module Dependencies
|
|
18
18
|
def meet
|
19
19
|
Secrets.load
|
20
20
|
|
21
|
-
|
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
|
|
data/lib/ops.rb
CHANGED
@@ -77,8 +77,16 @@ class Ops
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def actions
|
80
|
-
|
81
|
-
|
80
|
+
@actions ||= begin
|
81
|
+
if config["actions"]
|
82
|
+
config["actions"]&.transform_values do |config|
|
83
|
+
Action.new(config, @args)
|
84
|
+
end
|
85
|
+
else
|
86
|
+
# only print this error if ops.yml had something in it
|
87
|
+
Output.warn("'ops.yml' has no 'actions' defined.") if config.any?
|
88
|
+
{}
|
89
|
+
end
|
82
90
|
end
|
83
91
|
end
|
84
92
|
|
data/ops_team.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'ops_team'
|
5
|
-
s.version = '0.
|
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.
|
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
|