Skip to content
Snippets Groups Projects
Commit 965a9082 authored by michael.minelli's avatar michael.minelli
Browse files

Config => Adapt to getEnvVar function

parent 9c174a2f
No related branches found
No related tags found
No related merge requests found
import getAppDataPath from 'appdata-path';
import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig';
import GitlabManager from '../managers/GitlabManager';
class Config {
public readonly localConfig: {
folder: string; sessionFile: string; stateFile: string;
};
public gitlabManager!: GitlabManager;
public readonly versionUpdateInformationPeriodHours: number;
public versionUpdateInformationPeriodHours!: number;
public readonly gitlab: {
public gitlab!: {
cliReleasePage: string
cliPreAlphaReleasePage: string
};
public readonly login: {
public login!: {
server: {
port: number, route: string
}, gitlab: {
......@@ -23,51 +22,52 @@ class Config {
}
};
public readonly folders: {
public folders!: {
defaultLocalExercise: string
};
public readonly exercise: {
public exercise!: {
neededFiles: Array<string>
};
public interactiveMode: boolean;
public interactiveMode!: boolean;
constructor() {
this.localConfig = {
folder : getAppDataPath('DojoCLI'),
sessionFile: process.env.LOCAL_CONFIG_FILE_SESSION || '',
stateFile : process.env.LOCAL_CONFIG_STATE || ''
};
constructor() { }
async init(apiUrl: string) {
await ClientsSharedConfig.init(apiUrl);
const getEnvVar = ClientsSharedConfig.envVarGetter();
this.gitlabManager = new GitlabManager(ClientsSharedConfig.gitlab.URL, ClientsSharedConfig.login.gitlab.client.id, ClientsSharedConfig.login.gitlab.url.redirect, ClientsSharedConfig.login.gitlab.url.token);
this.versionUpdateInformationPeriodHours = Number(process.env.VERSION_UPDATE_INFORMATION_PERIOD_HOURS || 24);
this.versionUpdateInformationPeriodHours = Number(getEnvVar('VERSION_UPDATE_INFORMATION_PERIOD_HOURS', '24'));
this.gitlab = {
cliReleasePage : process.env.GITLAB_CLI_RELEASE_PAGE || '',
cliPreAlphaReleasePage: process.env.GITLAB_CLI_PREALPHA_RELEASE_PAGE || ''
cliReleasePage : getEnvVar('GITLAB_CLI_RELEASE_PAGE', ''),
cliPreAlphaReleasePage: getEnvVar('GITLAB_CLI_PREALPHA_RELEASE_PAGE', '')
};
this.login = {
server: {
port : Number(process.env.LOGIN_SERVER_PORT || 30992),
route: process.env.LOGIN_SERVER_ROUTE || ''
port : Number(getEnvVar('LOGIN_SERVER_PORT', '30992')),
route: getEnvVar('LOGIN_SERVER_ROUTE', '')
},
gitlab: {
url: {
code: process.env.LOGIN_GITLAB_URL_CODE || ''
code: getEnvVar('LOGIN_GITLAB_URL_CODE', '')
}
}
};
this.folders = {
defaultLocalExercise: process.env.LOCAL_EXERCISE_DEFAULT_FOLDER || './'
defaultLocalExercise: getEnvVar('LOCAL_EXERCISE_DEFAULT_FOLDER', './')
};
this.exercise = {
neededFiles: JSON.parse(process.env.EXERCISE_NEEDED_FILES || '[]')
neededFiles: JSON.parse(getEnvVar('EXERCISE_NEEDED_FILES', '[]'))
};
this.interactiveMode = process.env.INTERACTIVE_MODE === 'true';
this.interactiveMode = getEnvVar('INTERACTIVE_MODE', 'false') === 'true';
}
}
......
import LocalConfigFile from './LocalConfigFile.js';
import Config from './Config.js';
import getAppDataPath from 'appdata-path';
const sessionConfigFile = new LocalConfigFile(Config.localConfig.sessionFile);
const stateConfigFile = new LocalConfigFile(Config.localConfig.stateFile);
class ConfigFiles {
private localConfig: {
folder: string; sessionFile: string; stateFile: string;
};
public sessionConfigFile!: LocalConfigFile;
public stateConfigFile!: LocalConfigFile;
export { sessionConfigFile, stateConfigFile };
\ No newline at end of file
constructor() {
this.localConfig = {
folder : getAppDataPath('DojoCLI'),
sessionFile: process.env.LOCAL_CONFIG_FILE_SESSION ?? '',
stateFile : process.env.LOCAL_CONFIG_FILE_STATE ?? ''
};
}
init() {
this.sessionConfigFile = new LocalConfigFile(this.localConfig.folder, this.localConfig.sessionFile);
this.stateConfigFile = new LocalConfigFile(this.localConfig.folder, this.localConfig.stateFile);
}
}
export default new ConfigFiles();
\ No newline at end of file
import * as fs from 'fs';
import Config from './Config.js';
import JSON5 from 'json5';
class LocalConfigFile {
private readonly folder: string;
private readonly filename: string;
constructor(filename: string) {
constructor(folder: string, filename: string) {
this.folder = folder;
this.filename = filename;
this.loadConfig();
}
private get configPath(): string {
return `${ Config.localConfig.folder }/${ this.filename }`;
return `${ this.folder }/${ this.filename }`;
}
private _config: { [key: string]: unknown } = {};
loadConfig() {
if ( !fs.existsSync(this.configPath) ) {
fs.mkdirSync(Config.localConfig.folder, { recursive: true });
fs.mkdirSync(this.folder, { recursive: true });
fs.writeFileSync(this.configPath, JSON5.stringify({}));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment