32 lines
929 B
Go
32 lines
929 B
Go
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
|
|
}
|