Module: CapistranoMulticonfigParallel::InternalHelper
- Included in:
- ApplicationHelper, Configuration
- Defined in:
- lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb
Overview
internal helpers for logging mostly
Class Method Summary collapse
- .arg_is_in_default_config?(arg) ⇒ Boolean
- .check_file(file, filename) ⇒ Object
- .create_log_file(file_path) ⇒ Object
- .custom_commands ⇒ Object
- .default_config_keys ⇒ Object
- .default_internal_config ⇒ Object
- .default_internal_configuration_params(new_config) ⇒ Object
- .detect_root ⇒ Object
- .enable_main_log_file ⇒ Object
- .fail_capfile_not_found(root) ⇒ Object
- .fetch_default_internal_config ⇒ Object
- .find_config_type(type) ⇒ Object
- .find_env_multi_cap_root ⇒ Object
- .find_file_by_names(custom_path = detect_root, names = ['capfile']) ⇒ Object
- .find_file_in_directory(root, filename) ⇒ Object
- .get_current_gem_name ⇒ Object
- .internal_config_directory ⇒ Object
- .internal_config_file ⇒ Object
- .log_directory ⇒ Object
- .main_log_file ⇒ Object
- .multi_level_prop(config, prop) ⇒ Object
- .pathname_is_root?(root) ⇒ Boolean
- .pwd_directory ⇒ Object
- .pwd_parent_dir ⇒ Object
- .root ⇒ Object
- .setup_default_configuration_types(hash) ⇒ Object
- .sliced_default_config(hash) ⇒ Object
- .try_detect_file(filename = 'capfile', root = pwd_parent_dir) ⇒ Object
- .try_detect_file_in_dir(filename = 'multi_cap.yml', dirs = ['config']) ⇒ Object
Class Method Details
.arg_is_in_default_config?(arg) ⇒ Boolean
52 53 54 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 52 def arg_is_in_default_config?(arg) default_config_keys.find { |key| key == arg.split('=')[0].tr('--', '') }.present? end |
.check_file(file, filename) ⇒ Object
104 105 106 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 104 def check_file(file, filename) file.file? && file.basename.to_s.downcase == filename.to_s.downcase end |
.create_log_file(file_path) ⇒ Object
155 156 157 158 159 160 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 155 def create_log_file(file_path) return if file_path.blank? directory = File.dirname(file_path) FileUtils.mkdir_p(directory) unless File.directory?(directory) FileUtils.touch(file_path) unless File.file?(file_path) end |
.custom_commands ⇒ Object
151 152 153 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 151 def custom_commands ['deploy_multi_stages'] end |
.default_config_keys ⇒ Object
48 49 50 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 48 def default_config_keys default_internal_config.map { |array| array[0].to_s }.concat([CapistranoMulticonfigParallel.env_job_key_id, 'capistrano_version']) end |
.default_internal_config ⇒ Object
35 36 37 38 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 35 def default_internal_config @default_config ||= fetch_default_internal_config @default_config end |
.default_internal_configuration_params(new_config) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 56 def default_internal_configuration_params(new_config) array = [] new_config.each do |hash| array << [hash['name'], sliced_default_config(hash)] end array end |
.detect_root ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 130 def detect_root if find_env_multi_cap_root Pathname.new(find_env_multi_cap_root) elsif defined?(::Rails) ::Rails.root else root = try_detect_file fail_capfile_not_found(root) root end end |
.enable_main_log_file ⇒ Object
162 163 164 165 166 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 162 def enable_main_log_file create_log_file(main_log_file) log_file = File.open(main_log_file, 'w') log_file.sync = true end |
.fail_capfile_not_found(root) ⇒ Object
92 93 94 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 92 def fail_capfile_not_found(root) fail "Can't detect Capfile in the application root".red if root.blank? end |
.fetch_default_internal_config ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 40 def fetch_default_internal_config config = YAML.load_file(internal_config_file)['default_config'] new_config = config.map do |hash| setup_default_configuration_types(hash) end default_internal_configuration_params(new_config) end |
.find_config_type(type) ⇒ Object
75 76 77 78 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 75 def find_config_type(type) type = type.to_s %w(boolean filename string).include?(type) ? type.delete(':').to_sym : type.to_s.constantize end |
.find_env_multi_cap_root ⇒ Object
80 81 82 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 80 def find_env_multi_cap_root ENV['MULTI_CAP_ROOT'] end |
.find_file_by_names(custom_path = detect_root, names = ['capfile']) ⇒ Object
112 113 114 115 116 117 118 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 112 def find_file_by_names(custom_path = detect_root, names = ['capfile']) names = names.is_a?(Array) ? names : [names] pathnames = names.collect do |name| Pathname.new(custom_path).children.find { |file| check_file(file, name) } end pathnames.present? && pathnames.is_a?(Array) ? pathnames.compact : pathnames end |
.find_file_in_directory(root, filename) ⇒ Object
108 109 110 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 108 def find_file_in_directory(root, filename) root.children.find { |file| check_file(file, filename) }.present? || pathname_is_root?(root) end |
.get_current_gem_name ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 6 def get_current_gem_name searcher = if Gem::Specification.respond_to? :find # ruby 2.0 Gem::Specification elsif Gem.respond_to? :searcher # ruby 1.8/1.9 Gem.searcher.init_gemspecs end spec = unless searcher.nil? searcher.find do |spec| File.fnmatch(File.join(spec.full_gem_path,'*'), __FILE__) end end spec.name if spec.present? end |
.internal_config_directory ⇒ Object
27 28 29 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 27 def internal_config_directory File.join(root.to_s, get_current_gem_name, 'configuration') end |
.internal_config_file ⇒ Object
31 32 33 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 31 def internal_config_file File.join(internal_config_directory, 'default.yml') end |
.log_directory ⇒ Object
142 143 144 145 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 142 def log_directory log_dir = configuration.log_dir || detect_root.to_s File.join(log_dir.to_s, 'log') end |
.main_log_file ⇒ Object
147 148 149 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 147 def main_log_file File.join(log_directory, 'multi_cap.log') end |
.multi_level_prop(config, prop) ⇒ Object
22 23 24 25 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 22 def multi_level_prop(config, prop) prop.split('.').each { |new_prop| config = config[new_prop] } config end |
.pathname_is_root?(root) ⇒ Boolean
88 89 90 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 88 def pathname_is_root?(root) root.root? end |
.pwd_directory ⇒ Object
100 101 102 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 100 def pwd_directory Pathname.new(FileUtils.pwd) end |
.pwd_parent_dir ⇒ Object
96 97 98 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 96 def pwd_parent_dir pwd_directory.directory? ? pwd_directory : pwd_directory.parent end |
.root ⇒ Object
84 85 86 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 84 def root File.(File.dirname(File.dirname(__dir__))) end |
.setup_default_configuration_types(hash) ⇒ Object
68 69 70 71 72 73 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 68 def setup_default_configuration_types(hash) hash.each_with_object({}) do |(key, value), memo| memo[key] = (key == 'type') ? find_config_type(value) : value memo end end |
.sliced_default_config(hash) ⇒ Object
64 65 66 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 64 def sliced_default_config(hash) hash.slice('type', 'description', 'default', 'required') end |
.try_detect_file(filename = 'capfile', root = pwd_parent_dir) ⇒ Object
125 126 127 128 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 125 def try_detect_file(filename = 'capfile', root = pwd_parent_dir ) root = root.parent until find_file_in_directory(root, filename) pathname_is_root?(root) ? nil : root end |
.try_detect_file_in_dir(filename = 'multi_cap.yml', dirs = ['config']) ⇒ Object
120 121 122 123 |
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 120 def try_detect_file_in_dir(filename = 'multi_cap.yml', dirs = ['config']) root = dirs.is_a?(Array) && dirs.present? ? Pathname.new(File.join(FileUtils.pwd, *dirs)) : pwd_parent_dir try_detect_file(filename, root) end |