ops_team 1.2.2 → 1.4.0.rc1

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: 6ef9ff578bc479b6bbe53bee8143f2a0477393c32518ae15e417ab8338ac5fb4
4
- data.tar.gz: 289a6516bda02ad14993a4529358a671a7ea500269ac9710f42a960cc5a3e524
3
+ metadata.gz: 1895adc1d2866cce124f65ce2960e5ab2275f8e49daa98355a9708d63e56c409
4
+ data.tar.gz: 538629b40d40f427c8756312dfac31fa241e5145cbf47499607e93767995022d
5
5
  SHA512:
6
- metadata.gz: 685a469476c1ccbf25511c8ac1b0eec7cfc1eb3e9056eb8102905c88fbc48266a88dc0aaf3969ee4a6bc16bfc3cd840889d2dd3d4a39e84ce70b3eb43bb5594c
7
- data.tar.gz: 87e5e4cb4ed35aac7107cd5614ec7fecaa66fa4fc11ffd077df87cf33daea4d324c2a7df99bac2e63507624762a67a925d132a85b6b1e08e9814ac8715cac3c8
6
+ metadata.gz: 2a87c1a55c7b990fbe1539ff4bf77933f6a195233beed8a7a2efcbaf73b83b95820f0e8de786496cbf9925cbd98dbf5ce9b7de443b672e9b194659ce65e00970
7
+ data.tar.gz: 0d49666784d9aeaa7e291f185ec4b51c6e625b88f5b6c77afd17159b6ab9e33cf27c0fce62a135edb2d87193a2b26c7e413cb45c432a9313ff70b4e09062b477
data/Gemfile CHANGED
@@ -6,6 +6,7 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
7
  gem "bcrypt_pbkdf"
8
8
  gem "colorize"
9
+ gem 'concurrent-ruby', require: 'concurrent'
9
10
  gem "e2mmap"
10
11
  gem "ed25519"
11
12
  gem "ejson"
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'concurrent'
4
+
5
+ require 'builtin'
6
+ require 'output'
7
+
8
+ module Builtins
9
+ class Countdown < Builtin
10
+ USAGE_STRING = "Usage: ops countdown <seconds>"
11
+
12
+ class << self
13
+ def description
14
+ "Like `sleep`, but displays time remaining in terminal."
15
+ end
16
+ end
17
+
18
+ def run
19
+ check_args
20
+
21
+ timer_task.execute
22
+
23
+ while timer_task.running?
24
+ sleep(1)
25
+ timer_task.shutdown if task_complete?
26
+ end
27
+ Output.out("\rCountdown complete after #{sleep_seconds}s.")
28
+ end
29
+
30
+ private
31
+
32
+ def check_args
33
+ check_arg_count
34
+ check_arg_is_positive_int
35
+ end
36
+
37
+ def check_arg_count
38
+ raise Builtin::ArgumentError, USAGE_STRING unless args.length == 1
39
+ end
40
+
41
+ def check_arg_is_positive_int
42
+ raise Builtin::ArgumentError, USAGE_STRING unless sleep_seconds.positive?
43
+ # raised when the arg is not an int
44
+ rescue ::ArgumentError
45
+ raise Builtin::ArgumentError, USAGE_STRING
46
+ end
47
+
48
+ def timer_task
49
+ @timer_task ||= Concurrent::TimerTask.new(run_now: true, execution_interval: 1) do
50
+ Output.print("\r \r#{seconds_left}")
51
+ end
52
+ end
53
+
54
+ def sleep_seconds
55
+ Integer(args.first)
56
+ end
57
+
58
+ def task_start_time
59
+ @task_start_time ||= Time.now
60
+ end
61
+
62
+ def task_end_time
63
+ @task_end_time ||= task_start_time + sleep_seconds
64
+ end
65
+
66
+ def task_complete?
67
+ Time.now > task_end_time
68
+ end
69
+
70
+ def seconds_left
71
+ Integer(task_end_time - Time.now + 1)
72
+ end
73
+ end
74
+ end
@@ -5,11 +5,11 @@ require 'dependencies/brew'
5
5
  module Dependencies
6
6
  class Cask < Brew
7
7
  def met?
8
- execute("brew cask list #{name}")
8
+ execute("brew list --cask #{name}")
9
9
  end
10
10
 
11
11
  def meet
12
- execute("brew cask install #{name}")
12
+ execute("brew install --cask #{name}")
13
13
  end
14
14
  end
15
15
  end
@@ -9,6 +9,7 @@ module Dependencies
9
9
  DEFAULT_KEY_SIZE = 2048
10
10
  DEFAULT_KEY_ALGO = "rsa"
