class CapistranoMulticonfigParallel::DependencyTracker
class used to find application dependencies
Attributes
job_manager[RW]
Public Class Methods
new(job_manager)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 9 def initialize(job_manager) @job_manager = job_manager end
Public Instance Methods
fetch_apps_needed_for_deployment(application, action)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 13 def fetch_apps_needed_for_deployment(application, action) return [[], {}] unless @job_manager.send(:multi_apps?) if @job_manager.custom_command? show_interactive_menu(action) else fetch_application_dependencies(application, action) end end
Private Instance Methods
add_dependency_app(app_to_deploy, apps_dependencies, applications_to_deploy)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 51 def add_dependency_app(app_to_deploy, apps_dependencies, applications_to_deploy) return unless app_to_deploy.present? applications_to_deploy << app_to_deploy return unless app_to_deploy['dependencies'].present? app_to_deploy['dependencies'].each do |dependency| dependency_app = application_dependencies.find { |hash| hash['app'] == dependency } apps_dependencies << dependency_app if dependency_app.present? end end
application_dependencies()
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 40 def application_dependencies deps = configuration.application_dependencies value_is_array?(deps) ? deps.map(&:stringify_keys) : [] end
available_apps()
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 45 def available_apps applications = application_dependencies.map { |hash| hash['app'].camelcase } applications << 'all_frameworks' applications end
check_app_dependency_unique(applications_selected, apps_dependencies, applications_to_deploy, action)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 71 def check_app_dependency_unique(applications_selected, apps_dependencies, applications_to_deploy, action) return applications_to_deploy if applications_selected.blank? || apps_dependencies.blank? || (apps_dependencies.map { |app| app['app'] } - applications_to_deploy.map { |app| app['app'] }).blank? apps_dependency_confirmation = ask_confirm("Do you want to #{action} all dependencies also ?", 'Y/N') applications_to_deploy = applications_to_deploy.concat(apps_dependencies) if action_confirmed?(apps_dependency_confirmation) applications_to_deploy end
fetch_application_dependencies(application, action)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 24 def fetch_application_dependencies(application, action) return [[], {}] if configuration.application_dependencies.blank? || application.blank? applications = get_applications_to_deploy(action, [application.camelcase]) applications = applications.present? ? applications : [] app_options = applications.find { |hash| hash['app'] == application } app_options = app_options.present? ? app_options.dup : app_options applications.delete_if { |hash| hash['app'] == application } [applications, (app_options || {})] end
find_apps_and_deps(applications_selected)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 61 def find_apps_and_deps(applications_selected) applications_to_deploy = [] apps_dependencies = [] applications_selected.each do |app| app_to_deploy = application_dependencies.find { |hash| hash['app'].camelcase == app } add_dependency_app(app_to_deploy, apps_dependencies, applications_to_deploy) end [applications_to_deploy, apps_dependencies] end
get_applications_to_deploy(action, applications_selected)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 78 def get_applications_to_deploy(action, applications_selected) all_frameworks = applications_selected.find { |app| app == 'all_frameworks' } if all_frameworks.present? applications_to_deploy = application_dependencies.map { |hash| hash } else applications_to_deploy, apps_dependencies = find_apps_and_deps(applications_selected) applications_to_deploy = check_app_dependency_unique(applications_selected, apps_dependencies, applications_to_deploy, action) end if applications_to_deploy.present? applications_to_deploy = applications_to_deploy.uniq applications_to_deploy = applications_to_deploy.sort_by { |hash| hash['priority'] } end show_frameworks_used(applications_to_deploy, all_frameworks, action) end
print_frameworks_used(app_names, applications_to_deploy, action)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 105 def print_frameworks_used(app_names, applications_to_deploy, action) app_names.each { |app| puts "#{app}" } apps_deploy_confirmation = ask_confirm("Are you sure you want to #{action} these apps?", 'Y/N') if action_confirmed?(apps_deploy_confirmation) return applications_to_deploy else return applications_to_deploy end end
show_frameworks_used(applications_to_deploy, all_frameworks, action)
click to toggle source
# File lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb, line 93 def show_frameworks_used(applications_to_deploy, all_frameworks, action) return [] if applications_to_deploy.blank? || applications_to_deploy.size < 1 puts 'The following frameworks will be used:' app_names = [] if all_frameworks.present? app_names = applications_to_deploy.map { |app| app['app'].camelcase } else app_names = applications_to_deploy.map { |app| application_dependencies.find { |hash| hash['app'] == app['app'] }['app'].camelcase } end print_frameworks_used(app_names, applications_to_deploy, action) end