lib/kontena/cli/apps/common.rb in kontena-cli-0.11.7 vs lib/kontena/cli/apps/common.rb in kontena-cli-0.12.0
- old
+ new
@@ -7,36 +7,50 @@
def require_config_file(filename)
abort("File #{filename} does not exist") unless File.exists?(filename)
end
+ # @param [String] filename
+ # @param [Array<String>] service_list
+ # @param [String] prefix
+ # @return [Hash]
def load_services(filename, service_list, prefix)
services = parse_services(filename, nil, prefix)
services.delete_if { |name, service| !service_list.include?(name)} unless service_list.empty?
services
end
+ # @return [String]
def token
@token ||= require_token
end
+ # @param [String] name
+ # @return [String]
def prefixed_name(name)
return name if service_prefix.strip == ""
"#{service_prefix}-#{name}"
end
+ # @return [String]
def current_dir
File.basename(Dir.getwd)
end
+ # @param [String] name
+ # @return [Boolean]
def service_exists?(name)
get_service(token, prefixed_name(name)) rescue false
end
- def parse_services(file, name = nil, prefix='')
- services = YAML.load(File.read(File.expand_path(file)) % {project: prefix})
+ # @param [String] file
+ # @param [String,NilClass] name
+ # @param [String] prefix
+ # @return [Hash]
+ def parse_services(file, name = nil, prefix = '')
+ services = YAML.load(File.read(File.expand_path(file)) % {project: prefix, grid: current_grid})
Dir.chdir(File.dirname(File.expand_path(file))) do
services.each do |name, options|
normalize_env_vars(options)
if options.has_key?('extends')
extension_file = options['extends']['file']
@@ -47,41 +61,54 @@
end
end
if name.nil?
services
else
+ abort("Service #{name} not found in #{file}") unless services.has_key?(name)
services[name]
end
end
+ # @param [Hash] options
+ # @param [String] file
+ # @param [String] service_name
+ # @param [String] prefix
+ # @return [Hash]
def extend_options(options, file, service_name, prefix)
parent_options = parse_services(file, service_name, prefix)
options['environment'] = extend_env_vars(parent_options, options)
parent_options.merge(options)
end
+ # @param [Hash] options
def normalize_env_vars(options)
if options['environment'].is_a?(Hash)
options['environment'] = options['environment'].map{|k, v| "#{k}=#{v}"}
end
end
+ # @param [Hash] from
+ # @param [Hash] to
+ # @return [Array]
def extend_env_vars(from, to)
env_vars = to['environment'] || []
if from['environment']
from['environment'].each do |env|
env_vars << env unless to['environment'] && to['environment'].find {|key| key.split('=').first == env.split('=').first}
end
end
env_vars
end
- def create_yml(services, file='kontena.yml')
+ # @param [Hash] services
+ # @param [String] file
+ def create_yml(services, file = 'kontena.yml')
yml = File.new(file, 'w')
yml.puts services.to_yaml
yml.close
end
+ # @return [Hash]
def app_json
if !@app_json && File.exist?('app.json')
@app_json = JSON.parse(File.read('app.json'))
else
@app_json = {}