ops_team 0.13.1 → 0.14.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: 2290c83f4f7765f62b2efe59ed8e662970039057b7d3d948b68e4f0f0eb46a7c
4
- data.tar.gz: 9b9948ff23bf8799ca294c9a637638980e9b679bb862657085712a97bde35fc1
3
+ metadata.gz: 9b9ea41a7031a3b0433fa1dce7a5d6e3acff2a0845df7e614d7348c42decfb17
4
+ data.tar.gz: b1914623e6e5990aa695112abdcf094b130fc10235fa4aaa1c03ac8d2ca70d14
5
5
  SHA512:
6
- metadata.gz: 7fa27cf9f164af9e91a2d27820e811779a0781cb6b2f8849ef37e6ddd6042d4188422560343559ee072701351dc60f51cc48ce74c82bc1aa9201d233e37ef09d
7
- data.tar.gz: 6af6633e1552b93fa07c3f6443bd292e0695fe9595dfda661e588fd9cc84df8176b2f5b1dbc7613d47bde7b5e1ed30a1b9551bbfd9963c7cc5b70bcb4b54c460
6
+ metadata.gz: bfb2ac0c3c7da9ea5cfb8113b9557e015739eb7ef7972ecf19c59924171274f28babacd9bba222a852dd0e141ac8b8a8d0bb83bb685c82bb644753b2f7c5c2fa
7
+ data.tar.gz: c885476119307be822abbb6a2762ab610094a4373ba701cc07359d17f6209d964fc8a83828b4c5a7a066ca4a6115072d9f94f267a50f0a4e5020d648afcaeac2
data/Gemfile CHANGED
@@ -11,7 +11,7 @@ gem "ed25519"
11
11
  gem "ejson"
12
12
  gem "etc"
13
13
  gem "io-console"
14
- gem "json"
14
+ gem "json", ">= 2.3.0"
15
15
  gem "net-ssh"
16
16
  gem "require_all"
17
17
 
@@ -20,7 +20,7 @@ module Dependencies
20
20
  end
21
21
 
22
22
  def should_meet?
23
- `uname`.chomp == "Linux" && system("which apk")
23
+ `uname`.chomp == "Linux" && system("which apk", out: File::NULL, err: File::NULL)
24
24
  end
25
25
  end
26
26
  end
@@ -1,20 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dependency'
3
+ require 'dependencies/versioned_dependency'
4
4
  require 'dependencies/helpers/apt_cache_policy'
5
5
 
6
6
  module Dependencies
7
- class Apt < Dependency
8
- PACKAGE_NAME_SEPARATOR = "/"
9
-
7
+ class Apt < VersionedDependency
10
8
  def met?
11
- return apt_cache_policy.installed_version == package_version if package_version
12
-
13
- apt_cache_policy.installed?
9
+ if versioned?
10
+ apt_cache_policy.installed_version == dep_version
11
+ else
12
+ apt_cache_policy.installed?
13
+ end
14
14
  end
15
15
 
16
16
  def meet
17
- execute("#{sudo_string}apt-get install -y #{name}")
17
+ if versioned?
18
+ execute("#{sudo_string}apt-get install -y #{dep_name}=#{dep_version}")
19
+ else
20
+ execute("#{sudo_string}apt-get install -y #{name}")
21
+ end
18
22
  end
19
23
 
20
24
  def unmeet
@@ -23,25 +27,13 @@ module Dependencies
23
27
  end
24
28
 
25
29
  def should_meet?
26
- `uname`.chomp == "Linux" && system("which apt-get")
30
+ `uname`.chomp == "Linux" && system("which apt-get", out: File::NULL, err: File::NULL)
27
31
  end
28
32
 
29
33
  private
30
34
 
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
35
  def apt_cache_policy
44
- @apt_cache_policy ||= Dependencies::Helpers::AptCachePolicy.new(package_name)
36
+ @apt_cache_policy ||= Dependencies::Helpers::AptCachePolicy.new(dep_name)
45
37
  end
46
38
 
47
39
  def sudo_string
@@ -4,18 +4,20 @@ require 'dependency'
4
4
  require 'options'
5
5
 
6
6
  module Dependencies
7
- class Gem < Dependency
7
+ class Gem < VersionedDependency
8
8
  def met?
