capistrano_multiconfig_parallel 0.13.0 → 0.13.1

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
  SHA1:
3
- metadata.gz: 0a94bfcd478671618c964a8aceeea6279ce001d7
4
- data.tar.gz: 7f532987d4c39dfad8a69b5d5abfa887076c5363
3
+ metadata.gz: c0d7fbfdddb1813c37500eed17d8d200fa162d35
4
+ data.tar.gz: f28477691b9551c1e59040c561869a4246e2ef0c
5
5
  SHA512:
6
- metadata.gz: 5df46089130cd81277c53146c72564634d9e22ff41060cef8b5acfffd770b5f70d9fc98da828e8cb392de28c5689242d44d504164cf7fc5d6f531972d50be099
7
- data.tar.gz: eab535d887b690c6358adf9815e609bad57c26a7c3ba1456ec6301fc90cf24e1413e13b654db0c8b3eededb0423f3569bce9f750190cd4579d8473e27a4db8fb
6
+ metadata.gz: 38032af4671c6b73fe789c0014d7d6d410a4fe72e1dc5563f2645ec1df061aaef191cfa2e5b183c2396f4d6697ef804f4e1e1236168d030cb81286d46c915423
7
+ data.tar.gz: 8e4c41d88e958835fa3682180809c9fd11f8dfa02425d9b020ee204c283dcd894e9514f6db4227fe8fce7931faddf5d9a28c13469b1fefbc614193b56abf1686
data/README.md CHANGED
@@ -79,7 +79,6 @@ apply_stage_confirmation:
79
79
  task_confirmations:
80
80
  - deploy:symlink:release
81
81
 
82
- track_dependencies: false
83
82
  application_dependencies: []
84
83
  ---
85
84
  ```
@@ -111,9 +110,9 @@ Available command line options when executing a command
111
110
 
112
111
  - if option is present and has value an ARRAY of Strings, and --task_confirmation_active is TRUE , then will require a confirmation from user before executing the task. This will syncronize all workers to wait before executing that task, then a confirmation will be displayed, and when user will confirm , all workers will resume their operation.
113
112
 
114
- - --track_dependencies
113
+ - --application_dependencies
115
114
 
116
- - This should be useed only for Caphub-like applications , in order to deploy dependencies of an application in parallel. This is used only in combination with option **--application_dependencies** which is described at section **[2.) Multiple applications](#multiple_apps)**
115
+ - This should be used only for Caphub-like applications , in order to deploy dependencies of an application in parallel and is described at section **[2.) Multiple applications](#multiple_apps)**
117
116
 
118
117
  Usage Instructions
119
118
  ==================
@@ -171,7 +170,6 @@ Configuration for this types of application is more complicated
171
170
 
172
171
  ```yaml
173
172
  ---
174
- track_dependencies: true
175
173
  application_dependencies:
176
174
  - app: foo'
177
175
  priority: 1
@@ -190,8 +188,6 @@ application_dependencies:
190
188
 
191
189
  The "development_stages" options is used so that the gem can know if sandboxes are allowed for those environments.
192
190
 
193
- If you want to deploy an application with dependencies you can use the option "track_dependencies". If that options has value "true" , it will ask the user before deploying a application if he needs the dependencies deployed too
194
-
195
191
  The dependencies are being kept in the option "application_dependencies" This is an array of hashes. Each hash has only the keys "app" ( app name), "priority" and "dependencies" ( an array of app names that this app is dependent to)
196
192
 
197
193
  In this example, if we execute this command:
@@ -54,7 +54,6 @@ module CapistranoMulticonfigParallel
54
54
  end
55
55
 
56
56
  def enable_logging
57
- CapistranoMulticonfigParallel.configuration_valid?
58
57
  FileUtils.mkdir_p(log_directory) unless File.directory?(log_directory)
59
58
  if CapistranoMulticonfigParallel::CelluloidManager.debug_enabled.to_s.downcase == 'true'
60
59
  FileUtils.touch(main_log_file) unless File.file?(main_log_file)
@@ -116,11 +116,10 @@ module CapistranoMulticonfigParallel
116
116
  end
117
117
 
118
118
  def apply_confirmations?
119
- confirmations = CapistranoMulticonfigParallel.configuration.task_confirmations
119
+ confirmations = CapistranoMulticonfigParallel.configuration.task_confirmations
120
120
  confirmations.is_a?(Array) && confirmations.present?
121
121
  end
122
122
 
123
-
124
123
  def syncronized_confirmation?
125
124
  (!@job_manager.executes_deploy_stages?) ||
126
125
  (@job_manager.executes_deploy_stages? && !@job_manager.can_tag_staging? && @job_manager.confirmation_applies_to_all_workers?)
@@ -78,23 +78,32 @@ module CapistranoMulticonfigParallel
78
78
  raise ArgumentError, "invalid configuration for #{wrong.inspect}" if wrong.present?
