| @@ -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 | |||||