Class: Cody::CLI::Init

Inherits:
Sequence
  • Object
show all
Defined in:
lib/cody/cli/init.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Sequence

source_paths

Methods included from AwsServices

#cfn, #codebuild

Methods included from AwsServices::Helpers

#are_you_sure?, #find_stack, #inferred_project_name, #inferred_stack_name, #normalize_stack_name, #project_name_convention, #stack_exists?

Class Method Details

.cli_optionsObject

Ugly, this is how I can get the options from to match with this Thor::Group



4
5
6
7
8
9
10
11
12
13
# File 'lib/cody/cli/init.rb', line 4

def self.cli_options
  [
    [:force, type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files"],
    [:name, desc: "CodeBuild project name"],
    [:mode, default: "light", desc: "Modes: light or full"],
    [:template, desc: "Custom template to use"],
    [:template_mode, desc: "Template mode: replace or additive"],
    [:type, desc: "Type option creates a subfolder under .cody"],
  ]
end

Instance Method Details

#copy_projectObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/cody/cli/init.rb', line 48

def copy_project
  dest = ".cody"
  dest = "#{dest}/#{@options[:type]}" if @options[:type]

  excludes = %w[.git]
  if @options[:mode] == "light"
    excludes += %w[
      role.rb
      schedule.rb
    ]
  end

  pattern = Regexp.new(excludes.join('|'))
  directory "project", dest, exclude_pattern: pattern
end

#copy_top_levelObject



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/cody/cli/init.rb', line 35

def copy_top_level
  dest = ".cody"
  excludes = %w[.git]
  if @options[:mode] == "light"
    excludes += %w[
      settings.yml
      variables
    ]
  end
  pattern = Regexp.new(excludes.join('|'))
  directory "top", dest, exclude_pattern: pattern
end

#set_source_pathObject



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/cody/cli/init.rb', line 22

def set_source_path
  return unless @options[:template]

  custom_template = "#{ENV['HOME']}/.cody/templates/#{full_repo_name}"

  if @options[:template_mode] == "replace" # replace the template entirely
    override_source_paths(custom_template)
  else # additive: modify on top of default template
    default_template = File.expand_path("../../template", __FILE__)
    override_source_paths([custom_template, default_template])
  end
end

#setup_template_repoObject



16
17
18
19
20
# File 'lib/cody/cli/init.rb', line 16

def setup_template_repo
  return unless @options[:template]&.include?('/')

  sync_template_repo
end