79
79
  end
80
80
 
81
+ def verify_app_dependencies(stages)
82
+ applications = stages.map { |stage| stage.split(':').reverse[1] }
83
+ wrong = configuration.application_dependencies.find do |hash|
84
+ !applications.include?(hash[:app]) || (hash[:dependencies].present? && hash[:dependencies].find { |val| !applications.include?(val) })
85
+ end
86
+ raise ArgumentError, "invalid configuration for #{wrong.inspect}" if wrong.present?
87
+ end
88
+
81
89
  def check_boolean(c, prop)
82
90
  # return unless c[prop].present?
83
91
  raise ArgumentError, "the property `#{prop}` must be boolean" unless [true, false, 'true', 'false'].include?(c[prop].to_s.downcase)
84
92
  end
85
93
 
86
- def configuration_valid?
94
+ def configuration_valid?(stages)
87
95
  configuration
96
+ verify_app_dependencies(stages) if configuration.application_dependencies.present?
88
97
  end
89
98
 
90
99
  def check_configuration(c)
91
- %w(multi_debug multi_secvential track_dependencies websocket_server.enable_debug).each do |prop|
100
+ %w(multi_debug multi_secvential websocket_server.enable_debug).each do |prop|
92
101
  c.send("#{prop}=", c[prop.to_sym]) if check_boolean(c, prop.to_sym)
93
102
  end
94
103
  %w(task_confirmations development_stages apply_stage_confirmation).each do |prop|
95
104
  c.send("#{prop}=", c[prop.to_sym]) if verify_array_of_strings(c, prop.to_sym)
96
105
  end
97
- c.application_dependencies = c[:application_dependencies] if c[:track_dependencies].to_s.downcase == 'true' && verify_application_dependencies(c[:application_dependencies])
106
+ c.application_dependencies = c[:application_dependencies] if verify_application_dependencies(c[:application_dependencies])
98
107
  check_additional_config(c)
99
108
  end
100
109
 
@@ -45,14 +45,6 @@ default_config:
45
45
  default:
46
46
  - production
47
47
 
48
- - name: 'track_dependencies'
49
- type: ':boolean'
50
- description: >-
51
- This should be useed only for Caphub-like applications ,
52
- in order to deploy dependencies of an application in parallel.
53
- This is used only in combination with option **--application_dependencies**
54
- CAP_VALUE can be true or false
55
- default: false
56
48
 
57
49
  - name: 'application_dependencies'
58
50
  type: 'Array'
@@ -14,7 +14,17 @@ module CapistranoMulticonfigParallel
14
14
  @top_level_tasks = top_level_tasks
15
15
  @stages = stages
16
16
  @jobs = []
17
- CapistranoMulticonfigParallel.enable_logging
17
+ end
18
+
19
+ def run
20
+ options = {}
21
+ if custom_command?
22
+ run_custom_command(options)
23
+ else
24
+ options = verify_options_custom_command(options)
25
+ run_normal_command(options)
26
+ end
27
+ process_jobs
18
28
  end
19
29
 
20
30
  def can_start?
@@ -87,7 +97,9 @@ module CapistranoMulticonfigParallel
87
97
  end
88
98
 
89
99
  def check_before_starting
90
- CapistranoMulticonfigParallel.configuration_valid?
100
+ CapistranoMulticonfigParallel.configuration_valid?(@stages)
101
+ CapistranoMulticonfigParallel.enable_logging
102
+ @dependency_tracker = CapistranoMulticonfigParallel::DependencyTracker.new(Actor.current)
91
103
  @default_stage = CapistranoMulticonfigParallel.configuration.development_stages.present? ? CapistranoMulticonfigParallel.configuration.development_stages.first : 'development'
92
104
  @condition = Celluloid::Condition.new
93
105
  @manager = CapistranoMulticonfigParallel::CelluloidManager.new(Actor.current)
@@ -95,6 +107,7 @@ module CapistranoMulticonfigParallel
95
107
 
96
108
  def collect_jobs(options = {}, &block)
97
109
  options = prepare_options(options)
110
+ options = options.stringify_keys
98
111
  block.call(options) if block_given?
99
112
  rescue => e
100
113
  raise [e, e.backtrace].inspect
@@ -6,47 +6,15 @@ module CapistranoMulticonfigParallel
6
6
  include Celluloid
7
7
  include Celluloid::Logger
8
8
 
