Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions PROGRAM_CHECK_SYSTEM/src/main/java/ru/doctorixx/Env.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public enum EnvVars{
ENV_EXECUTOR_COMPILER_NEED("ENV_EXECUTOR_COMPILER_NEED"),
ENV_EXECUTOR_RUN_COMMAND("ENV_EXECUTOR_RUN_COMMAND"),
ENV_EXECUTOR_WITH_FILENAME("ENV_EXECUTOR_WITH_FILENAME"),
ENV_EXECUTOR_WITH_BOM("ENV_EXECUTOR_WITH_BOM"),

;
private final String value;
Expand All @@ -40,6 +41,7 @@ public String getValue() {
defaultEnv.put(EnvVars.ENV_EXECUTOR_ENABLE.value, "false");
defaultEnv.put(EnvVars.ENV_EXECUTOR_FILENAME.value, "Main.java");
defaultEnv.put(EnvVars.ENV_EXECUTOR_WITH_FILENAME.value, "true");
defaultEnv.put(EnvVars.ENV_EXECUTOR_WITH_BOM.value, "false");
}

public static String get(String key) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
package ru.doctorixx.core;

import ru.doctorixx.Env;
import ru.doctorixx.core.executors.CommandExecutor;
import ru.doctorixx.core.structures.ProgramResult;
import ru.doctorixx.core.utils.FileUtils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;

import static ru.doctorixx.Env.EnvVars.ENV_EXECUTOR_WITH_BOM;

public class ExecutionManager {

Expand Down Expand Up @@ -57,7 +63,14 @@ private ProgramResult execute(int runId) {

fileData = executor.mutateProgramBeforeRun(fileData);

try (FileWriter writer = new FileWriter(new File(tempdir, executor.getFilename()))) {
try (OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream(new File(tempdir, executor.getFilename())), StandardCharsets.UTF_8)) {

boolean useBOM = Env.get(ENV_EXECUTOR_WITH_BOM).equals("true");
if (useBOM) {
writer.write('\ufeff'); // Записываем BOM (0xEF, 0xBB, 0xBF)
}

writer.write(fileData);
writer.flush();
}
Expand Down
10 changes: 10 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,16 @@ services:
- with-internet
- no-internet

# checker-kumir:
# build:
# dockerfile: z_checkers_dockerfiles/Kumir.Dockerfile
# image: ghcr.io/codebattles-nn/checker-kumir
# restart: unless-stopped
# networks:
# - with-internet
# - no-internet


# checker-cpp:
# build:
# dockerfile: ./CPP.Dockerfile
Expand Down
28 changes: 28 additions & 0 deletions z_checkers_dockerfiles/Kumir.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#
# Build stage
#
FROM maven:3.9.6-eclipse-temurin-21-alpine AS build
COPY ../PROGRAM_CHECK_SYSTEM/src /home/app/src
COPY ../PROGRAM_CHECK_SYSTEM/pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean package

#
# Package stage
#
FROM alt:p11

RUN apt-get update && apt-get -y --fix-missing install kumir2 java-17-openjdk-headless

COPY --from=build /home/app/target/ProgramCheckSystem-1.0-SNAPSHOT.jar /usr/local/lib/demo.jar

ENV SERVER_ENDPOINT http://backend:8000/api/check_system_callback
ENV ENV_EXECUTOR_ENABLE true
ENV ENV_EXECUTOR_COMPILER_NEED true
ENV ENV_EXECUTOR_COMPILER_COMMAND "kumir2-bc prog.kum"
ENV ENV_EXECUTOR_FILENAME prog.kum
ENV ENV_EXECUTOR_WITH_FILENAME false
ENV ENV_EXECUTOR_RUN_COMMAND "kumir2-xrun prog.kod"
ENV ENV_EXECUTOR_WITH_BOM true

EXPOSE 7070
ENTRYPOINT ["java","-jar","/usr/local/lib/demo.jar"]
Loading