package runner import ( "fmt" "git.0x7f.app/WOJ/woj-server/internal/e" "git.0x7f.app/WOJ/woj-server/pkg/file" "git.0x7f.app/WOJ/woj-server/pkg/utils" "os" "path/filepath" ) func (s *service) Compile(version uint, user string, lang string) (JudgeStatus, e.Status) { target := filepath.Join(UserDir, user, fmt.Sprintf("%s.out", user)) _ = os.Remove(target) status := s.checkAndExecute(version, user, lang, "problem_compile.sh", e.RunnerUserCompileFailed) log := filepath.Join(UserDir, user, fmt.Sprintf("%s.compile.log", user)) msg, err := file.FileRead(log) msg = utils.If(err == nil, msg, nil) msgText := string(msg) if !file.Exist(targetFile) || file.Empty(targetFile) { return JudgeStatus{ Message: "compile failed", Tasks: []TaskStatus{{Verdict: VerdictCompileError, Message: msgText}}}, utils.If(status == e.Success, e.RunnerUserCompileFailed, status) } return JudgeStatus{}, e.Success }