diff --git a/docs/setup_selfbuild.md b/docs/setup_selfbuild.md index 908078ae..82f1aa0d 100644 --- a/docs/setup_selfbuild.md +++ b/docs/setup_selfbuild.md @@ -7,9 +7,26 @@ cd mjolnir yarn install yarn build -# Copy and edit the config. It *is* recommended to change the data path. +# Edit the config. +# You probably should change `dataPath`. +nano config/default.yaml + +node lib/index.js +``` + +Or, if you wish to use a different configuration file, e.g. `development.yaml` + +```bash +git clone https://github.com/matrix-org/mjolnir.git +cd mjolnir + +yarn install +yarn build + +# Edit the config. +# You probably should change `dataPath`. cp config/default.yaml config/development.yaml nano config/development.yaml -node lib/index.js +NODE_ENV=development node lib/index.js ``` diff --git a/src/config.ts b/src/config.ts index dad9ee46..36cc5320 100644 --- a/src/config.ts +++ b/src/config.ts @@ -172,10 +172,34 @@ const defaultConfig: IConfig = { export function read(): IConfig { const config_dir = process.env.NODE_CONFIG_DIR || "./config"; - const config_file = `${process.env.NODE_ENV || "default"}.yaml` - - const content = fs.readFileSync(path.join(config_dir, config_file), "utf8"); + let config_path; + for (let key of [ + process.env.NODE_ENV, + "production", + "default" + ]) { + if (!key) { + continue; + } + const candidate_path = path.join(config_dir, `${key}.yaml`); + if (!fs.existsSync(candidate_path)) { + continue; + } + config_path = candidate_path; + break; + } + if (!config_path) { + throw new Error("Could not find any valid configuration file"); + } + const content = fs.readFileSync(config_path, "utf8"); const parsed = load(content); const config = {...defaultConfig, ...(parsed as object)} as IConfig; + if (config.accessToken === "YOUR_TOKEN_HERE") { + // A small check to simplify the error message in case + // the configuration file hasn't been modified. + throw new Error(`Invalid access token in configuration file ${config_path}. ` + + "This usually indicates that Mjölnir's configuration file was not setup " + + "or that Mjölnir is using the wrong configuration file."); + } return config; }