Class: Subspace::Commands::Base

Inherits:
Commander::Command
  • Object
show all
Includes:
Ansible
Defined in:
lib/subspace/commands/base.rb

Instance Method Summary collapse

Methods included from Ansible

#ansible_command

Instance Method Details

#confirm_overwrite(file_path) ⇒ Object



50
51
52
53
54
# File 'lib/subspace/commands/base.rb', line 50

def confirm_overwrite(file_path)
  return true unless File.exists? file_path
  answer = ask "#{file_path} already exists. Reply 'y' to overwrite: [no] "
  return answer.downcase.start_with? "y"
end

#copy(src, dest = nil) ⇒ Object



43
44
45
46
47
48
# File 'lib/subspace/commands/base.rb', line 43

def copy(src, dest = nil)
  dest ||= src
  return unless confirm_overwrite File.join(dest_dir, dest)
  FileUtils.cp File.join(template_dir, src), File.join(dest_dir, dest)
  say "Wrote #{dest}"
end

#dest_dirObject



27
28
29
# File 'lib/subspace/commands/base.rb', line 27

def dest_dir
  "config/provision"
end

#gem_pathObject



19
20
21
# File 'lib/subspace/commands/base.rb', line 19

def gem_path
  File.expand_path '../../../..', __FILE__
end

#pass_through_paramsObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/subspace/commands/base.rb', line 56

def pass_through_params
  ansible_options = []
  self.class::PASS_THROUGH_PARAMS.each do |param_name|
    x = param_name.split('-')[1..-1].map(&:upcase).join('_')
    hash_key = (param_name.gsub('-', '_') + (x == '' ? '' : "_#{x}")).to_sym
    value = @options.__hash__[hash_key]
    if value
      if param_name.length > 1
        ansible_options += ["--#{param_name}", value]
      else
        ansible_options += ["-#{param_name}", value]
      end
    end
  end

  ansible_options
end

#playbook_dirObject



11
12
13
# File 'lib/subspace/commands/base.rb', line 11

def playbook_dir
  File.join(gem_path, 'ansible', 'playbooks')
end

#project_pathObject



23
24
25
# File 'lib/subspace/commands/base.rb', line 23

def project_path
  Dir.pwd # TODO make sure this is correct if they for whatever reason aren't running subspace from the project root??
end

#require_configurationObject



7
8
9
# File 'lib/subspace/commands/base.rb', line 7

def require_configuration
  load "config/provision.rb"
end

#template(src, dest = nil, render_binding = nil) ⇒ Object



31
32
33
34
35
# File 'lib/subspace/commands/base.rb', line 31

def template(src, dest = nil, render_binding = nil)
  return unless confirm_overwrite File.join(dest_dir, dest || src)
  template! src, dest, render_binding
  say "Wrote #{dest}"
end

#template!(src, dest = nil, render_binding = nil) ⇒ Object



37
38
39
40
41
# File 'lib/subspace/commands/base.rb', line 37

def template!(src, dest = nil, render_binding = nil)
  dest ||= src
  template = ERB.new File.read(File.join(template_dir, "#{src}.erb")), nil, '-'
  File.write File.join(dest_dir, dest), template.result(render_binding || binding)
end

#template_dirObject



15
16
17
# File 'lib/subspace/commands/base.rb', line 15

def template_dir
  File.join(gem_path, 'template', 'provision')
end