11
11
  DEFAULT_KEY_LIFETIME_S = 3600
12
+ DEFAULT_KEY_FILE_COMMENT_COMMAND = "$USER@`hostname -s`"
12
13
 
13
14
  def met?
14
15
  # we always need to at least update the key lifetime in the agent
@@ -36,7 +37,9 @@ module Dependencies
36
37
  private
37
38
 
38
39
  def generate_key
39
- execute("ssh-keygen -b #{opt_key_size} -t #{opt_key_algo} -f #{priv_key_name} -q -N '#{passphrase}'")
40
+ execute(
41
+ "ssh-keygen -b #{opt_key_size} -t #{opt_key_algo} -f #{priv_key_name} -q -N '#{passphrase}' -C '#{key_file_comment}'"
42
+ )
40
43
  end
41
44
 
42
45
  def add_key
@@ -59,6 +62,10 @@ module Dependencies
59
62
  Ops.project_name
60
63
  end
61
64
 
65
+ def key_file_comment
66
+ `echo #{opt_key_file_comment_command}`.chomp
67
+ end
68
+
62
69
  def dir_name
63
70
  `echo #{File.dirname(name)}`.chomp
64
71
  end
@@ -107,5 +114,9 @@ module Dependencies
107
114
  def opt_key_lifetime
108
115
  Options.get("sshkey.key_lifetime") || DEFAULT_KEY_LIFETIME_S
109
116
  end
117
+
118
+ def opt_key_file_comment_command
119
+ Options.get("sshkey.key_file_comment") || DEFAULT_KEY_FILE_COMMENT_COMMAND
120
+ end
110
121
  end
111
122
  end
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 = '1.2.2'
5
+ s.version = '1.4.0.rc1'
6
6
  s.authors = [
7
7
  'nickthecook@gmail.com'
8
8
  ]
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.required_ruby_version = '~> 2.5'
26
26
  s.add_runtime_dependency 'bcrypt_pbkdf', '~> 1.0', '>= 1.0.1'
27
27
  s.add_runtime_dependency 'colorize', '~> 0.8', '>= 0.8.1'
28
+ s.add_runtime_dependency 'concurrent-ruby', '~> 1.1', '>= 1.1.7'
28
29
  s.add_runtime_dependency 'ed25519', '~> 1.2', '>= 1.2.4'
29
30
  s.add_runtime_dependency 'ejson', '~> 1.2', '>= 1.2.1'
30
31
  s.add_runtime_dependency 'net-ssh', '~> 6.1', '>= 6.1.0'
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: 1.2.2
4
+ version: 1.4.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - nickthecook@gmail.com
@@ -50,6 +50,26 @@ dependencies:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
52
  version: 0.8.1
53
+ - !ruby/object:Gem::Dependency
54
+ name: concurrent-ruby
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.1'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 1.1.7
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.1'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 1.1.7
53
73
  - !ruby/object:Gem::Dependency
54
74
  name: ed25519
55
75
  requirement: !ruby/object:Gem::Requirement
@@ -94,22 +114,22 @@ dependencies:
94
114
  name: net-ssh
95
115
  requirement: !ruby/object:Gem::Requirement
96
116
  requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: 6.1.0
100
117
  - - "~>"
101
118
  - !ruby/object:Gem::Version
102
119
  version: '6.1'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 6.1.0
103
123
  type: :runtime
104
124
  prerelease: false
105
125
  version_requirements: !ruby/object:Gem::Requirement
106
126
  requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: 6.1.0
110
127
  - - "~>"
111
128
  - !ruby/object:Gem::Version
112
129
  version: '6.1'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 6.1.0
113
133
  - !ruby/object:Gem::Dependency
114
134
  name: require_all
115
135
  requirement: !ruby/object:Gem::Requirement
@@ -152,6 +172,7 @@ files:
152
172
  - lib/builtin.rb
153
173
  - lib/builtins/background.rb
154
174
  - lib/builtins/background_log.rb
175
+ - lib/builtins/countdown.rb
155
176
  - lib/builtins/down.rb
156
177
  - lib/builtins/env.rb
157
178
  - lib/builtins/envdiff.rb
@@ -201,11 +222,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
222
  version: '2.5'
202
223
  required_rubygems_version: !ruby/object:Gem::Requirement
203
224
  requirements:
204
- - - ">="
225
+ - - ">"
205
226
  - !ruby/object:Gem::Version
206
- version: '0'
227
+ version: 1.3.1
207
228
  requirements: []
208
- rubygems_version: 3.0.3
229
+ rubygems_version: 3.1.2
209
230
  signing_key:
210
231
  specification_version: 4
211
232
  summary: ops_team handles basic operations tasks for your project, driven by YAML