eventhub-command 0.8.0 → 0.10.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: 9adae3bad773165a879b27894dcaf17009e57591
4
- data.tar.gz: 8f4c06c769658f2aa17a4200ef7e2c3fc55b235d
2
+ SHA256:
3
+ metadata.gz: a3b9ef32ec489113cd533f9603db9c1ae542bf32aabf82c3ae7ae4d5000919bd
4
+ data.tar.gz: a6ada20b684ac2a911ae411ab738a2d904fc151206d8f42e529967feb2bc5d08
5
5
  SHA512:
6
- metadata.gz: 8ddb5be2988d59273b157f7362030f5e020aef2d49ada1ccf4c898d077fb4ce467650856728360a3fd997787e8edeff7b5873252318483119e28375bd9b5ece4
7
- data.tar.gz: b5d6f672efad3767cd28fd45ec51bca3008287028f47782eaa5d4aee0c2c24a6e517e5b5c5d122790c0f858845c8e10a31106b67fc0d97796402112430b03d6f
6
+ metadata.gz: 93bbf8d4c58fc240bdf0f15531f99992f927024e280e5258147373e2d867667ae52b09eb6db542d6ff10f400ed687eca39a2d113ccbd7762166d50772b77ab55
7
+ data.tar.gz: 5afc8e32a44692f25c6977db3641f3ef1bf1e7663b24c14d5126a6f2b3dec49bb033419659f8aeedcafb6e33f0c02880363ccc26002376fb7d77b5c55a94d830
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## 0.10.0 (2021-08-03)
2
+
3
+ * Change: Bump version
4
+
5
+ ## 0.9.0 (2021-08-02)
6
+
7
+ * Add: Apply ruby styles (standard gem)
8
+ * Add: Simple test coverage (simplecov gem)
9
+ * Add: ci with github actions
10
+ * Change: Update ruby to 2.6.6
11
+ * Change: Update rake to 13.0
12
+ * Change: Update rspec to 3.10
13
+ * Change: Update highline to 2.0
14
+ * Change: Update rubyzip to 2.3
15
+ * Change: Update net-ssh to 6.1
16
+ * Change: Hide scm password for log output
17
+ * Change: Remove redundant rails_src_dir method
18
+ * Change: rspec - improve test performance
19
+ * Change: rspec - order is randomized
20
+ * Delete: travis ci dependency
21
+
1
22
  ## 0.8.0 (2018-02-21)
2
23
 
