Class: Apogee::Installer

Inherits:
Object
  • Object
show all
Defined in:
lib/apogee/installer.rb

Overview

Creates an empty apogee site

Defined Under Namespace

Classes: ApplicationNameInvalidError, InstallDirectoryAlreadyExistsError

Constant Summary collapse

VALID_FILENAME_PATTERN =
/\A[A-Za-z0-9\-_]+\z/.freeze
FILES_WITH_SITE_NAME =
[
  'README.md',
  File.join('src', 'pages', 'index.html')
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(site_name, destination_root_dir: Dir.pwd) ⇒ Installer

Returns a new instance of Installer.



17
18
19
20
21
# File 'lib/apogee/installer.rb', line 17

def initialize(site_name, destination_root_dir: Dir.pwd)
  @site_name = site_name
  @destination_root_dir = destination_root_dir
  validate
end

Instance Attribute Details

#destination_root_dirObject (readonly)

Returns the value of attribute destination_root_dir.



15
16
17
# File 'lib/apogee/installer.rb', line 15

def destination_root_dir
  @destination_root_dir
end

#site_nameObject (readonly)

Returns the value of attribute site_name.



15
16
17
# File 'lib/apogee/installer.rb', line 15

def site_name
  @site_name
end

Instance Method Details

#copy_template_filesObject



33
34
35
36
# File 'lib/apogee/installer.rb', line 33

def copy_template_files
  FileUtils.mkdir_p(destination_root_dir) unless Dir.exist?(destination_root_dir)
  FileUtils.cp_r(template_dir, destination_dir)
end

#gsub_site_nameObject



38
39
40
41
42
43
# File 'lib/apogee/installer.rb', line 38

def gsub_site_name
  FILES_WITH_SITE_NAME.each do |file|
    path = File.join(destination_dir, file)
    FileHelpers.file_gsub(path, '{{site_name}}', site_name)
  end
end

#installObject



23
24
25
26
# File 'lib/apogee/installer.rb', line 23

def install
  copy_template_files
  gsub_site_name
end

#validateObject



28
29
30
31
# File 'lib/apogee/installer.rb', line 28

def validate
  validate_destination_dir
  validate_site_name
end