capistrano_multiconfig_parallel 0.9.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 22d640f28ad6af906f0e2bf0eccb2b193ce54509
4
- data.tar.gz: 2ef7c6f96deb52a5239befc1dec1c51ccbe90bd8
3
+ metadata.gz: 867ce8da69cdf6500d2ee56333c109bc8d0dcf8a
4
+ data.tar.gz: 14485e413c78e550ca6ce3d68172d247360249be
5
5
  SHA512:
6
- metadata.gz: 0f91d957896b8d407c25172acbc3dc62493fac265d9e42d8958eb4c02d6f0eead3cb5a28697b23153c6b81edce21edb83ee0f73cbdabf88b3d0185ce20b985a1
7
- data.tar.gz: a1d6dba2bdd7821e65dd0e20e38d9ac3fa2955e10454e0e804b329c2057a316ce3ba6977ae0fcce5b90cddd2c9fd96982481fd86a6c9971d3ccc70040fd5360c
6
+ metadata.gz: db431edc0e89fff08132da6b0cf85b39b75260e71a39e5180bcb3d8d190ab2b63913a2c7ac5beb359f9f9bc5926b4cd371ba0a1153e698a37c305b5e295a12bd
7
+ data.tar.gz: 61657bacfd339847406ffc24dfc0064805567be1f447db96541e138239aba3d26cc06e62a1ae4e3222f27422cadcecfa12feddad4c25f2e00d9d84d56251ed39
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_runtime_dependency 'celluloid_pubsub', '~> 0.0', '>= 0.0.15'
22
22
  s.add_runtime_dependency 'composable_state_machine', '~> 1.0', '>= 1.0.2'
23
23
  s.add_runtime_dependency 'terminal-table', '~> 1.4', '>= 1.4.5'
24
- s.add_runtime_dependency 'formatador', '~> 0.2', '>= 0.2.5'
24
+ s.add_runtime_dependency 'ruby-progressbar', '~> 1.7', '>= 1.7.5'
25
25
  s.add_runtime_dependency 'colorize', '~> 0.7', '>= 0.7'
26
26
  s.add_runtime_dependency 'eventmachine', '~> 1.0', '>= 1.0.3'
27
27
  s.add_runtime_dependency 'right_popen', '~> 1.1', '>= 1.1.3'
@@ -8,7 +8,7 @@ require 'active_support/concern'
8
8
  require 'celluloid/autostart'
9
9
  require 'celluloid/pmap'
10
10
  require 'composable_state_machine'
11
- require 'formatador'
11
+ require 'ruby-progressbar'
12
12
  require 'eventmachine'
13
13
  require 'right_popen'
14
14
  require 'colorize'
@@ -247,6 +247,7 @@ module CapistranoMulticonfigParallel
247
247
  'action_name' => job['action'],
248
248
  'env_options' => env_options,
249
249
  'task_arguments' => job['task_arguments'],
250
+ 'job_argv' => job.fetch("job_argv", []),
250
251
  'processed' => true
251
252
  }
252
253
  end
@@ -25,7 +25,7 @@ module CapistranoMulticonfigParallel
25
25
  attr_accessor :job, :manager, :job_id, :app_name, :env_name, :action_name, :env_options, :machine, :client, :task_argv, :execute_deploy, :executed_dry_run,
26
26
  :rake_tasks, :current_task_number, # tracking tasks
27
27
  :successfull_subscription, :subscription_channel, :publisher_channel, # for subscriptions and publishing events
28
- :job_termination_condition, :worker_state
28
+ :job_termination_condition, :worker_state, :executing_dry_run
29
29
 
30
30
  def work(job, manager)
31
31
  @job = job
@@ -71,12 +71,11 @@ module CapistranoMulticonfigParallel
71
71
  end
72
72
 
73
73
  def execute_after_succesfull_subscription
74
- setup_task_arguments
75
- if (@action_name == 'deploy' || @action_name == 'deploy:rollback') && CapistranoMulticonfigParallel.show_task_progress
74
+ if @action_name != 'deploy:rollback' && CapistranoMulticonfigParallel.show_task_progress
76
75
  @executed_dry_run = true
77
76
  @rake_tasks = []
78
- @task_argv << '--dry-run'
79
- @task_argv << 'count_rake=true'
77
+ @executing_dry_run = true
78
+ setup_task_arguments( '--dry-run','count_rake=true' )
80
79
  @child_process = CapistranoMulticonfigParallel::ChildProcess.new
81
80
  Actor.current.link @child_process
82
81
  debug("worker #{@job_id} executes: #{generate_command}") if debug_enabled?
@@ -107,6 +106,7 @@ module CapistranoMulticonfigParallel
107
106
  setup_task_arguments
