A code autograder for student homework submissions
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

57 lignes
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