Class: ProgScorer::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/prog_scorer.rb

Instance Method Summary collapse

Instance Method Details

#init(report_number, report_name) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/prog_scorer.rb', line 10

def init(report_number, report_name)
  if(report_number && report_name)
    mkdir("#{report_number}")

    if(mkdir("#{report_number}/#{report_name}"))
      mkdir("#{report_number}/#{report_name}/outputs")
      mkdir("#{report_number}/#{report_name}/diff")
      mkdir("#{report_number}/#{report_name}/src")
      mkdir("#{report_number}/#{report_name}/tmp")
      mkdir("#{report_number}/#{report_name}/testdata")
      mkdir("#{report_number}/#{report_name}/testdata/test1")
      system("touch #{report_number}/#{report_name}/testdata/test1/in.txt")
      system("touch #{report_number}/#{report_name}/testdata/test1/exp.txt")
      system("touch #{report_number}/#{report_name}/testdata/test1/exp.txt")
    else
      p "ERROR: '#{report_name}' is already exist"
    end
    
  else
    p "ERROR: Statement argument missing"
  end
end

#score(compiler, report_number, report_name = "*", student_number = "*") ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/prog_scorer.rb', line 34

def score(compiler, report_number, report_name="*", student_number="*")
  if(compiler == "gcc")
    language = {"ext" => "c", "command" => "gcc"}
  elsif(compiler == "g++")
    language = {"ext" => "cpp", "command" => "g++"}
  else
    puts "#{"error".colorize(:red)} :コマンド引数が正しくありません"
    return
  end
  root_dirs = Dir.glob("#{report_number}/#{report_name}")

  for root_dir in root_dirs do
    report_name = root_dir.split("/")[-1]
    p dir = "#{root_dir}/src/#{student_number}.#{language["ext"]}"
    score = Score.new(report_number, report_name)
    Dir.glob(dir).each do |file|
      system("cp #{file} #{root_dir}/tmp/#{report_name}.#{language["ext"]}")
      #system("gcc #{file} #{main_filename}")
      test_files = []
      student_number = Pathname(file).basename(".*")
      Dir.glob("#{root_dir}/tmp/*.#{language["ext"]}").each do |file|
        test_files.append(file)
      end
      score.compile(language["command"], test_files, student_number)
    end
    score.write_file()
  end
end