aggkit 0.2.9.8725 → 0.3.0

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
- SHA1:
3
- metadata.gz: d0aca73460b75c612192138b7fc158d09f100285
4
- data.tar.gz: 71d6c9237c9b0a37f34475c14bcfa3668df72be9
2
+ SHA256:
3
+ metadata.gz: 1cb8844a3333ce60ca5918aaf4d13ac75dcbf22dc82387de89417435632f7f76
4
+ data.tar.gz: d7f1f771d64acd6d1bf34dd28374d023a2430c6769d92f84c74d1b0163458b62
5
5
  SHA512:
6
- metadata.gz: 29fb6e8d0aa9a82707150ace023c69d915b9b1e6d7f23b5b7ee72fdd1bd086b8817bd5de13ce94f48d9f0e243437bdc5347149c72acd2c22ff289ee72747fc37
7
- data.tar.gz: 524cf71c2d723310082bc9792d4a1f5d9a01fc3e0f7fd9b26cb56daa7abe14237d3299872c8cf91861002041c61967986966840cae4675851967ae3de3b5e73e
6
+ metadata.gz: b7115a18b786af71eac551e93ebeae47fa474c3e7650979cb3d6cbf377c310bfd7101354f7f2fed1088372cf13eeba23a716df4b9fb2750173e6fe9424e68c0a
7
+ data.tar.gz: f281d3f5ec9594197680290536b2aec4cc149b0d3b02cba3dcb2a550749655922c08935a643ca79f07f4bf0cf6c2ca647af352816df4986d0027e59af68b5aa2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- aggkit (0.2.9.8725)
4
+ aggkit (0.3.0)
5
5
  diplomat
6
6
  dotenv
7
7
  json
data/bin/aggstart CHANGED
@@ -1,42 +1,40 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'optparse'
4
3
  require 'aggkit'
5
4
 
6
5
  UTIL = File.basename(__FILE__)
7
6
 
8
7
  @opts = {
9
8
  service: ENV['AGGREDATOR_SERVICE'],
10
- consul: ENV['CONSUL_HOST'],
9
+ consul: ENV['CONSUL_HOST'] || 'localhost',
10
+ consulconf: [],
11
11
  depends: [],
12
- consulconf: []
13
12
  }
14
13
 
15
-
16
- parser = OptionParser.new do |o|
14
+ parser = Aggkit::OptionParser.new do |o|
17
15
  o.banner = "Usage: #{UTIL} [options]"
18
16
 
19
- o.on("--service=#{@opts[:service]}", 'set service name') do |service|
17
+ o.on("--service <NAME>", 'Set service NAME. AGGREDATOR_SERVICE env can be used instead') do |service|
20
18
  @opts[:service] = service.to_s
21
19
  end
22
20
 
23
- o.on("--consul=#{@opts[:consul]}", 'set consul host') do |consul|
24
- if consul.to_s == 'none'
25
- @opts[:consul] = nil
26
- else
27
- @opts[:consul] = consul.to_s
28
- end
21
+ o.on("--consul=#{@opts[:consul]}", 'Set consul host. CONSUL_HOST env can be used instead') do |consul|
22
+ @opts[:consul] = consul.to_s
29
23
  end
30
24
 
31
- o.on("--consulconf=list", 'set list of folders with consul configs') do |list|
32
- @opts[:consulconf] = list.to_s.split(/[ ;,|]/).map(&:to_s).reject(&:empty?)
25
+ o.on("--consulconf=consul,consul/smev3...", 'Set list of folders with consul configs. Special: none - disable local consul') do |list|
26
+ @opts[:consulconf] = if list.to_s == 'none'
27
+ nil
28
+ else
29
+ list.to_s.split(/[ ;,|]/).map(&:to_s).reject(&:empty?)
30
+ end
33
31
  end
34
32
 
35
- o.on("--depends=list", 'set list of services to wait for ready') do |list|
33
+ o.on("--depends=mq,db,router...", 'Set list of services to wait for ready before start') do |list|
36
34
  @opts[:depends] = list.to_s.split(/[ ;,|]/).map(&:to_s).reject(&:empty?)
37
35
  end
38
36
 
39
- o.on("--exec=file", 'set file to execute') do |file|
37
+ o.on("--exec <FILE>", 'Set FILE to execute.') do |file|
40
38
  @opts[:exec] = file.to_s
41
39
  end
42
40
 
@@ -44,41 +42,47 @@ parser = OptionParser.new do |o|
44
42
  end
45
43
  parser.parse!
46
44
 
45
+
47
46
  include Aggkit::Runner
48
47
 
49
- init_service @opts[:service]
48
+ if @opts[:service].to_s.empty?
49
+ die "service name must be provided"
50
+ end
51
+
52
+ if @opts[:exec].to_s.empty?
53
+ die "exec script must be provided"
54
+ end
55
+
56
+ @opts[:node_name] = "#{@opts[:service]}_#{`hostname`.strip}".strip
57
+
58
+ ENV['AGGREDATOR_SERVICE'] = @opts[:service]
59
+ ENV['CONSUL_HOST'] = @opts[:consul]
60
+ ENV['NODE_NAME'] = @opts[:node_name]
50
61
 
51
- $AGGREDATOR_SERVICE = ensure_env_defined!('AGGREDATOR_SERVICE')
52
- $CONSUL_HOST = @opts[:consul]
53
- $NODE_NAME = ENV['NODE_NAME'] ||= "#{$AGGREDATOR_SERVICE}_#{`hostname`.strip}".strip
62
+ init_service @opts[:service], @opts
54
63
 