3
24
  * Change: Update gem dependencies (rake, rspec, bundler, GLI)
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/eventhub-command.svg)](https://badge.fury.io/rb/eventhub-command)
2
- [![Dependency Status](https://gemnasium.com/badges/github.com/thomis/eventhub-command.svg)](https://gemnasium.com/github.com/thomis/eventhub-command)
3
- [![Build Status](https://travis-ci.org/thomis/eventhub-command.svg?branch=master)](https://travis-ci.org/thomis/eventhub-command)
2
+ ![](https://github.com/thomis/eventhub-command/workflows/ci/badge.svg)
4
3
 
5
4
  eventhub-command
6
5
  ================
data/lib/deployer.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  module Deployer
2
2
  end
3
3
 
4
- require_relative 'deployer/executor'
5
- require_relative 'deployer/net_ssh_extension'
6
- require_relative 'deployer/stage'
4
+ require_relative "deployer/executor"
5
+ require_relative "deployer/net_ssh_extension"
6
+ require_relative "deployer/stage"
7
7
 
8
- require_relative 'deployer/base_deployer'
9
- require_relative 'deployer/mule_deployer'
10
- require_relative 'deployer/ruby_deployer'
11
- require_relative 'deployer/go_deployer'
12
- require_relative 'deployer/config_deployer'
13
- require_relative 'deployer/console_deployer'
8
+ require_relative "deployer/base_deployer"
9
+ require_relative "deployer/mule_deployer"
10
+ require_relative "deployer/ruby_deployer"
11
+ require_relative "deployer/go_deployer"
12
+ require_relative "deployer/config_deployer"
13
+ require_relative "deployer/console_deployer"
@@ -11,11 +11,11 @@ class Deployer::BaseDeployer
11
11
  private
12
12
 
13
13
  def config_source_dir(*extra_paths)
14
- File.join(base_dir, 'config', *extra_paths)
14
+ File.join(base_dir, "config", *extra_paths)
15
15
  end
16
16
 
17
17
  def log_deployment(executor, message)
18
- executor.execute("echo $(date): #{message} - #{ENV['USER']} >> #{deploy_log_file}")
18
+ executor.execute("echo $(date): #{message} - #{ENV["USER"]} >> #{deploy_log_file}")
19
19
  end
20
20
 
21
21
  def base_dir
@@ -23,7 +23,7 @@ class Deployer::BaseDeployer
23
23
  end
24
24
 
25
25
  def deploy_log_file
26
- File.join(shared_dir, 'logs', 'deploy.log')
26
+ File.join(shared_dir, "logs", "deploy.log")
27
27
  end
28
28
 
29
29
  def deploy_via
@@ -35,32 +35,30 @@ class Deployer::BaseDeployer
35
35
  end
36
36
 
37
37
  def via_scp?
38
- deploy_via == 'scp'
38
+ deploy_via == "scp"
39
39
  end
40
40
 
41
41
  def shared_dir
42
- File.join(base_dir, 'shared')
42
+ File.join(base_dir, "shared")
43
43
  end
44
44
 
45
45
  def cached_copy_scp_dir
46
- File.join(shared_dir, 'cached_copy_scp')
46
+ File.join(shared_dir, "cached_copy_scp")
47
47
  end
48
48
 
49
49
  def cached_copy_svn_dir
50
- File.join(shared_dir, 'cached_copy_svn')
50
+ File.join(shared_dir, "cached_copy_svn")
51
51
  end
52
52
 
53
53
  def cached_copy_dir(*extra_paths)
54
54
  dir = if via_scp?
55
55
  cached_copy_scp_dir
56
+ elsif options[:tag]
57
+ File.join(cached_copy_svn_dir, "tags", options[:tag], "releases")
58
+ elsif options[:branch]
59
+ File.join(cached_copy_svn_dir, "branches", options[:branch], "releases")
56
60
  else
57
- if options[:tag]
58
- File.join(cached_copy_svn_dir, 'tags', options[:tag], 'releases')
59
- elsif options[:branch]
60
- File.join(cached_copy_svn_dir, 'branches', options[:branch], 'releases')
61
- else
62
- File.join(cached_copy_svn_dir, 'branches', 'master', 'releases')
63
- end
61
+ File.join(cached_copy_svn_dir, "branches", "master", "releases")
64
62
  end
65
63
  File.join(dir, *extra_paths)
66
64
  end
@@ -81,16 +79,15 @@ class Deployer::BaseDeployer
81
79
  "#{scm_base_url}/branches/master/releases"
82
80
  end
83
81
 
84
-
85
82
  def create_base_dirs(executor)
86
83
  dirs = [
87
- File.join(base_dir, 'config'),
88
- File.join(base_dir, 'ruby'),
89
- File.join(base_dir, 'mule'),
90
- File.join(base_dir, 'rails'),
84
+ File.join(base_dir, "config"),
85
+ File.join(base_dir, "ruby"),
86
+ File.join(base_dir, "mule"),
87
+ File.join(base_dir, "rails"),
91
88
  shared_dir,
92
- File.join(shared_dir, 'pids'),
93
- File.join(shared_dir, 'logs'),
89
+ File.join(shared_dir, "pids"),
90
+ File.join(shared_dir, "logs"),
94
91
  cached_copy_scp_dir
95
92
  ]
96
93
  cmds = dirs.map do |dir|
@@ -115,7 +112,6 @@ class Deployer::BaseDeployer
115
112
 
116
113
  private
117
114
 
118
-
119
115
  # Executes an ls on all hosts and returns the combined
120
116
  # list of files or dirs.
121
117
  def remote_ls(executor, options, pattern)
@@ -129,7 +125,7 @@ class Deployer::BaseDeployer
129
125
 
130
126
  def verify_deployment_list!(requested, available)
131
127
  # remove requested that are not available
132
- puts 'Deployment List'.light_blue.on_blue
128
+ puts "Deployment List".light_blue.on_blue
133
129
  abort = false
134
130
  requested.each do |name|
135
131
  if available.include?(name)
@@ -143,11 +139,9 @@ class Deployer::BaseDeployer
143
139
  puts "Not all requested components are available in #{cached_copy_dir}. Will abort.".red
144
140
  raise
145
141
  end
146
-
147
142
  end
148
143
 
149
144
  def inspector_command(action, name)
150
145
  "curl -X POST --data '[{\"name\": \"#{name}\",\"action\": \"#{action}\"}]' --header \"Content-Type:application/json\" http://localhost:5500/applications"
151
146
  end
152
-
153
147
  end
@@ -1,6 +1,6 @@
1
1
  class Deployer::ConfigDeployer < Deployer::BaseDeployer
2
2
  def initialize(options = {})
3
- options[:deploy_via] = 'svn'
3
+ options[:deploy_via] = "svn"
4
4
  super(options)
5
5
  end
6
6
 
@@ -10,7 +10,7 @@ class Deployer::ConfigDeployer < Deployer::BaseDeployer
10
10
  create_base_dirs(executor)
11
11
  update_scm(executor)
12
12
 
13
- source = cached_copy_dir('..', 'config', "%{stagename}", "%{hostname}", '')
13
+ source = cached_copy_dir("..", "config", "%{stagename}", "%{hostname}", "")
14
14
  target = config_source_dir
15
15
 
16
16
  cmd = "rsync -r --exclude=.svn #{source} #{target}"
@@ -1,5 +1,4 @@
1
1
  class Deployer::ConsoleDeployer < Deployer::BaseDeployer
2
-
3
2
  def initialize(options)
4
3
  @options = options
5
4
  end
@@ -19,6 +18,6 @@ class Deployer::ConsoleDeployer < Deployer::BaseDeployer
19
18
  end
20
19
 
21
20
  def stage
22
- @options.fetch(:stage, 'development')
21
+ @options.fetch(:stage, "development")
23
22
  end
24
23
  end
@@ -1,5 +1,5 @@
1
- require 'net/ssh'
2
- require 'colorize'
1
+ require "net/ssh"
2
+ require "colorize"
3
3
 
4
4
  class Deployer::Executor
5
5
  attr_reader :stage
@@ -26,7 +26,6 @@ class Deployer::Executor
26
26
  log_result(result)
27
27
  result
28
28
  end
29
-
30
29
  rescue => e
31
30
  handle_exception(e, options)
32
31
  end
@@ -45,7 +44,6 @@ class Deployer::Executor
45
44
  log_result(result)
46
45
  result
47
46
  end
48
-
49
47
  rescue => e
50
48
  handle_exception(e, options)
51
49
  end
@@ -58,12 +56,12 @@ class Deployer::Executor
58
56
  log_result(result)
59
57
  result
60
58
  end
61
-
62
59
  rescue => e
63
60
  handle_exception(e, options)
64
61
  end
65
62
 
66
63
  private
64
+
67
65
  def handle_exception(e, options)
68
66
  if options[:abort_on_error] == false
69
67
  puts "warning".black.on_yellow
@@ -73,7 +71,6 @@ class Deployer::Executor
73
71
  puts " #{e.message}".red
74
72
  end
75
73
  raise unless options[:abort_on_error] == false
76
-
77
74
  end
78
75
 
79
76
  def verbose?
@@ -92,7 +89,7 @@ class Deployer::Executor
92
89
  end
93
90
 
94
91
  def log_command(cmd, comment = nil)
95
- puts cmd.blue
92
+ puts filter(cmd).blue
96
93
  puts " (#{comment})" if verbose? && comment
97
94
  end
98
95
 
@@ -104,8 +101,9 @@ class Deployer::Executor
104
101
  execute_local "scp -P #{host[:port]} #{host[:user]}@#{host[:host]}:#{source} #{target}"
105
102
  end
106
103
 
107
-
108
-
104
+ def filter(text)
105
+ text.gsub(/--password (\S)+/, "--password [FILTERED]")
106
+ end
109
107
 
110
108
  def execute_local(command)
111
109
  output = nil
@@ -118,12 +116,10 @@ class Deployer::Executor
118
116
 
119
117
  raise "Command \"#{command}\" returned exit code #{exit_code}" unless exit_code.success?
120
118
 
121
- result = {
119
+ {
122
120
  stdout: output,
123
- stderr: '',
124
- exit_code: 0,
121
+ stderr: "",
122
+ exit_code: 0
125
123
  }
126
-
127
- result
128
124
  end
129
125
  end
@@ -12,7 +12,6 @@ class Deployer::GoDeployer < Deployer::BaseDeployer
12
12
  Deployer::Executor.new(stage, verbose: verbose?) do |executor|
13
13
  create_base_dirs(executor)
14
14
 
15
-
16
15
  update_cached_copy(executor)
17
16
 
18
17
  # fetch processor_names unless they have been passed as an argument to the initializer
@@ -23,37 +22,37 @@ class Deployer::GoDeployer < Deployer::BaseDeployer
23
22
  log_deployment(executor, "Deploying #{processor_name} via #{deploy_via} from #{cached_copy_dir}")
24
23
 
25
24
  # stop old one
26
- if processor_name != 'inspector'
27
- cmd = inspector_command('stop', processor_name)
25
+ if processor_name != "inspector"
26
+ cmd = inspector_command("stop", processor_name)
28
27
  executor.execute(cmd, abort_on_error: false, comment: "Request to stop component")
29
28
  else
30
29
  executor.execute("kill -s TERM $(cat #{File.join(pids_dir, processor_name)}.pid)", abort_on_error: false, comment: "This is not sooo important")
31
30
  end
32
31
 
33
32
  # unzip package
34
- target = deploy_dir('go')
35
- source = cached_copy_dir('go',"#{processor_name}.zip")
33
+ target = deploy_dir("go")
34
+ source = cached_copy_dir("go", "#{processor_name}.zip")
36
35
  executor.execute("rm -rf #{processor_dir(processor_name)} && unzip -o -d #{target} #{source}")
37
36
 
38
37
  # copy config
39
38
  executor.execute("if [[ -d #{config_source_dir(processor_name)} ]] ; then cp -r #{config_source_dir(processor_name)}/* #{processor_dir(processor_name)}; fi")
40
39
 
41
40
  # remove log dir if it exists
42
- executor.execute("if [[ -d #{processor_dir(processor_name, 'logs')} ]] ; then rm -rf #{processor_dir(processor_name, 'logs')}; fi")
41
+ executor.execute("if [[ -d #{processor_dir(processor_name, "logs")} ]] ; then rm -rf #{processor_dir(processor_name, "logs")}; fi")
43
42
 
44
43
  # symlink log dir
45
- executor.execute("ln -s #{logs_dir} #{processor_dir(processor_name, 'logs')}")
44
+ executor.execute("ln -s #{logs_dir} #{processor_dir(processor_name, "logs")}")
46
45
 
47
46
  # symlink pids dir
48
- executor.execute("ln -s #{pids_dir} #{processor_dir(processor_name, 'pids')}")
47
+ executor.execute("ln -s #{pids_dir} #{processor_dir(processor_name, "pids")}")
49
48
 
50
49
  # start new one
51
- if processor_name == 'inspector'
50
+ if processor_name == "inspector"
52
51
  # default start
53
52
  executor.execute("cd #{processor_dir(processor_name)} && ./#{processor_name} -d -e $EH_ENV")
54
53
  else
55
54
  # startig go via inspector
56
- cmd = inspector_command('start', processor_name)
55
+ cmd = inspector_command("start", processor_name)
57
56
  executor.execute(cmd, abort_on_error: false, comment: "Request to start component")
58
57
  end
59
58
  end
@@ -64,8 +63,8 @@ class Deployer::GoDeployer < Deployer::BaseDeployer
64
63
 
65
64
  def update_cached_copy(executor)
66
65
  if via_scp?
67
- source = Eh::Settings.current.releases_dir('go', '*.zip')
68
- target_dir = File.join(cached_copy_dir, 'go')
66
+ source = Eh::Settings.current.releases_dir("go", "*.zip")
67
+ target_dir = File.join(cached_copy_dir, "go")
69
68
  executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
70
69
  executor.upload(source, target_dir)
71
70
  else
@@ -74,11 +73,11 @@ class Deployer::GoDeployer < Deployer::BaseDeployer
74
73
  end
75
74
 
76
75
  def logs_dir
77
- File.join(shared_dir, 'logs')
76
+ File.join(shared_dir, "logs")
78
77
  end
79
78
 
80
79
  def pids_dir
81
- File.join(shared_dir, 'pids')
80
+ File.join(shared_dir, "pids")
82
81
  end
83
82
 
84
83
  def deploy_dir(*extra_paths)
@@ -86,23 +85,23 @@ class Deployer::GoDeployer < Deployer::BaseDeployer
86
85
  end
87
86
 
88
87
  def processor_dir(*extra_paths)
89
- File.join(deploy_dir, 'go', *extra_paths)
88
+ File.join(deploy_dir, "go", *extra_paths)
90
89
  end
91
90
 
92
91
  def config_source_dir(processor_name)
93
- super('go', processor_name)
92
+ super("go", processor_name)
94
93
  end
95
94
 
96
95
  # Detect what processors to deploy
97
96
  #
98
97
  def resolve_processor_names(executor, options)
99
- available = remote_ls(executor, options, File.join(cached_copy_dir, 'go', '*.zip')).map do |name|
100
- File.basename(name, '.zip')
98
+ available = remote_ls(executor, options, File.join(cached_copy_dir, "go", "*.zip")).map do |name|
99
+ File.basename(name, ".zip")
101
100
  end
102
101
 
103
102
  fetched = Array(processor_names).map do |name|
104
- if name.include?('*') # resolve pattern on remote machine
105
- remote_ls(executor, options, File.join(cached_copy_dir, 'go', "#{name}.zip"))
103
+ if name.include?("*") # resolve pattern on remote machine
104
+ remote_ls(executor, options, File.join(cached_copy_dir, "go", "#{name}.zip"))
106
105
  else
107
106
  name
108
107
  end
@@ -112,7 +111,7 @@ class Deployer::GoDeployer < Deployer::BaseDeployer
112
111
  end
113
112
 
114
113
  fetched = fetched.flatten.map do |name|
115
- File.basename(name, '.zip')
114
+ File.basename(name, ".zip")
116
115
  end
117
116
 
118
117
  verify_deployment_list!(fetched, available)
@@ -124,10 +123,9 @@ class Deployer::GoDeployer < Deployer::BaseDeployer
124
123
  #
125
124
  def go_sorter
126
125
  ->(a, b) do
127
- return -1 if a =~ /inspector/i
128
- return 1 if b =~ /inspector/i
126
+ return -1 if /inspector/i.match?(a)
127
+ return 1 if /inspector/i.match?(b)
129
128
  a <=> b
130
129
  end
131
130
  end
132
-
133
131
  end
@@ -7,11 +7,11 @@ class Deployer::MuleDeployer < Deployer::BaseDeployer
7
7
  end
8
8
 
9
9
  def adapter_cached_copy(adapter_name)
10
- cached_copy_dir('mule', "#{adapter_name}.zip")
10
+ cached_copy_dir("mule", "#{adapter_name}.zip")
11
11
  end
12
12
 
13
13
  def config_source_dir(adapter_name)
14
- super('mule', adapter_name)
14
+ super("mule", adapter_name)
15
15
  end
16
16
 
17
17
  def deploy!
@@ -31,7 +31,7 @@ class Deployer::MuleDeployer < Deployer::BaseDeployer
31
31
  log_deployment(executor, "Deploying #{adapter_name} via #{deploy_via} from #{cached_copy_dir}")
32
32
  # make a copy of the zip files to merge them with config
33
33
  cached_copy_source = adapter_cached_copy(adapter_name)
34
- configuration_target = File.join(base_dir, 'mule', "#{adapter_name}.zip")
34
+ configuration_target = File.join(base_dir, "mule", "#{adapter_name}.zip")
35
35
  executor.execute("cp #{cached_copy_source} #{configuration_target}")
36
36
 
37
37
  # copy config
@@ -44,17 +44,16 @@ class Deployer::MuleDeployer < Deployer::BaseDeployer
44
44
  end
45
45
  end
46
46
 
47
-
48
47
  private
49
48
 
50
49
  def resolve_adapter_names(executor, options)
51
- available = remote_ls(executor, options, cached_copy_dir('mule', '*.zip')).map do |name|
52
- File.basename(name, '.zip')
50
+ available = remote_ls(executor, options, cached_copy_dir("mule", "*.zip")).map do |name|
51
+ File.basename(name, ".zip")
53
52
  end
54
53
 
55
54
  fetched = Array(adapter_names).map do |name|
56
- if name.include?('*') # resolve pattern on remote machine
57
- remote_ls(executor, options, cached_copy_dir('mule', "#{name}.zip"))
55
+ if name.include?("*") # resolve pattern on remote machine
56
+ remote_ls(executor, options, cached_copy_dir("mule", "#{name}.zip"))
58
57
  else
59
58
  name
60
59
  end
@@ -64,7 +63,7 @@ class Deployer::MuleDeployer < Deployer::BaseDeployer
64
63
  end
65
64
 
66
65
  fetched = fetched.flatten.map do |name|
67
- File.basename(name, '.zip')
66
+ File.basename(name, ".zip")
68
67
  end
69
68
 
70
69
  verify_deployment_list!(fetched, available)
@@ -74,8 +73,8 @@ class Deployer::MuleDeployer < Deployer::BaseDeployer
74
73
 
75
74
  def update_cached_copy(executor)
76
75
  if via_scp?
77
- source = Eh::Settings.current.releases_dir('mule', '*.zip')
78
- target_dir = cached_copy_dir('mule')
76
+ source = Eh::Settings.current.releases_dir("mule", "*.zip")
77
+ target_dir = cached_copy_dir("mule")
79
78
  executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
80
79
  executor.upload(source, target_dir)
81
80
  else