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 = {}