48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import fs from "fs";
|
|
import { SiteConfig } from "../../../types";
|
|
import grabDirNames from "../names/grab-dir-names";
|
|
import EJSON from "../../ejson";
|
|
import envsub from "../../envsub";
|
|
|
|
type Params = {
|
|
userId?: string | number;
|
|
};
|
|
|
|
type Return = {
|
|
appConfig: SiteConfig;
|
|
userConfig: SiteConfig | null;
|
|
};
|
|
|
|
export default function grabConfig(params?: Params): Return {
|
|
const { appConfigJSONFile, userConfigJSONFilePath } = grabDirNames({
|
|
userId: params?.userId,
|
|
});
|
|
|
|
const appConfigJSON = envsub(fs.readFileSync(appConfigJSONFile, "utf-8"));
|
|
const appConfig = EJSON.parse(appConfigJSON) as SiteConfig;
|
|
|
|
if (!userConfigJSONFilePath) {
|
|
return { appConfig, userConfig: null };
|
|
}
|
|
|
|
if (!fs.existsSync(userConfigJSONFilePath)) {
|
|
fs.writeFileSync(
|
|
userConfigJSONFilePath,
|
|
JSON.stringify({
|
|
main: {},
|
|
}),
|
|
"utf-8"
|
|
);
|
|
}
|
|
|
|
const userConfigJSON = envsub(
|
|
fs.readFileSync(userConfigJSONFilePath, "utf-8")
|
|
);
|
|
|
|
const userConfig = (EJSON.parse(userConfigJSON) || {
|
|
main: {},
|
|
}) as SiteConfig;
|
|
|
|
return { appConfig, userConfig };
|
|
}
|