A code autograder for student homework submissions
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
904 B

  1. module KGrader
  2. class Assignment
  3. attr_reader :name, :manifest
  4. def initialize(filesystem, course, name)
  5. @fs = filesystem
  6. @course = course
  7. @name = name
  8. @root = @fs.assignment @course.name, @name
  9. @config = @fs.load @fs.assignment_config(@course.name, @name)
  10. @manifest = build_manifest
  11. rescue FilesystemError
  12. raise AssignmentError, "unknown assignment: #{name}"
  13. end
  14. def id
  15. @config['id'] || @name
  16. end
  17. def build_manifest
  18. unless @config.include? 'manifest'
  19. raise AssignmentError, "missing manifest: #{@name}"
  20. end
  21. manifest = @config['manifest']
  22. provided = manifest['provided'].map do |glob|
  23. Dir[File.join @root, 'provided', glob]
  24. end.flatten
  25. {
  26. :provided => provided,
  27. :graded => manifest['graded'],
  28. :report => manifest['report']
  29. }
  30. end
  31. end
  32. end