From 59b38130b6e07cd7ee5bed427f5d588a1cdae73c Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 27 Oct 2020 21:57:36 +0800 Subject: [PATCH] judge: fix langs config --- packages/hydrojudge/package.json | 2 +- packages/hydrojudge/src/config.ts | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index bcde8d7fd..c5f6e6496 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -1,7 +1,7 @@ { "name": "@hydrooj/hydrojudge", "bin": "bin/hydrojudge.js", - "version": "2.1.2", + "version": "2.1.3", "main": "package.json", "author": "masnn", "dependencies": { diff --git a/packages/hydrojudge/src/config.ts b/packages/hydrojudge/src/config.ts index b01d00d96..98e4f057a 100644 --- a/packages/hydrojudge/src/config.ts +++ b/packages/hydrojudge/src/config.ts @@ -4,10 +4,10 @@ import { argv } from 'yargs'; import os from 'os'; import path from 'path'; import fs from 'fs-extra'; +import yaml from 'js-yaml'; import log from './log'; export let CONFIG_FILE = path.resolve(os.homedir(), '.config', 'hydro', 'judge.yaml'); -export let LANGS_FILE = path.resolve(os.homedir(), '.config', 'hydro', 'langs.yaml'); export let CACHE_DIR = path.resolve(os.homedir(), '.cache', 'hydro', 'judge'); export let FILES_DIR = path.resolve(os.homedir(), '.cache', 'hydro', 'files', 'judge'); export let SYSTEM_MEMORY_LIMIT_MB = 1024; @@ -19,6 +19,8 @@ export let EXECUTION_HOST = 'http://localhost:5050'; export let CONFIG = null; export let LANGS = null; +let LANGS_FILE = path.resolve(os.homedir(), '.config', 'hydro', 'langs.yaml'); + if (fs.existsSync(path.resolve(process.cwd(), '.env'))) { const env = {}; const f = fs.readFileSync('.env').toString(); @@ -47,10 +49,16 @@ if (process.env.FILES_DIR || argv.files) { if (process.env.EXECUTION_HOST || argv.execute) { EXECUTION_HOST = path.resolve(process.env.EXECUTION_HOST || argv.execute as string); } -if (!(fs.existsSync(LANGS_FILE) || global.Hydro)) { - fs.ensureDirSync(path.dirname(LANGS_FILE)); - if (fs.existsSync(path.join(__dirname, '..', 'examples', 'langs.yaml'))) { +if (!global.Hydro) { + if (fs.existsSync(LANGS_FILE)) LANGS = yaml.safeLoad(fs.readFileSync(LANGS_FILE).toString()); + else { log.error('Language file not found, using default.'); + const file = path.join(path.dirname(require.resolve('@hydrooj/hydrojudge')), 'setting.yaml'); + const content = yaml.safeLoad(fs.readFileSync(file).toString()) as any; + LANGS = yaml.safeLoad(content.langs.default) as any; + } + if (!(fs.existsSync(LANGS_FILE) || global.Hydro)) { + fs.ensureDirSync(path.dirname(LANGS_FILE)); LANGS_FILE = path.join(__dirname, '..', 'examples', 'langs.yaml'); - } else throw new Error('Language file not found'); + } }