class Kubes::CLI::Init

Public Class Methods

options() click to toggle source
# File lib/kubes/cli/init.rb, line 3
def self.options
  [
    [:app, aliases: ["a"], required: true, desc: "Docker repo name. Example: web. Generates .kubes/APP/resources folder"],
    [:force, aliases: ["y"], type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files"],
    [:type, aliases: ["t"], default: "yaml", desc: "Type: dsl or yaml"],
    [:repo, required: true, desc: "Docker repo name. Example: user/repo. Configures .kubes/config.rb"],
    [:namespace, aliases: ["n"], desc: "Namespace to use, defaults to APP-ENV. IE: demo-dev"],
  ]
end

Public Instance Methods

adjust_gitignore() click to toggle source
# File lib/kubes/cli/init.rb, line 85
def adjust_gitignore
  ignores = %w[
    .kubes/output
    .kubes/state
  ].map {|l| "#{l}\n"} # the readlines will have lines with \n so keep consistent for processing
  if File.exist?(".gitignore")
    lines = IO.readlines(".gitignore")
    if lines.detect { |l| l.include?('.kubes/output') }
      return # early
    else
      lines += ignores
    end
  else
    lines = ignores
  end

  text = lines.join('')
  IO.write(".gitignore", text)
  puts "Updated .gitignore"
end
create_base_files() click to toggle source
# File lib/kubes/cli/init.rb, line 64
def create_base_files
  set_source("base")
  directory ".", "."
end
create_dockefile() click to toggle source
# File lib/kubes/cli/init.rb, line 58
def create_dockefile
  return if File.exist?("Dockerfile")
  set_source("docker")
  directory ".", "."
end
create_dsl_files() click to toggle source
# File lib/kubes/cli/init.rb, line 69
def create_dsl_files
  return unless @options[:type] == "dsl"
  set_source("dsl")
  directory ".", ".", directory_options
end
create_yaml_files() click to toggle source
# File lib/kubes/cli/init.rb, line 75
def create_yaml_files
  return if @options[:type] == "dsl"
  set_source("yaml")
  directory ".", ".", directory_options
end
message() click to toggle source
# File lib/kubes/cli/init.rb, line 81
def message
  logger.info "Initialized .kubes folder"
end

Private Instance Methods

app() click to toggle source

Needs to be a method to its available for templates/.kubes/resources/%app%

# File lib/kubes/cli/init.rb, line 17
def app
  @options[:app]
end
default_namespace() click to toggle source
# File lib/kubes/cli/init.rb, line 25
def default_namespace
  env = @options[:type] == "yaml" ? '<%= Kubes.env %>' : '#{Kubes.env}'
  "#{app}-#{env}"
end
directory_options() click to toggle source
# File lib/kubes/cli/init.rb, line 48
def directory_options
  if excludes.empty?
    {}
  else
    pattern = Regexp.new(excludes.join('|'))
    {exclude_pattern: pattern }
  end
end
excludes() click to toggle source
# File lib/kubes/cli/init.rb, line 30
def excludes
  if namespace == "default"
    case options[:type]
    when "dsl"
      %w[
        namespace.rb.tt
      ]
    else
      %w[
        all.yaml.tt
        namespace.yaml.tt
      ]
    end
  else
    []
  end
end
namespace() click to toggle source
# File lib/kubes/cli/init.rb, line 21
def namespace
  @options[:namespace] || default_namespace
end