Class: Bloc::Manifest

Inherits:
Hashie::Mash
  • Object
show all
Defined in:
lib/bloc/manifest.rb

Constant Summary collapse

MANIFEST_NOT_FOUND =
"Unable to find Bloc Manifest in bloc/bloc_manifest.json".red
MANIFEST_PATH =
File.join("bloc", "bloc_manifest.json")
INVALID_MANIFEST =
"Invalid JSON in Bloc Manifest: #{MANIFEST_PATH}".red
VALID_MANIFEST =
"Valid Bloc Manifest".green
NO_SUCH_CHAPTER =
"No such chapter.".red
NO_COURSE =
"Missing: course".red
NO_CHAPTERS =
"Missing: chapters".red

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.parseObject

Raises:



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/bloc/manifest.rb', line 11

def self.parse
  raise MANIFEST_NOT_FOUND unless File.exists?(MANIFEST_PATH)
  manifest_raw = File.read(MANIFEST_PATH)

  begin
    manifest = JSON.parse(manifest_raw)
    puts VALID_MANIFEST
  rescue
    raise INVALID_MANIFEST
  end
  Manifest.new(manifest)
end

Instance Method Details

#add_chapter(options) ⇒ Object



24
25
26
27
# File 'lib/bloc/manifest.rb', line 24

def add_chapter(options)
  chapters << Manifest.new(options)
  write
end

#writeObject



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

def write
  begin
    Dir.mkdir(File.dirname(MANIFEST_PATH))
  rescue
  end
  File.open(MANIFEST_PATH, "w") do |file|
    file.write(JSON.pretty_generate(to_hash))
  end
end