55
64
  envsubst '/home/app/consul'
56
65
 
57
66
  Aggkit::Watcher.new.exec do |watcher|
58
67
 
59
- if @opts[:consul]
60
- #watcher.add %W{consul agent -config-dir consul -config-dir consul/smev3 -node #{$NODE_NAME}}
68
+ if @opts[:consulconf]
61
69
  configs = @opts[:consulconf].map do |folder|
62
70
  "-config-dir #{folder}"
63
71
  end.join(' ').strip
64
72
 
65
- watcher.add "consul agent #{configs} -node #{$NODE_NAME}".split
73
+ watcher.add "consul agent #{configs} -node #{@opts[:node_name]}".split
66
74
  end
67
75
 
68
- execute!("aggwait -t 20 --consul-addr=http://#{$CONSUL_HOST}:8500 --consul", "Timeout for consul service")
76
+ execute!("aggwait -t 20 --consul-addr=http://#{@opts[:consul]}:8500 --consul", "Timeout for consul service")
69
77
 
70
- load_envs_from_consul($CONSUL_HOST, $AGGREDATOR_SERVICE)
78
+ load_envs_from_consul(@opts[:consul], @opts[:service])
71
79
 
72
80
  @opts[:depends].each do |service|
73
- execute!("aggwait -t 60 --consul-addr=http://$CONSUL_HOST:8500 --consul-service #{service}", "Timeout for #{service} service")
81
+ execute!("aggwait -t 60 --consul-addr=http://#{@opts[:consul]}:8500 --consul-service #{service}", "Timeout for #{service} service")
74
82
  end
75
83
 
76
84
  sleep 2
77
85
 
78
-
79
- # execute("rake db:create")
80
- # execute!("rake db:migrate", "migrate failed")
81
- # execute!("rake db:seed", "seed failed")
82
86
  watcher.add %W{#{@opts[:exec]}}
83
87
  end
84
88
 
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'English'
5
+
6
+ # Add the ability to specify switches as required to OptionParser
7
+ class OptionParser
8
+
9
+ # An array of messages describing any missing required switches
10
+ attr_reader :missing_switches
11
+
12
+ # Convenience method to test if we're missing any required switches
13
+ def missing_switches?
14
+ !@missing_switches.nil?
15
+ end
16
+
17
+ # Alias the OptionParser::make_switch function
18
+ # (instead of directly modifying it like I did in 0.1.0)
19
+ alias :pickled_make_switch :make_switch
20
+
21
+ # Wrapper for OptionParser::make_switch to allow for required switches
22
+ def make_switch(opts, block = nil)
23
+
24
+ # Test if a switch is required
25
+ required = opts.delete(:required)
26
+
27
+ return_values = pickled_make_switch(opts, block)
28
+
29
+ # Make sure required switches are given
30
+ if required
31
+ short = return_values[1][0].nil? ? nil : "-#{return_values[1][0]}"
32
+ long = return_values[2][0].nil? ? nil : "--#{return_values[2][0]}"
33
+
34
+ if !(default_argv.include?(short) || default_argv.include?(long))
35
+ @missing_switches ||= [] # Should be placed in initialize if incorporated into Ruby proper
36
+
37
+ # Not much prettier, but a bit more readable than the previous iteration
38
+ message = "Missing switch: "
39
+ message << short unless short.nil?
40
+ message << " or " unless (short.nil? || long.nil?)
41
+ message << long unless long.nil?
42
+ @missing_switches << message
43
+ end
44
+ end
45
+
46
+ return return_values
47
+ end
48
+ end
49
+
50
+ module Aggkit
51
+ OptionParser = ::OptionParser
52
+ end
data/lib/aggkit/runner.rb CHANGED
@@ -6,11 +6,14 @@ module Aggkit
6
6
 
7
7
  module Runner
8
8
 
9
- def init_service(service)
9
+ def init_service(service, options = nil)
10
10
  STDOUT.sync = true
11
11
  STDERR.sync = true
12
12
 
13
13
  puts "Starting #{service}..."
14
+ if options
15
+ puts "Options: #{options.inspect}"
16
+ end
14
17
 
15
18
  trap('EXIT') do
16
19
  puts "Stopping #{service}..."
@@ -1,5 +1,5 @@
1
1
  module Aggkit
2
2
 
3
- VERSION = '0.2.9'.freeze
3
+ VERSION = '0.3.0'.freeze
4
4
 
5
5
  end
data/lib/aggkit.rb CHANGED
@@ -3,8 +3,8 @@ require 'English'
3
3
  require 'optparse'
4
4
  require 'dotenv'
5
5
 
6
-
7
6
  require 'aggkit/version'
7
+ require 'aggkit/option_parser'
8
8
  require 'aggkit/watcher'
9
9
  require 'aggkit/runner'
10
10
  require 'aggkit/env'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aggkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9.8725
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Godko Ivan
@@ -165,6 +165,7 @@ files:
165
165
  - lib/aggkit/childprocess/windows/structs.rb
166
166
  - lib/aggkit/ci.rb
167
167
  - lib/aggkit/env.rb
168
+ - lib/aggkit/option_parser.rb
168
169
  - lib/aggkit/runner.rb
169
170
  - lib/aggkit/version.rb
170
171
  - lib/aggkit/watcher.rb
@@ -188,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
189
  version: '0'
189
190
  requirements: []
190
191
  rubyforge_project:
191
- rubygems_version: 2.6.3
192
+ rubygems_version: 2.7.3
192
193
  signing_key:
193
194
  specification_version: 4
194
195
  summary: Helper scripts for work with docker and consul in Aggredator