Class: Bloc::Command::Validate

Inherits:
Object
  • Object
show all
Defined in:
lib/bloc/command/validate.rb

Constant Summary collapse

LESSON_NOT_SPECIFIED =
"No markdown was specified for: '%s'".red
LESSON_NOT_FOUND =
"Missing markdown file: %s".red
LESSON_EXISTS =
"(OK) Markdown exists: %s".green
NO_DEFAULT_COURSE_FILE =
"(OK) No default file for course specified".green
VALID_DEFAULT_COURSE_FILE =
"(OK) Default file for course exists".green
INVALID_DEFAULT_COURSE_FILE =
"Default file for course does not exist (expected %s)".red
NO_DEFAULT_CHAPTER_FILE =
"(OK) No default file for chapter specified: %s".green
VALID_DEFAULT_CHAPTER_FILE =
"(OK) Default file for chapter exists: %s".green
INVALID_DEFAULT_CHAPTER_FILE =
"Default file for chapter does not exist: %s (expected %s)".red
NO_SUCH_PATCH =
"Patch not found: %s".red
PATCH_EXISTS =
"(OK) Patch exists: %s".green

Class Method Summary collapse

Class Method Details

.check_chapter_default_files(manifest) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/bloc/command/validate.rb', line 51

def self.check_chapter_default_files(manifest)
  manifest.chapters.each do |chapter|
    if chapter.default_file.nil?
      puts NO_DEFAULT_CHAPTER_FILE % chapter.name
    else
      if File.exists? chapter.default_file
        puts VALID_DEFAULT_CHAPTER_FILE % chapter.name
      else
        raise INVALID_DEFAULT_CHAPTER_FILE % [chapter.name, chapter.default_file]
      end
    end
  end
end

.check_course_default_file(manifest) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/bloc/command/validate.rb', line 38

def self.check_course_default_file(manifest)
  course_default_file = manifest.course.default_file
  if course_default_file.nil?
    puts NO_DEFAULT_COURSE_FILE
  else
    if File.exists? course_default_file
      puts VALID_DEFAULT_COURSE_FILE
    else
      raise INVALID_DEFAULT_COURSE_FILE % manifest
    end
  end
end

.check_markdown_files(manifest) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/bloc/command/validate.rb', line 24

def self.check_markdown_files(manifest)
  manifest.chapters.each do |chapter|
    begin
      if File.exists?("bloc/#{chapter.markdown}")
        puts LESSON_EXISTS % chapter.markdown
      else
        raise LESSON_NOT_FOUND % chapter.markdown
      end
    rescue NoMethodError => e
      raise LESSON_NOT_SPECIFIED % chapter.name
    end
  end
end

.check_patches(manifest) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/bloc/command/validate.rb', line 65

def self.check_patches(manifest)
  # TODO: ensure all chapters have patches
  manifest.chapters.each do |chapter|
    if chapter.patch.nil?

    elsif File.exists? chapter.patch
      puts PATCH_EXISTS % chapter.patch
    else
      raise NO_SUCH_PATCH % chapter.patch
    end
  end
end

.run(*args) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/bloc/command/validate.rb', line 16

def self.run(*args)
  manifest = Bloc::Manifest.parse
  check_markdown_files manifest
  check_course_default_file manifest
  check_chapter_default_files manifest
  check_patches manifest
end