Show More
Commit Description:
add option -A <opt> to box. This options allow more argument to be explicitly passed to the program...
Commit Description:
add option -A <opt> to box. This options allow more argument to be explicitly passed to the program We have to use this because if the argument we wish to pass to the program is option (in -? format), box will intepret it as its option and failed accordingly. be noted that, by the definition of getopt, these options will be put after original argument (check the code for more info)
References:
File last commit:
Show/Diff file:
Action:
lib/configuration.rb | 84 lines | 2.4 KiB | text/x-ruby | RubyLexer |
module Grader
# This singleton class holds basic configurations for grader. When
# running in each mode, grader uses resources from different
# directories and outputs differently. Usually the attributes name
# are descriptive; below we explain more on each attributes.
class Configuration
# Rails' environment: "development", "production"
attr_accessor :rails_env
# Grader looks for problem [prob] in problem_dir/[prob], and store
# execution results for submission [x] of user [u] in directory
# user_result_dir/[u]/[x]
attr_accessor :problems_dir
attr_accessor :user_result_dir
# If report_grader=true, the grader would add a row in model
# GraderProcess. It would report itself with grader_hostname and
# process id.
attr_accessor :report_grader
attr_accessor :grader_hostname
# If talkative=true, grader would report status to console. If
# logging=true, grader would report status to a log file located
# in log_dir, in a file name mode.options.pid. TODO: defined
# log file naming.
attr_accessor :talkative
attr_accessor :logging
attr_accessor :log_dir
# These are directories related to the test interface.
attr_accessor :test_request_input_base_dir
attr_accessor :test_request_output_base_dir
attr_accessor :test_request_problem_templates_dir
# Comment received from the grading script will be filtered
# through Configuration#report_comment. How this method behave
# depends on this option; right now only two formats, :short and
# :long
attr_accessor :comment_report_style
def report_comment(comment)
case comment_report_style
when :short
if comment.chomp =~ /^[\[\]P]+$/ # all P's
'passed'
elsif comment.chomp =~ /[Cc]ompil.*[Ee]rror/
'compilation error'
else
'failed'
end
when :full
comment.chomp
end
end
# Codes for singleton
private_class_method :new
@@instance = nil
def self.get_instance
if @@instance==nil
@@instance = new
end
@@instance
end
private
def initialize
@talkative = false
@log_file = nil
@report_grader = false
@grader_hostname = `hostname`.chomp
@rails_env = 'development'
@comment_report_style = :full
end
end
end