9
- def initialize(cap_app, top_level_tasks, stages)
10
- super(cap_app, top_level_tasks, stages)
11
- @dependency_tracker = CapistranoMulticonfigParallel::DependencyTracker.new(Actor.current)
12
- end
13
-
14
- def check_before_starting
15
- verify_app_dependencies(@stages) if configuration.present? && configuration.track_dependencies.to_s.downcase == 'true'
16
- super
17
- end
18
-
19
- def verify_app_dependencies(stages)
20
- applications = stages.map { |stage| stage.split(':').reverse[1] }
21
- wrong = configuration.application_dependencies.find do |hash|
22
- !applications.include?(hash[:app]) || (hash[:dependencies].present? && hash[:dependencies].find { |val| !applications.include?(val) })
23
- end
24
- raise ArgumentError, "invalid configuration for #{wrong.inspect}" if wrong.present?
25
- end
26
-
27
- def run
28
- options = {}
29
- if custom_command?
30
- run_custom_command(options)
31
- else
32
- menu_deploy_interactive(options)
9
+ def run_normal_command(options)
10
+ multi_collect_and_run_jobs(options) do |apps, new_options|
11
+ deploy_multiple_apps(apps, new_options)
12
+ deploy_app(new_options) if !custom_command? && new_options['app'].present?
33
13
  end
34
- process_jobs
35
14
  end
36
15
 
37
16
  def run_custom_command(options)
38
- return unless custom_command?
39
17
  CapistranoMulticonfigParallel.interactive_menu = true
40
- options = verify_options_custom_command(options)
41
- action_name = @name
42
- if action_name == custom_commands[:stages]
43
- multi_stage_deploy(options)
44
- else
45
- raise "Custom command #{@name} not available for multi apps"
46
- end
47
- end
48
-
49
- def multi_stage_deploy(options)
50
18
  stages = fetch_multi_stages
51
19
  return if stages.blank?
52
20
  stages = check_multi_stages(stages)
@@ -59,13 +27,6 @@ module CapistranoMulticonfigParallel
59
27
  end
60
28
  end
61
29
 
62
- def menu_deploy_interactive(options)
63
- multi_collect_and_run_jobs(options) do |apps, new_options|
64
- deploy_multiple_apps(apps, new_options)
65
- deploy_app(new_options) if !custom_command? && new_options['app'].present?
66
- end
67
- end
68
-
69
30
  private
70
31
 
71
32
  def multi_collect_and_run_jobs(options = {}, &block)
@@ -5,29 +5,13 @@ module CapistranoMulticonfigParallel
5
5
  include Celluloid
6
6
  include Celluloid::Logger
7
7
 
8
- def run
9
- options = {}
10
- if custom_command?
11
- run_custom_command(options)
12
- else
13
- deploy_single_app(options)
8
+ def run_normal_command(options)
9
+ collect_jobs(options) do |new_options|
10
+ deploy_app(new_options)
14
11
  end
15
- process_jobs
16
12
  end
17
13
 
18
14
  def run_custom_command(options)
19
- return unless custom_command?
20
- options = verify_options_custom_command(options)
21
- action_name = @name
22
- if action_name == custom_commands[:stages]
23
- stage_deploy(options)
24
- else
25
- raise "Custom command #{@name} not available for single apps"
26
- end
27
- end
28
-
29
- def stage_deploy(options)
30
- return unless custom_command?
31
15
  stages = fetch_multi_stages
32
16
  return if stages.blank?
33
17
  stages = check_multi_stages(stages)
@@ -37,12 +21,5 @@ module CapistranoMulticonfigParallel
37
21
  end
38
22
  end
39
23
  end
40
-
41
- def deploy_single_app(options)
42
- return if custom_command?
43
- collect_jobs(options) do |new_options|
44
- deploy_app(new_options)
45
- end
46
- end
47
24
  end
48
25
  end
@@ -14,7 +14,7 @@ module CapistranoMulticonfigParallel
14
14
  if @job_manager.custom_command? && @job_manager.multi_apps?
15
15
  apps_selected = all_websites_return_applications_selected
16
16
  applications = get_applications_to_deploy(action, apps_selected)
17
- elsif CapistranoMulticonfigParallel.configuration.track_dependencies
17
+ elsif CapistranoMulticonfigParallel.configuration.application_dependencies.present?
18
18
  if application.present?
19
19
  applications = get_applications_to_deploy(action, [application.camelcase])
20
20
  applications = applications.delete_if { |hash| hash['app'] == application }
@@ -30,7 +30,7 @@ module CapistranoMulticonfigParallel
30
30
  private
31
31
 
32
32
  def application_dependencies
33
- deps = CapistranoMulticonfigParallel.configuration.track_dependencies ? CapistranoMulticonfigParallel.configuration.application_dependencies : []
33
+ deps = CapistranoMulticonfigParallel.configuration.application_dependencies
34
34
  deps.present? && deps.is_a?(Array) ? deps.map(&:stringify_keys) : []
35
35
  end
36
36
 
@@ -8,7 +8,7 @@ module CapistranoMulticonfigParallel
8
8
  module VERSION
9
9
  MAJOR = 0
10
10
  MINOR = 13
11
- TINY = 0
11
+ TINY = 1
12
12
  PRE = nil
13
13
 
14
14
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano_multiconfig_parallel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - bogdanRada