Class: Prepd::Setup

Inherits:
Base
  • Object
show all
Defined in:
lib/prepd/models/setup.rb

Constant Summary collapse

ANSIBLE_ROLES_PATH =

TODO: add OS detection TODO: Externalize next two values to a yaml file?

"#{Dir.home}/.ansible/roles".freeze
ANSIBLE_ROLES =
{'prepd-roles' => 'prepd', 'terraplate' => 'terraplate', 'terraplate-components' => 'terraplate-components' }.freeze

Instance Method Summary collapse

Methods inherited from Base

#create

Instance Method Details

#clone_ansible_rolesObject

Clone Ansible roles



38
39
40
41
42
43
44
45
46
# File 'lib/prepd/models/setup.rb', line 38

def clone_ansible_roles
  FileUtils.mkdir_p(ANSIBLE_ROLES_PATH) unless Dir.exists? ANSIBLE_ROLES_PATH
  Dir.chdir(ANSIBLE_ROLES_PATH) do
    ANSIBLE_ROLES.each do |key, value|
      next if Dir.exists? "#{ANSIBLE_ROLES_PATH}/#{value}"
      system("git clone #{Prepd.git_log} [email protected]:rjayroach/#{key} #{value}")
    end
  end
end

#directory_cannot_existObject



12
13
14
15
# File 'lib/prepd/models/setup.rb', line 12

def directory_cannot_exist
  return if Prepd.config.force
  errors.add(:directory_exists, requested_dir) if Dir.exists?(requested_dir)
end

#initialize_setupObject



21
22
23
24
25
26
27
28
# File 'lib/prepd/models/setup.rb', line 21

def initialize_setup
  FileUtils.mkdir_p(requested_dir)
  Dir.chdir(requested_dir) do
    FileUtils.cp_r("#{Prepd.files_dir}/setup/.", '.')
  end
  Prepd.config.working_dir = Prepd.config_dir
  Workspace.new(name: 'share').create
end

#machine_is_hostObject



7
8
9
10
# File 'lib/prepd/models/setup.rb', line 7

def machine_is_host
  return if Prepd.config.machine_type.host?
  errors.add(:machine_type, 'Setup can only run on the host machine')
end

#requested_dirObject



17
18
19
# File 'lib/prepd/models/setup.rb', line 17

def requested_dir
  "#{Prepd.config_dir}/setup"
end