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:

  • (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_commandsObject



151
152
153
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 151

def custom_commands
  ['deploy_multi_stages']
end

.default_config_keysObject



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_configObject



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_rootObject



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_fileObject



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_configObject



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_rootObject



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_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



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_fileObject



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_directoryObject



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_fileObject



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

Returns:

  • (Boolean)


88
89
90
# File 'lib/capistrano_multiconfig_parallel/helpers/internal_helper.rb', line 88

def pathname_is_root?(root)
  root.root?
end

.pwd_directoryObject



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

def pwd_directory
  Pathname.new(FileUtils.pwd)
end

.pwd_parent_dirObject



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

.rootObject



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

def root
  File.expand_path(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