class Kontena::Cli::Apps::InitCommand

Public Instance Methods

execute() click to toggle source
# File lib/kontena/cli/apps/init_command.rb, line 18
def execute
  if File.exist?('Dockerfile')
    puts 'Found Dockerfile'
  elsif create_dockerfile?
    puts "Creating #{'Dockerfile'.colorize(:cyan)}"
    DockerfileGenerator.new.generate(base_image)
  end

  if File.exist?('Procfile')
    procfile = ::YAML.safe_load(File.read('Procfile'))
  else
    procfile = {}
  end

  app_env = create_env_file(app_json['env']) if app_json['env']
  addons = app_json['addons'] || []

  if File.exist?(docker_compose_file)
    puts "Found #{docker_compose_file}."
  elsif create_docker_compose_yml?
    puts "Creating #{docker_compose_file.colorize(:cyan)}"
    docker_compose_generator = DockerComposeGenerator.new(docker_compose_file)
    docker_compose_generator.generate(procfile, addons, app_env)
  end

  if File.exist?('kontena.yml')
    puts "Updating #{'kontena.yml'.colorize(:cyan)}"
  else
    puts "Creating #{'kontena.yml'.colorize(:cyan)}"
  end

  kontena_yml_generator = KontenaYmlGenerator.new(image_name, service_prefix)
  if File.exist?(docker_compose_file)
    kontena_yml_generator.generate_from_compose_file(docker_compose_file)
  else
    kontena_yml_generator.generate(procfile, addons, app_env)
  end

  puts "Your app is ready! Deploy with 'kontena app deploy'.".colorize(:green)
end

Protected Instance Methods

create_docker_compose_yml?() click to toggle source
# File lib/kontena/cli/apps/init_command.rb, line 84
def create_docker_compose_yml?
  prompt.yes?("#{docker_compose_file} not found. Do you want to create it?")
end
create_dockerfile?() click to toggle source
# File lib/kontena/cli/apps/init_command.rb, line 66
def create_dockerfile?
  prompt.yes?('Dockerfile not found. Do you want to create it?')
end
create_env_file(env) click to toggle source
# File lib/kontena/cli/apps/init_command.rb, line 70
def create_env_file(env)
  app_env = File.new('.env', 'w')
  app_json['env'].each do |key, env|
    if env['generator'] == 'secret'
      value = SecureRandom.hex(64)
    else
      value = env['value']
    end
    app_env.puts "#{key}=#{value}"
  end
  app_env.close
  '.env'
end
service_prefix() click to toggle source
# File lib/kontena/cli/apps/init_command.rb, line 62
def service_prefix
  @service_prefix ||= project_name || current_dir
end