Class: WritersRoom::ProjectScaffolder

Inherits:
Object
  • Object
show all
Defined in:
lib/writers_room/project_scaffolder.rb

Overview

Creates project directory structure based on medium type.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project_path, medium_id: :dialog) ⇒ ProjectScaffolder

Returns a new instance of ProjectScaffolder.



10
11
12
13
# File 'lib/writers_room/project_scaffolder.rb', line 10

def initialize(project_path, medium_id: :dialog)
  @project_path = File.expand_path(project_path)
  @medium       = MediumRegistry.find(medium_id)
end

Instance Attribute Details

#mediumObject (readonly)

Returns the value of attribute medium.



8
9
10
# File 'lib/writers_room/project_scaffolder.rb', line 8

def medium
  @medium
end

#project_pathObject (readonly)

Returns the value of attribute project_path.



8
9
10
# File 'lib/writers_room/project_scaffolder.rb', line 8

def project_path
  @project_path
end

Instance Method Details

#create_directoriesObject



22
23
24
25
26
27
# File 'lib/writers_room/project_scaffolder.rb', line 22

def create_directories
  @medium.scaffolded_dirs.each do |dir|
    dir_path = File.join(@project_path, dir)
    FileUtils.mkdir_p(dir_path) unless Dir.exist?(dir_path)
  end
end

#create_story_bibleObject



29
30
31
32
33
34
35
36
37
# File 'lib/writers_room/project_scaffolder.rb', line 29

def create_story_bible
  bible_path = File.join(@project_path, "story_bible.yml")
  return if File.exist?(bible_path)

  File.write(bible_path, YAML.dump(
    "elements" => {},
    "generated_at" => nil
  ))
end

#scaffold!Object



15
16
17
18
19
20
# File 'lib/writers_room/project_scaffolder.rb', line 15

def scaffold!
  FileUtils.mkdir_p(@project_path)
  create_directories
  create_story_bible
  @medium.scaffolded_dirs
end