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.

57 lines
1.2 KiB

  1. require_relative 'lib/kgrader'
  2. def cli
  3. KGrader::CLI.new Rake.application.original_dir
  4. end
  5. def parse_args(num, keywords)
  6. args, options = KGrader::parse_args ARGV.drop(1), num, keywords do |err|
  7. abort err
  8. end
  9. args.each { |arg| task arg.to_sym {} }
  10. args + [options]
  11. end
  12. task :default => :help do ; end
  13. task :help do
  14. puts %{usage:
  15. - rake list
  16. - rake roster <course> <semester> <rosterfile>
  17. - rake grade <course> <assignment> [semester=<...>] [students=<...>]
  18. [due=<...>] [fetch=<yes/no>] [regrade=<yes/no>]
  19. - rake commit <course> <assignment> [semester=<...>] [students=<...>]
  20. - rake clean
  21. - rake clobber}
  22. end
  23. task :list do
  24. cli.list
  25. end
  26. task :roster do
  27. course, semester, rosterfile = parse_args 3
  28. cli.roster course, semester, rosterfile
  29. end
  30. task :grade do
  31. course, assignment, options = parse_args 2,
  32. { :semester => :string, :students => :array, :due => :datetime,
  33. :fetch => :bool, :regrade => :bool }
  34. cli.grade course, options[:semester], assignment, options
  35. end
  36. task :commit do
  37. course, assignment, options = parse_args 2,
  38. { :semester => :string, :students => :array }
  39. cli.commit course, options[:semester], assignment, options
  40. end
  41. task :clean do
  42. cli.clean
  43. end
  44. task :clobber do
  45. cli.clobber
  46. end