class Apogee::Installer
Creates an empty apogee site
Constants
- FILES_WITH_SITE_NAME
- VALID_FILENAME_PATTERN
Attributes
destination_root_dir[R]
site_name[R]
Public Class Methods
new(site_name, destination_root_dir: Dir.pwd)
click to toggle source
# 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
Public Instance Methods
copy_template_files()
click to toggle source
# 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_name()
click to toggle source
# 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
install()
click to toggle source
# File lib/apogee/installer.rb, line 23 def install copy_template_files gsub_site_name end
validate()
click to toggle source
# File lib/apogee/installer.rb, line 28 def validate validate_destination_dir validate_site_name end
Private Instance Methods
destination_dir()
click to toggle source
# File lib/apogee/installer.rb, line 47 def destination_dir File.join(destination_root_dir, site_name) end
template_dir()
click to toggle source
# File lib/apogee/installer.rb, line 51 def template_dir File.join(File.dirname(__FILE__), 'templates', 'new_site') end
validate_destination_dir()
click to toggle source
# File lib/apogee/installer.rb, line 55 def validate_destination_dir return unless Dir.exist?(destination_dir) raise InstallDirectoryAlreadyExistsError, "#{destination_dir} already exists." end
validate_site_name()
click to toggle source
# File lib/apogee/installer.rb, line 61 def validate_site_name return if site_name.match?(VALID_FILENAME_PATTERN) raise ApplicationNameInvalidError, \ "#{site_name} is not a valid site name. Please use only " \ 'letters, numbers, underscores and dashes in the application name' end