You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Hydro/packages/hydrooj/src/options.ts

32 lines
1.1 KiB
TypeScript

import fs from 'fs';
import os from 'os';
import path from 'path';
4 years ago
import { Logger } from './logger';
const logger = new Logger('options');
export = function load() {
const envFile = path.resolve(os.homedir(), '.hydro', 'env');
if (fs.existsSync(envFile)) {
const content = fs.readFileSync(envFile).toString();
for (const line of content.split('\n')) {
process.env[line.split('=')[0]] = line.split('=')[1];
}
}
let f = path.resolve(process.cwd(), 'config.json');
if (!fs.existsSync(f)) f = path.resolve(__dirname, 'config.json');
if (!fs.existsSync(f)) f = path.resolve(os.homedir(), '.config', 'hydro', 'config.json');
4 years ago
if (!fs.existsSync(f)) f = path.resolve(os.homedir(), '.hydro', 'config.json');
if (!fs.existsSync(f)) f = path.resolve('/config/config.json');
if (!fs.existsSync(f)) return null;
let result: any = {};
try {
result = JSON.parse(fs.readFileSync(f).toString());
} catch (e) {
4 years ago
logger.error('Cannot read config file %o', e);
result = {};
}
return result;
};