feat: more templates
All checks were successful
build / build (push) Successful in 2m43s
build / trigger-build-image (push) Successful in 12s

This commit is contained in:
张泊明518370910136 2025-06-03 03:51:42 -04:00
parent 70440382d2
commit 5a13c43f7b
GPG Key ID: D47306D7062CDA9D
10 changed files with 271 additions and 1 deletions

View File

@ -19,7 +19,11 @@ def load_joj3_task_toml_answers() -> answer.Answers:
) )
language = cast(Type[answer.LanguageInterface], language) language = cast(Type[answer.LanguageInterface], language)
if inquirer.confirm("Load content from templates?", default=True): if inquirer.confirm("Load content from templates?", default=True):
answers = inquirer.prompt(language.get_template_questions()) questions = language.get_template_questions()
if not questions[0].choices:
logger.warning("No template files found for the selected language. ")
return answer.Answers(name=name, language=language)
answers = inquirer.prompt(questions)
template_file_content: str = answers["template_file_content"] template_file_content: str = answers["template_file_content"]
return answer.Answers( return answer.Answers(
name=name, language=language, template_file_content=template_file_content name=name, language=language, template_file_content=template_file_content

View File

@ -126,10 +126,122 @@ class Rust(LanguageInterface):
return [] return []
class C(LanguageInterface):
name = "C"
class Attribute(BaseModel):
pass
stages = []
attribute = Attribute()
@classmethod
def get_attribute_questions(cls) -> List[Any]:
attribute: C.Attribute = cls.attribute
return []
class Java(LanguageInterface):
name = "Java"
class Attribute(BaseModel):
pass
stages = []
attribute = Attribute()
@classmethod
def get_attribute_questions(cls) -> List[Any]:
attribute: Java.Attribute = cls.attribute
return []
class Elm(LanguageInterface):
name = "Elm"
class Attribute(BaseModel):
pass
stages = []
attribute = Attribute()
@classmethod
def get_attribute_questions(cls) -> List[Any]:
attribute: Elm.Attribute = cls.attribute
return []
class Matlab(LanguageInterface):
name = "Matlab"
class Attribute(BaseModel):
pass
stages = []
attribute = Attribute()
@classmethod
def get_attribute_questions(cls) -> List[Any]:
attribute: Matlab.Attribute = cls.attribute
return []
class Octave(LanguageInterface):
name = "Octave"
class Attribute(BaseModel):
pass
stages = []
attribute = Attribute()
@classmethod
def get_attribute_questions(cls) -> List[Any]:
attribute: Octave.Attribute = cls.attribute
return []
class JavaScript(LanguageInterface):
name = "JavaScript"
class Attribute(BaseModel):
pass
stages = []
attribute = Attribute()
@classmethod
def get_attribute_questions(cls) -> List[Any]:
attribute: JavaScript.Attribute = cls.attribute
return []
class Go(LanguageInterface):
name = "Go"
class Attribute(BaseModel):
pass
stages = []
attribute = Attribute()
@classmethod
def get_attribute_questions(cls) -> List[Any]:
attribute: Go.Attribute = cls.attribute
return []
LANGUAGES: List[Type[LanguageInterface]] = [ LANGUAGES: List[Type[LanguageInterface]] = [
C,
Cpp, Cpp,
Python, Python,
Rust, Rust,
Java,
Elm,
Matlab,
Octave,
JavaScript,
Go,
] ]

View File

@ -0,0 +1,152 @@
[[stages]]
name = "Compilation"
env = [ "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" ]
command = "bash -c 'javac -cp labs/l1/commons-cli-1.4.jar com/ve472/l1/*.java'"
files.import = ["labs/l1/commons-cli-1.4.jar"]
files.export = ["com/ve472/l1/Cinema.class", "com/ve472/l1/Hall.class", "com/ve472/l1/Main.class"]
# compile parsers
parsers = [ "result-detail", "dummy", "result-status" ] # list of parsers to run on the output of `command`
result-status.comment = "Congratulations! Your code compiled successfully."
dummy.comment = "\n\n### Details\n"
result-detail.exitstatus = true
result-detail.stderr = true
result-detail.time = false
result-detail.mem = false
result-detail.stdout = true
limit.cpu = "20s"
limit.mem = "500mb"
[[stages]]
name = "judge"
env = [ "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" ]
files.import = ["labs/l1/commons-cli-1.4.jar",
"labs/l1/case10/0.txt",
"labs/l1/case10/1.txt",
"labs/l1/case10.txt",
"labs/l1/case11/0.txt",
"labs/l1/case11/1.txt",
"labs/l1/case11/2.txt",
"labs/l1/case11/3.txt",
"labs/l1/case11/4.txt",
"labs/l1/case11.txt",
"labs/l1/case12.txt",
"labs/l1/case13.txt",
"labs/l1/case14/0.txt",
"labs/l1/case14/1.txt",
"labs/l1/case14/2.txt",
"labs/l1/case14/3.txt",
"labs/l1/case14/4.txt",
"labs/l1/case14/5.txt",
"labs/l1/case14/6.txt",
"labs/l1/case14.txt",
"labs/l1/case15.txt",
"labs/l1/case16.txt",
"labs/l1/case17.txt",
"labs/l1/case18.txt",
"labs/l1/case19.txt",
"labs/l1/case9/1.txt",
"labs/l1/case9.txt",
"labs/l1/empty.txt",
"labs/l1/hall/0.txt",
"labs/l1/hall/1.txt",
"labs/l1/hall/2.txt",
"labs/l1/hall/3.txt",
"labs/l1/hall/4.txt",]
parsers = [ "diff", "result-detail"] # list of parsers to run on the output of `command`
result-detail.exitstatus = true
result-detail.stderr = true
result-detail.time = false
result-detail.mem = false
result-detail.stdout = true
score = 5
comment.pass = "🥳Passed!"
comment.fail = "🧐Failed..."
case0.diff.output.score = 5
case0.out = "help.out"
case0.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main"
case1.diff.output.score = 5
case1.out = "help.out"
case1.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main -h"
case2.diff.output.score = 5
case2.out = "help.out"
case2.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --help"
case3.diff.output.score = 5
case3.out = "help.out"
case3.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall"
case4.diff.output.score = 5
case4.out = "help.out"
case4.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --query"
case5.diff.output.score = 5
case5.out = "help.out"
case5.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --test"
case6.diff.output.score = 5
case6.out = "help.out"
case6.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/hall --query"
case7.diff.output.score = 5
case7.out = "help.out"
case7.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall --query labs/l1/empty.txt"
case8.diff.output.score = 5
case8.out = "case8.out"
case8.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/hall --query labs/l1/empty.txt"
case9.diff.output.score = 5
case9.out = "case9.out"
case9.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case9 --query labs/l1/case9.txt"
case10.diff.output.score = 5
case10.out = "case10.out"
case10.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case10 --query labs/l1/case10.txt"
case11.diff.output.score = 5
case11.out = "case11.out"
case11.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case11 --query labs/l1/case11.txt"
case12.diff.output.score = 5
case12.out = "case12.out"
case12.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case9 --query labs/l1/case12.txt"
case13.diff.output.score = 5
case13.out = "case13.out"
case13.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case9 --query labs/l1/case13.txt"
case14.diff.output.score = 5
case14.out = "case14.out"
case14.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case14 --query labs/l1/case14.txt"
case15.diff.output.score = 5
case15.out = "case15.out"
case15.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case14 --query labs/l1/case15.txt"
case16.diff.output.score = 5
case16.out = "case16.out"
case16.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case14 --query labs/l1/case16.txt"
case17.diff.output.score = 5
case17.out = "case17.out"
case17.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case14 --query labs/l1/case17.txt"
case18.diff.output.score = 5
case18.out = "case18.out"
case18.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case14 --query labs/l1/case18.txt"
case19.diff.output.score = 5
case19.out = "case19.out"
case19.command = "java -cp labs/l1/commons-cli-1.4.jar:. com.ve472.l1.Main --hall labs/l1/case14 --query labs/l1/case19.txt"

View File

@ -14,6 +14,8 @@ def get_task_conf_from_answers(answers: answer.Answers) -> task.Config:
) )
language = answers.language language = answers.language
transformer_dict = get_transformer_dict() transformer_dict = get_transformer_dict()
if language not in transformer_dict:
return task.Config(task=task.Task(name=answers.name), stages=[])
transformer = transformer_dict[language] transformer = transformer_dict[language]
stages = transformer(language) stages = transformer(language)
return task.Config(task=task.Task(name=answers.name), stages=stages) return task.Config(task=task.Task(name=answers.name), stages=stages)