9
- execute("gem list -i '^#{name}$'")
9
+ if versioned?
10
+ execute("gem list -i '^#{dep_name}$' -v '#{dep_version}'") if versioned?
11
+ else
12
+ execute("gem list -i '^#{name}$'")
13
+ end
10
14
  end
11
15
 
12
16
  def meet
13
- if Options.get("gem.use_sudo")
14
- execute("sudo gem install #{name}")
15
- elsif Options.get("gem.user_install")
16
- execute("gem install --user-install #{name}")
17
+ if versioned?
18
+ execute("#{sudo_string}gem install #{user_install_string}'#{dep_name}' -v '#{dep_version}'")
17
19
  else
18
- execute("gem install #{name}")
20
+ execute("#{sudo_string}gem install #{user_install_string}'#{name}'")
19
21
  end
20
22
  end
21
23
 
@@ -23,5 +25,15 @@ module Dependencies
23
25
  # do nothing; we don't want to uninstall packages and reinstall them every time
24
26
  true
25
27
  end
28
+
29
+ private
30
+
31
+ def sudo_string
32
+ Options.get("gem.use_sudo") ? "sudo " : ""
33
+ end
34
+
35
+ def user_install_string
36
+ Options.get("gem.user_install") ? "--user-install " : ""
37
+ end
26
38
  end
27
39
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dependencies
4
+ class VersionedDependency < Dependency
5
+ VERSION_SEPARATOR = " "
6
+
7
+ def dep_name
8
+ name_components[0]
9
+ end
10
+
11
+ def dep_version
12
+ name_components[1]
13
+ end
14
+
15
+ def versioned?
16
+ !!dep_version
17
+ end
18
+
19
+ private
20
+
21
+ def name_components
22
+ name.split(VERSION_SEPARATOR, 2)
23
+ end
24
+ end
25
+ end
data/lib/ops.rb CHANGED
@@ -27,6 +27,8 @@ class Ops
27
27
  ERROR_LOADING_APP_CONFIG_EXIT_CODE = 66
28
28
  MIN_VERSION_NOT_MET_EXIT_CODE = 67
29
29
 
30
+ RECOMMEND_HELP_TEXT = "Run 'ops help' for a list of builtins and actions."
31
+
30
32
  class << self
31
33
  def project_name
32
34
  File.basename(::Dir.pwd)
@@ -48,7 +50,7 @@ class Ops
48
50
  run_action
49
51
  rescue UnknownActionError => e
50
52
  Output.error(e.to_s)
51
- print_did_you_mean
53
+ Output.out(RECOMMEND_HELP_TEXT) unless print_did_you_mean
52
54
  exit(UNKNOWN_ACTION_EXIT_CODE)
53
55
  end
54
56
 
@@ -57,6 +59,7 @@ class Ops
57
59
  def syntax_valid?
58
60
  if @action_name.nil?
59
61
  Output.error("Usage: ops <action>")
62
+ Output.out(RECOMMEND_HELP_TEXT)
60
63
  false
61
64
  else
62
65
  true
@@ -67,6 +70,8 @@ class Ops
67
70
  suggestions = did_you_mean.check(@action_name)
68
71
 
69
72
  Output.out("Did you mean '#{suggestions.join(", ")}'?") if suggestions.any?
73
+
74
+ suggestions.any?
70
75
  end
71
76
 
72
77
  def did_you_mean
@@ -40,7 +40,7 @@ class Output
40
40
  @err.puts(msg.yellow)
41
41
  end
42
42
 
43
- alias_method :notice, :warn
43
+ alias notice warn
44
44
 
45
45
  def error(msg)
46
46
  @err.puts(msg.red)
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'ops_team'
5
- s.version = '0.13.1'
5
+ s.version = '0.14.2'
6
6
  s.authors = [
7
7
  'nickthecook@gmail.com'
8
8
  ]
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.13.1
4
+ version: 0.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - nickthecook@gmail.com
@@ -170,6 +170,7 @@ files:
170
170
  - lib/dependencies/gem.rb
171
171
  - lib/dependencies/helpers/apt_cache_policy.rb
172
172
  - lib/dependencies/sshkey.rb
173
+ - lib/dependencies/versioned_dependency.rb
173
174
  - lib/dependency.rb
174
175
  - lib/environment.rb
175
176
  - lib/executor.rb