108
107
  debug("worker #{@job_id} executes: #{generate_command}") if debug_enabled?
109
108
  @child_process.async.work(generate_command, actor: Actor.current, silent: true)
109
+ @executing_dry_run = false
110
110
  @manager.wait_task_confirmations_worker(Actor.current)
111
111
  end
112
112
 
@@ -168,9 +168,8 @@ module CapistranoMulticonfigParallel
168
168
 
169
169
  def save_tasks_to_be_executed(message)
170
170
  return unless message['action'] == 'count'
171
- debug("worler #{@job_id} current invocation chain : #{@rake_tasks.inspect}") if debug_enabled?
172
- @rake_tasks = [] if @rake_tasks.blank?
173
- @rake_tasks << message['task'] if @rake_tasks.last != message['task']
171
+ debug("worler #{@job_id} current invocation chain : #{rake_tasks.inspect}") if debug_enabled?
172
+ rake_tasks << message['task'] if rake_tasks.last != message['task']
174
173
  end
175
174
 
176
175
  def update_machine_state(name)
@@ -187,17 +186,28 @@ module CapistranoMulticonfigParallel
187
186
  end
188
187
  @task_argv
189
188
  end
189
+
190
+ def worker_stage
191
+ @app_name.present? ? "#{@app_name}:#{@env_name}" : "#{@env_name}"
192
+ end
193
+
194
+ def worker_action
195
+ "#{@action_name}[#{@task_arguments.join(',')}]"
196
+ end
190
197
 
191
- def setup_task_arguments
198
+ def setup_task_arguments(*args)
192
199
  # stage = "#{@app_name}:#{@env_name} #{@action_name}"
193
- stage = @app_name.present? ? "#{@app_name}:#{@env_name}" : "#{@env_name}"
194
- array_options = ["#{stage}"]
195
- array_options << "#{@action_name}[#{@task_arguments.join(',')}]"
200
+ array_options = []
196
201
  @env_options.each do |key, value|
197
202
  array_options << "#{key}=#{value}" if value.present?
198
- end
203
+ end
199
204
  array_options << '--trace' if debug_enabled?
200
- array_options << '--multi_debug=true' if debug_enabled?
205
+ args.each do |arg|
206
+ array_options << arg
207
+ end
208
+ @manager.jobs[@job_id]['job_argv'] = array_options.clone
209
+ array_options.unshift("#{worker_action}")
210
+ array_options.unshift("#{worker_stage}")
201
211
  setup_command_line(*array_options)
202
212
  end
203
213
 
@@ -71,12 +71,12 @@ module CapistranoMulticonfigParallel
71
71
 
72
72
  def worker_env_options(processed_job)
73
73
  worker_optons = ''
74
- processed_job['env_options'].each do |key, value|
75
- worker_optons << "#{key}=#{value}\n"
74
+ processed_job['job_argv'].each do |elem|
75
+ worker_optons << "#{elem}\n"
76
76
  end
77
77
  worker_optons
78
78
  end
79
-
79
+
80
80
  def worker_action(processed_job)
81
81
  processed_job['task_arguments'].present? ? "#{processed_job['action_name']}[#{processed_job['task_arguments'].join(',')}]" : processed_job['action_name']
82
82
  end
@@ -85,10 +85,9 @@ module CapistranoMulticonfigParallel
85
85
  processed_job['app_name'].present? ? "#{processed_job['app_name']}\n#{processed_job['env_name']}" : "#{processed_job['env_name']}"
86
86
  end
87
87
 
88
- def get_worker_details(job_id)
88
+ def get_worker_details(job_id, worker)
89
89
  job = @manager.jobs[job_id]
90
90
  processed_job = @manager.process_job(job)
91
- worker = @manager.get_worker_for_job(job_id)
92
91
 
