@@ -9,8 +9,20 @@ module KGrader | |||||
end | end | ||||
def list | def list | ||||
# TODO | |||||
puts "[list]" | |||||
@fs.courses.each do |name| | |||||
puts "course: #{name}" | |||||
course = Course.new(@fs, name) | |||||
puts " rosters:" | |||||
course.rosters.each do |roster| | |||||
puts " - #{roster.semester} (#{roster.students.size} students)" | |||||
end | |||||
puts " assignments:" | |||||
course.assignments.each do |assignment| | |||||
puts " - #{assignment}" | |||||
end | |||||
end | |||||
end | end | ||||
def roster(course, semester, rosterfile) | def roster(course, semester, rosterfile) | ||||
@@ -18,18 +30,15 @@ module KGrader | |||||
end | end | ||||
def grade(course, semester, assignment, options = {}) | def grade(course, semester, assignment, options = {}) | ||||
# TODO | |||||
# need to get default semester... | |||||
semester ||= 'DEFAULT' | |||||
task = Course.new(@fs, course).task semester, assignment | |||||
task.grade options | |||||
course = Course.new @fs, course | |||||
semester ||= course.current_semester | |||||
course.task(semester, assignment).grade options | |||||
end | end | ||||
def commit(course, semester, assignment, options = {}) | def commit(course, semester, assignment, options = {}) | ||||
# TODO | |||||
semester ||= 'DEFAULT' | |||||
task = Course.new(@fs, course).task semester, assignment | |||||
task.commit options | |||||
course = Course.new @fs, course | |||||
semester ||= course.current_semester | |||||
course.task(semester, assignment).commit options | |||||
end | end | ||||
def clean | def clean | ||||
@@ -20,5 +20,22 @@ module KGrader | |||||
# TODO: cache | # TODO: cache | ||||
Task.new @fs, self, semester, assignment | Task.new @fs, self, semester, assignment | ||||
end | end | ||||
def rosters | |||||
@fs.semesters(@name).map! { |semester| roster semester } | |||||
end | |||||
def assignments | |||||
@fs.assignments @name | |||||
end | |||||
def current_semester | |||||
case @config['semesters'] | |||||
when 'faspYY' | |||||
KGrader::season + DateTime.now.strftime('%y') | |||||
when 'faspYYYY' | |||||
KGrader::season + DateTime.now.strftime('%Y') | |||||
end | |||||
end | |||||
end | end | ||||
end | end |
@@ -7,8 +7,20 @@ module KGrader | |||||
@root = root | @root = root | ||||
end | end | ||||
def desk | |||||
File.join @root, 'desk' | |||||
end | |||||
def jail | |||||
File.join @root, 'jail' | |||||
end | |||||
def spec | |||||
File.join @root, 'spec' | |||||
end | |||||
def course(name) | def course(name) | ||||
File.join @root, 'spec', name | |||||
File.join spec, name | |||||
end | end | ||||
def course_config(name) | def course_config(name) | ||||
@@ -16,15 +28,19 @@ module KGrader | |||||
end | end | ||||
def courses | def courses | ||||
Dir[File.join @root, 'spec', '*', ''].each { |fn| File.basename fn } | |||||
Dir[File.join spec, '*', ''].map! { |fn| File.basename fn } | |||||
end | end | ||||
def desk | |||||
File.join @root, 'desk' | |||||
def assignments(course) | |||||
Dir[File.join spec, course, '*', '_config.yml'].map! do |fn| | |||||
File.basename File.dirname fn | |||||
end | |||||
end | end | ||||
def jail | |||||
File.join @root, 'jail' | |||||
def semesters(course) | |||||
Dir[File.join desk, course, '*', '_roster.csv'].map! do |fn| | |||||
File.basename File.dirname fn | |||||
end | |||||
end | end | ||||
def load(path) | def load(path) | ||||
@@ -1,5 +1,6 @@ | |||||
module KGrader | module KGrader | ||||
class Roster | class Roster | ||||
attr_reader :semester | |||||
def initialize(filesystem, course, semester) | def initialize(filesystem, course, semester) | ||||
@fs = filesystem | @fs = filesystem | ||||
@@ -11,5 +12,10 @@ module KGrader | |||||
# TODO | # TODO | ||||
puts "Loading roster for #{@course.name}:#{@semester} from [#{filename}]..." | puts "Loading roster for #{@course.name}:#{@semester} from [#{filename}]..." | ||||
end | end | ||||
def students | |||||
# TODO | |||||
["ksmith12"] | |||||
end | |||||
end | end | ||||
end | end |
@@ -33,4 +33,8 @@ module KGrader | |||||
abort "too many arguments" if args.size > num | abort "too many arguments" if args.size > num | ||||
return args, options | return args, options | ||||
end | end | ||||
def self.season | |||||
DateTime.now.strftime('%m').to_i <= 6 ? 'sp' : 'fa' | |||||
end | |||||
end | end |
@@ -1 +1 @@ | |||||
Subproject commit 54398ad4a16ac3d9f7344ecf680f4dd167e05818 | |||||
Subproject commit 3c6f5d050d8a66de6b3c36ce1985c225700a5c2f |