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.

58 lines
1.1 KiB

  1. require_relative 'course'
  2. require_relative 'filesystem'
  3. module KGrader
  4. class CLI
  5. def initialize(dir)
  6. @fs = Filesystem.new dir
  7. end
  8. def list
  9. # TODO
  10. puts "[list]"
  11. end
  12. def roster(course, semester, rosterfile)
  13. Course.new(@fs, course).roster(semester).load rosterfile
  14. end
  15. def grade(course, semester, assignment, options = {})
  16. # TODO
  17. # need to get default semester...
  18. semester ||= 'DEFAULT'
  19. task = Course.new(@fs, course).task semester, assignment
  20. task.grade options
  21. end
  22. def commit(course, semester, assignment, options = {})
  23. # TODO
  24. semester ||= 'DEFAULT'
  25. task = Course.new(@fs, course).task semester, assignment
  26. task.commit options
  27. end
  28. def clean
  29. # TODO: also purge uncommitted grades
  30. reset_jail
  31. end
  32. def clobber
  33. # TODO: confirm
  34. reset_jail
  35. reset_desk
  36. end
  37. private
  38. def reset_jail
  39. FileUtils.rm_rf @fs.jail
  40. FileUtils.mkdir @fs.jail
  41. FileUtils.touch File.join(@fs.jail, '.gitkeep')
  42. end
  43. def reset_desk
  44. FileUtils.rm_rf Dir[File.join @fs.desk, '*', '']
  45. end
  46. end
  47. end