diff --git a/judge/scripts/grader_id b/judge/scripts/grader_id deleted file mode 100755 --- a/judge/scripts/grader_id +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/ruby - -def talk(str) - if TALKATIVE - puts str - end -end - -def execute(command, error_message="") - if not system(command) - puts "ERROR: #{error_message}" - exit(127) - end -end - -def save_source(submission,dir,fname) - f = File.open("#{dir}/#{fname}","w") - f.write(submission.source) - f.close -end - -def call_judge(problem_home,language,problem_out_dir,fname) - ENV['PROBLEM_HOME'] = problem_home - Dir.chdir problem_out_dir - cmd = "#{problem_home}/script/judge #{language} #{fname}" -# puts "CMD: #{cmd}" - system(cmd) -end - -def read_result(test_result_dir) - cmp_msg_fname = "#{test_result_dir}/compiler_message" - cmp_msg = File.open(cmp_msg_fname).read - - result_fname = "#{test_result_dir}/result" - comment_fname = "#{test_result_dir}/comment" - if FileTest.exist?(result_fname) - result = File.open(result_fname).readline.to_i - comment = File.open(comment_fname).readline.chomp - return {:points => result, - :comment => comment, - :cmp_msg => cmp_msg} - else - return {:points => 0, - :comment => 'compile error', - :cmp_msg => cmp_msg} - end -end - -def save_result(submission,result) - submission.graded_at = Time.now - submission.points = result[:points] - submission.grader_comment = report_comment(result[:comment]) - submission.compiler_message = result[:cmp_msg] - submission.save -end - -def grade(submission_id) - sub = Submission.find(submission_id) - user = sub.user - problem = sub.problem - - language = sub.language.name - lang_ext = sub.language.ext - # FIX THIS - talk 'some hack on language' - if language == 'cpp' - language = 'c++' - end - - user_dir = "#{USER_RESULT_DIR}/#{user.login}" - Dir.mkdir(user_dir) if !FileTest.exist?(user_dir) - - problem_out_dir = "#{user_dir}/#{problem.name}" - Dir.mkdir(problem_out_dir) if !FileTest.exist?(problem_out_dir) - - problem_home = "#{PROBLEMS_DIR}/#{problem.name}" - source_name = "#{problem.name}.#{lang_ext}" - - save_source(sub,problem_out_dir,source_name) - call_judge(problem_home,language,problem_out_dir,source_name) - save_result(sub,read_result("#{problem_out_dir}/test-result")) -end - -def stop_grader - File.open(File.dirname(__FILE__) + '/stop','w') -end - -def check_stopfile - FileTest.exist?(File.dirname(__FILE__) + '/stop') -end - -def clear_stopfile - system("rm " + File.dirname(__FILE__) + '/stop') -end - -# reading environment and options -GRADER_ENV = 'exam' -puts "environment: #{GRADER_ENV}" -require File.dirname(__FILE__) + "/environment.rb" - -#main program -talk 'Reading rails environment' - -RAILS_ENV = 'development' -require RAILS_APP_DIR + '/config/environment' - -current_dir = `pwd` -grade(ARGV[0].to_i) - -