93
92
  {
94
93
  'job_id' => job_id,
@@ -103,15 +102,16 @@ module CapistranoMulticonfigParallel
103
102
  end
104
103
 
105
104
  def add_job_to_table(table, job_id)
106
- details = get_worker_details(job_id)
105
+ worker = @manager.get_worker_for_job(job_id)
106
+ details = get_worker_details(job_id, worker)
107
+
107
108
  row = [{ value: job_id.to_s },
108
109
  { value: details['full_stage'] },
109
110
  { value: details['action_name'] },
110
111
  { value: details['env_options'] },
111
112
  { value: "#{details['state']}" }
112
113
  ]
113
- if CapistranoMulticonfigParallel.show_task_progress
114
- worker = @manager.get_worker_for_job(job_id)
114
+ if CapistranoMulticonfigParallel.show_task_progress
115
115
  row << { value: worker.rake_tasks.size }
116
116
  row << { value: worker_progress(worker) }
117
117
  end
@@ -129,10 +129,18 @@ module CapistranoMulticonfigParallel
129
129
  current_task = worker.machine.state
130
130
  total_tasks = tasks.size
131
131
  task_index = tasks.index(current_task)
132
- progress = Formatador::ProgressBar.new(total_tasks, color: 'green', start: task_index.to_i)
133
- result = CapistranoMulticonfigParallel::Helper.capture(:stdout) do
132
+ stringio = StringIO.new
133
+ if worker.executing_dry_run == false
134
+ #progress = ProgressBar::Base.new(:title => "Tasks", :output => stringio, :format => '%a %B %p%% %t', :starting_at => task_index.to_i, :total => total_tasks, :length => 40)
135
+ progress = ProgressBar.create(:format => '%a |%b %i| %p%% Completed', :output => stringio, :starting_at => task_index, :total => total_tasks, :length => 40 )
136
+ progress.refresh
137
+ else
138
+ progress = ProgressBar.create(:format => '%a |%b %i| %p%% Completed', :output => stringio, :length => 40, :total => nil, :unknown_progress_animation_steps => ['==>', '>==', '=>='])
134
139
  progress.increment
140
+ progress.refresh
135
141
  end
142
+ stringio.rewind
143
+ result = stringio.read
136
144
  result = result.gsub("\r\n", '')
137
145
  result = result.gsub("\n", '')
138
146
  result = result.gsub('|', '#')
@@ -1,5 +1,7 @@
1
1
  require 'celluloid/autostart'
2
2
  require_relative "../celluloid/rake_worker"
3
+ require_relative './input_stream'
4
+ require_relative './output_stream'
3
5
  module CapistranoMulticonfigParallel
4
6
  class ExtensionHelper
5
7
  class << self
@@ -1,14 +1,12 @@
1
1
  require_relative './extension_helper'
2
- require_relative './input_stream'
3
- require_relative './output_stream'
4
2
  Rake::Task.class_eval do
5
3
  alias_method :original_execute, :execute
6
4
 
7
- def execute(args = nil)
5
+ def execute(*args)
8
6
  if CapistranoMulticonfigParallel::ExtensionHelper.inside_job?
9
7
  CapistranoMulticonfigParallel::ExtensionHelper.run_the_actor(self) do
10
8
  original_execute(*args)
11
- end
9
+ end
12
10
  else
13
11
  original_execute(*args)
14
12
  end
@@ -7,8 +7,8 @@ module CapistranoMulticonfigParallel
7
7
  # module used for generating the version
8
8
  module VERSION
9
9
  MAJOR = 0
10
- MINOR = 9
11
- TINY = 2
10
+ MINOR = 10
11
+ TINY = 0
12
12
  PRE = nil
13
13
 
14
14
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano_multiconfig_parallel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bogdanRada
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-13 00:00:00.000000000 Z
11
+ date: 2015-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid-pmap
@@ -91,25 +91,25 @@ dependencies:
91
91
  - !ruby/object:Gem::Version
92
92
  version: 1.4.5
93
93
  - !ruby/object:Gem::Dependency
94
- name: formatador
94
+ name: ruby-progressbar
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: '0.2'
99
+ version: '1.7'
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 0.2.5
102
+ version: 1.7.5
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0.2'
109
+ version: '1.7'
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: 0.2.5
112
+ version: 1.7.5
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: colorize
115
115
  requirement: !ruby/object:Gem::Requirement
@@ -656,7 +656,6 @@ files:
656
656
  - lib/capistrano_multiconfig_parallel/helpers/standard_deploy.rb
657
657
  - lib/capistrano_multiconfig_parallel/initializers/conf.rb
658
658
  - lib/capistrano_multiconfig_parallel/initializers/default.yml
659
- - lib/capistrano_multiconfig_parallel/initializers/helper.rb
660
659
  - lib/capistrano_multiconfig_parallel/multi_app_helpers/dependency_tracker.rb
661
660
  - lib/capistrano_multiconfig_parallel/multi_app_helpers/interactive_menu.rb
662
661
  - lib/capistrano_multiconfig_parallel/version.rb
@@ -1,22 +0,0 @@
1
- module CapistranoMulticonfigParallel
2
- # class used to find application dependencies
3
- class Helper
4
- # rubocop:disable Lint/Eval
5
- def self.capture(stream)
6
- stream = stream.to_s
7
- captured_stream = Tempfile.new(stream)
8
- stream_io = eval("$#{stream}")
9
- origin_stream = stream_io.dup
10
- stream_io.reopen(captured_stream)
11
-
12
- yield
13
-
14
- stream_io.rewind
15
- return captured_stream.read
16
- ensure
17
- captured_stream.close
18
- captured_stream.unlink
19
- stream_io.reopen(origin_stream)
20
- end
21
- end
22
- end