Class: EasyHtmlGenerator::Workspace

Inherits:
Object
  • Object
show all
Defined in:
lib/easy_html_generator/workspace.rb

Overview

this class creates project instances

Class Method Summary collapse

Class Method Details

.clean_dist_folder(project = nil) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/easy_html_generator/workspace.rb', line 42

def self.clean_dist_folder(project=nil)
  if project.nil?
    paths = Dir["#{EasyHtmlGenerator::DIST_PATH}/*"]
  else
    project_instance = project_by_name project
    raise LoadError "no such project to load -- #{project}"
    paths = project_instance.dist_path
  end
  FileUtils.rm_rf paths
end

.create_project(name) ⇒ Object



26
27
28
29
30
# File 'lib/easy_html_generator/workspace.rb', line 26

def self.create_project(name)
  FileUtils.cp_r(
    File.join(EasyHtmlGenerator::EHG_SRC_PATH, 'template'),
    File.join(EasyHtmlGenerator::SRC_PATH, name))
end

.generate(project = nil) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/easy_html_generator/workspace.rb', line 53

def self.generate(project=nil)
  if project.nil?
    projects_to_generate = projects
  else
    project_instance = project_by_name project
    raise LoadError "no such project to load -- #{project}"
    projects_to_generate = {project => project_instance}
  end

  projects_to_generate.each { |_name, project| project.generate }
end

.initObject



32
33
34
35
36
37
38
39
40
# File 'lib/easy_html_generator/workspace.rb', line 32

def self.init
  EasyHtmlGenerator::CREATE_ON_INIT.each do |dir|
    FileUtils.mkdir_p dir
  end

  EasyHtmlGenerator::COPY_ON_INIT.each do |src, target|
    FileUtils.cp_r src, target
  end
end

.project_by_name(name) ⇒ Object



79
80
81
# File 'lib/easy_html_generator/workspace.rb', line 79

def self.project_by_name(name)
  projects[name.to_sym]
end

.project_foldersObject



20
21
22
23
24
# File 'lib/easy_html_generator/workspace.rb', line 20

def self.project_folders
  Dir[File.join(EasyHtmlGenerator::SRC_PATH, '*')]
    .reject { |o| !File.directory?(o) }
    .map { |o| File.expand_path(o) }
end

.project_instance_from_path(path) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/easy_html_generator/workspace.rb', line 65

def self.project_instance_from_path(path)
  name = path.split('/').last.sub('/', '')

  config_file = "#{EasyHtmlGenerator::SHARED_PATH}/project.yml"
  config_file = "#{path}/project.yml" if File.exist? "#{path}/project.yml"

  EasyHtmlGenerator::Project.new(
    name,
    "#{EasyHtmlGenerator::SRC_PATH}/#{name}",
    "#{EasyHtmlGenerator::DIST_PATH}/#{name}",
    config_file
  )
end

.projectsObject



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/easy_html_generator/workspace.rb', line 8

def self.projects
  if @project_instances.empty?
    project_folders.each do |path|
      next if path.include? 'shared'
      p    = project_instance_from_path path
      @project_instances[p.name.to_sym] = p
    end
  end

  @project_instances
end