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

Class Method Details

.arg_is_in_default_config?(arg) ⇒ Boolean

Returns:



68
69
70
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 68

def arg_is_in_default_config?(arg)
  default_config_keys.find { |key| key == arg.split('=')[0].tr('--', '') }.present?
end

.check_file(file, filename) ⇒ Object



120
121
122
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 120

def check_file(file, filename)
  file.file? && file.basename.to_s.downcase == filename.to_s.downcase
end

.create_log_file(file_path) ⇒ Object



168
169
170
171
172
173
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 168

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_commandsObject



164
165
166
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 164

def custom_commands
  ['deploy_multi_stages']
end

.default_config_keysObject



64
65
66
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 64

def default_config_keys
  default_internal_config.map { |array| array[0].to_s }.concat([CapistranoMulticonfigParallel.env_job_key_id, 'capistrano_version'])
end

.default_internal_configObject



51
52
53
54
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 51

def default_internal_config
  @default_config ||= fetch_default_internal_config
  @default_config
end

.default_internal_configuration_params(new_config) ⇒ Object



72
73
74
75
76
77
78
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 72

def default_internal_configuration_params(new_config)
  array = []
  new_config.each do |hash|
    array << [hash['name'], sliced_default_config(hash)]
  end
  array
end

.detect_rootObject



143
144
145
146
147
148
149
150
151
152
153
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 143

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_fileObject



175
176
177
178
179
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 175

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



108
109
110
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 108

def fail_capfile_not_found(root)
  fail "Can't detect Capfile in the  application root".red if root.blank?
end

.fetch_default_internal_configObject



56
57
58
59
60
61
62
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 56

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



91
92
93
94
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 91

def find_config_type(type)
  type = type.to_s
  %w(boolean filename string).include?(type) ? type.delete(':').to_sym : type.constantize
end

.find_env_multi_cap_rootObject



96
97
98
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 96

def find_env_multi_cap_root
  ENV['MULTI_CAP_ROOT']
end

.find_file_by_names(custom_path = detect_root, names = ['capfile']) ⇒ Object



128
129
130
131
132
133
134
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 128

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



124
125
126
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 124

def find_file_in_directory(root, filename)
  root.children.find { |file| check_file(file, filename) }.present? || pathname_is_root?(root)
end

.get_current_gem_nameObject



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_directoryObject



43
44
45
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 43

def internal_config_directory
 File.join(root.to_s, get_current_gem_name, 'configuration')
end

.internal_config_fileObject



47
48
49
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 47

def internal_config_file
  File.join(internal_config_directory, 'default.yml')
end

.log_directoryObject



155
156
157
158
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 155

def log_directory
  log_dir = configuration.log_dir || detect_root.to_s
  File.join(log_dir.to_s, 'log')
end

.main_log_fileObject



160
161
162
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 160

def main_log_file
  File.join(log_directory, 'multi_cap.log')
end

.multi_level_prop(config, prop) ⇒ Object



38
39
40
41
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 38

def multi_level_prop(config, prop)
  prop.split('.').each { |new_prop| config = config[new_prop] }
  config
end

.pathname_is_root?(root) ⇒ Boolean

Returns:



104
105
106
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 104

def pathname_is_root?(root)
  root.root?
end

.pwd_directoryObject



116
117
118
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 116

def pwd_directory
  Pathname.new(FileUtils.pwd)
end

.pwd_parent_dirObject



112
113
114
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 112

def pwd_parent_dir
  pwd_directory.directory? ? pwd_directory : pwd_directory.parent
end

.rootObject



100
101
102
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 100

def root
  File.expand_path(File.dirname(File.dirname(__dir__)))
end

.setup_default_configuration_types(hash) ⇒ Object



84
85
86
87
88
89
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 84

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



80
81
82
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 80

def sliced_default_config(hash)
  hash.slice('type', 'description', 'default', 'required')
end

.try_detect_file(filename = 'capfile') ⇒ Object



137
138
139
140
141
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 137

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