import { Settings } from '@material-ui/icons'; import { randomBytes } from 'crypto'; import { readFileSync, writeFileSync } from 'fs'; export type Setting = { path: string[], localmode: boolean, guest: boolean, jwt_secretkey: string } const default_setting:Setting = { path:[], localmode: true, guest:false, jwt_secretkey:"itsRandom", } let setting: null|Setting = null; const setEmptyToDefault = (target:any,default_table:Setting)=>{ let diff_occur = false; for(const key in default_table){ if(key === undefined || key in target){ continue; } target[key] = default_table[key as keyof Setting]; diff_occur = true; } return diff_occur; } export const read_setting_from_file = ()=>{ let ret = JSON.parse(readFileSync("settings.json",{encoding:"utf8"})) as Setting; const partial_occur = setEmptyToDefault(ret,default_setting); if(partial_occur){ writeFileSync("settings.json",JSON.stringify(ret)); } return ret; } export function get_setting():Setting{ if(setting === null){ setting = read_setting_from_file(); } return setting; }