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

Singletons => Change method to make singleton class

parent 132296c2
No related branches found
No related tags found
No related merge requests found
Showing
with 27 additions and 239 deletions
......@@ -5,8 +5,6 @@ abstract class CommanderCommand {
protected abstract commandName: string;
command: Command = new Command();
protected constructor() {}
registerOnCommand(parent: Command) {
this.command = parent.command(this.commandName);
......
import CommanderCommand from '../CommanderCommand';
import EnonceCreateCommand from './EnonceCreateCommand';
import EnoncePublishCommand from './EnoncePublishCommand';
import EnonceUnpublishCommand from './EnonceUnpublishCommand';
class EnonceCommand extends CommanderCommand {
protected commandName: string = 'enonce';
private static _instance: EnonceCommand;
private constructor() { super(); }
public static get instance(): EnonceCommand {
if ( !EnonceCommand._instance ) {
EnonceCommand._instance = new EnonceCommand();
}
return EnonceCommand._instance;
}
protected defineCommand() {
this.command
.description('manage an enonce');
......@@ -24,10 +14,12 @@ class EnonceCommand extends CommanderCommand {
protected defineSubCommands() {
EnonceCreateCommand.registerOnCommand(this.command);
EnoncePublishCommand.registerOnCommand(this.command);
EnonceUnpublishCommand.registerOnCommand(this.command);
}
protected async commandAction(options: any): Promise<void> { }
}
export default EnonceCommand.instance;
\ No newline at end of file
export default new EnonceCommand();
\ No newline at end of file
......@@ -12,18 +12,6 @@ import Toolbox from '../../shared/helpers/Toolbox';
class EnonceCreateCommand extends CommanderCommand {
protected commandName: string = 'create';
private static _instance: EnonceCreateCommand;
private constructor() { super(); }
public static get instance(): EnonceCreateCommand {
if ( !EnonceCreateCommand._instance ) {
EnonceCreateCommand._instance = new EnonceCreateCommand();
}
return EnonceCreateCommand._instance;
}
protected defineCommand() {
this.command
.description('create a new repository for an enonce')
......@@ -107,4 +95,4 @@ class EnonceCreateCommand extends CommanderCommand {
}
export default EnonceCreateCommand.instance;
\ No newline at end of file
export default new EnonceCreateCommand();
\ No newline at end of file
......@@ -5,18 +5,6 @@ import ExerciceCreateCommand from './ExerciceCreateCommand';
class ExerciceCommand extends CommanderCommand {
protected commandName: string = 'exercice';
private static _instance: ExerciceCommand;
private constructor() { super(); }
public static get instance(): ExerciceCommand {
if ( !ExerciceCommand._instance ) {
ExerciceCommand._instance = new ExerciceCommand();
}
return ExerciceCommand._instance;
}
protected defineCommand() {
this.command
.description('manage an exercice');
......@@ -30,4 +18,4 @@ class ExerciceCommand extends CommanderCommand {
}
export default ExerciceCommand.instance;
\ No newline at end of file
export default new ExerciceCommand();
\ No newline at end of file
......@@ -12,18 +12,6 @@ import Exercice from '../../types/Exercice';
class ExerciceCreateCommand extends CommanderCommand {
protected commandName: string = 'create';
private static _instance: ExerciceCreateCommand;
private constructor() { super(); }
public static get instance(): ExerciceCreateCommand {
if ( !ExerciceCreateCommand._instance ) {
ExerciceCreateCommand._instance = new ExerciceCreateCommand();
}
return ExerciceCreateCommand._instance;
}
protected defineCommand() {
this.command
.description('create a new exercice from an enonce')
......@@ -111,4 +99,4 @@ class ExerciceCreateCommand extends CommanderCommand {
}
export default ExerciceCreateCommand.instance;
\ No newline at end of file
export default new ExerciceCreateCommand();
\ No newline at end of file
......@@ -6,18 +6,6 @@ import SessionAppLogoutCommand from './SessionAppLogoutCommand';
class SessionAppCommand extends CommanderCommand {
protected commandName: string = 'application';
private static _instance: SessionAppCommand;
private constructor() { super(); }
public static get instance(): SessionAppCommand {
if ( !SessionAppCommand._instance ) {
SessionAppCommand._instance = new SessionAppCommand();
}
return SessionAppCommand._instance;
}
protected defineCommand() {
this.command
.description('manage application session');
......@@ -32,4 +20,4 @@ class SessionAppCommand extends CommanderCommand {
}
export default SessionAppCommand.instance;
\ No newline at end of file
export default new SessionAppCommand();
\ No newline at end of file
......@@ -7,18 +7,6 @@ import SessionManager from '../../../managers/SessionManager';
class SessionAppLoginCommand extends CommanderCommand {
protected commandName: string = 'login';
private static _instance: SessionAppLoginCommand;
private constructor() { super(); }
public static get instance(): SessionAppLoginCommand {
if ( !SessionAppLoginCommand._instance ) {
SessionAppLoginCommand._instance = new SessionAppLoginCommand();
}
return SessionAppLoginCommand._instance;
}
protected defineCommand() {
this.command
.description('login into the application')
......@@ -46,4 +34,4 @@ class SessionAppLoginCommand extends CommanderCommand {
}
export default SessionAppLoginCommand.instance;
\ No newline at end of file
export default new SessionAppLoginCommand();
\ No newline at end of file
......@@ -7,18 +7,6 @@ import ora from 'ora';
class SessionAppLogoutCommand extends CommanderCommand {
protected commandName: string = 'logout';
private static _instance: SessionAppLogoutCommand;
private constructor() { super(); }
public static get instance(): SessionAppLogoutCommand {
if ( !SessionAppLogoutCommand._instance ) {
SessionAppLogoutCommand._instance = new SessionAppLogoutCommand();
}
return SessionAppLogoutCommand._instance;
}
protected defineCommand() {
this.command
.description('logout of the application')
......@@ -47,4 +35,4 @@ class SessionAppLogoutCommand extends CommanderCommand {
}
export default SessionAppLogoutCommand.instance;
\ No newline at end of file
export default new SessionAppLogoutCommand();
\ No newline at end of file
......@@ -6,18 +6,6 @@ import SessionGitlabLogoutCommand from './SessionGitlabLogoutCommand';
class SessionGitlabCommand extends CommanderCommand {
protected commandName: string = 'gitlab';
private static _instance: SessionGitlabCommand;
private constructor() { super(); }
public static get instance(): SessionGitlabCommand {
if ( !SessionGitlabCommand._instance ) {
SessionGitlabCommand._instance = new SessionGitlabCommand();
}
return SessionGitlabCommand._instance;
}
protected defineCommand() {
this.command
.description('manage Gitlab session');
......@@ -32,4 +20,4 @@ class SessionGitlabCommand extends CommanderCommand {
}
export default SessionGitlabCommand.instance;
\ No newline at end of file
export default new SessionGitlabCommand();
\ No newline at end of file
......@@ -6,18 +6,6 @@ import GitlabManager from '../../../managers/GitlabManager';
class SessionGitlabLoginCommand extends CommanderCommand {
protected commandName: string = 'login';
private static _instance: SessionGitlabLoginCommand;
private constructor() { super(); }
public static get instance(): SessionGitlabLoginCommand {
if ( !SessionGitlabLoginCommand._instance ) {
SessionGitlabLoginCommand._instance = new SessionGitlabLoginCommand();
}
return SessionGitlabLoginCommand._instance;
}
protected defineCommand() {
this.command
.description('register the gitlab token')
......@@ -35,4 +23,4 @@ class SessionGitlabLoginCommand extends CommanderCommand {
}
export default SessionGitlabLoginCommand.instance;
\ No newline at end of file
export default new SessionGitlabLoginCommand();
\ No newline at end of file
......@@ -7,18 +7,6 @@ import GitlabManager from '../../../managers/GitlabManager';
class SessionGitlabLogoutCommand extends CommanderCommand {
protected commandName: string = 'logout';
private static _instance: SessionGitlabLogoutCommand;
private constructor() { super(); }
public static get instance(): SessionGitlabLogoutCommand {
if ( !SessionGitlabLogoutCommand._instance ) {
SessionGitlabLogoutCommand._instance = new SessionGitlabLogoutCommand();
}
return SessionGitlabLogoutCommand._instance;
}
protected defineCommand() {
this.command
.description('logout of Gitlab')
......@@ -47,4 +35,4 @@ class SessionGitlabLogoutCommand extends CommanderCommand {
}
export default SessionGitlabLogoutCommand.instance;
\ No newline at end of file
export default new SessionGitlabLogoutCommand();
\ No newline at end of file
......@@ -7,18 +7,6 @@ import SessionGitlabCommand from './Gitlab/SessionGitlabCommand';
class SessionCommand extends CommanderCommand {
protected commandName: string = 'session';
private static _instance: SessionCommand;
private constructor() { super(); }
public static get instance(): SessionCommand {
if ( !SessionCommand._instance ) {
SessionCommand._instance = new SessionCommand();
}
return SessionCommand._instance;
}
protected defineCommand() {
this.command
.description('manage Dojo and Gitlab sessions');
......@@ -34,4 +22,4 @@ class SessionCommand extends CommanderCommand {
}
export default SessionCommand.instance;
\ No newline at end of file
export default new SessionCommand();
\ No newline at end of file
......@@ -6,18 +6,6 @@ import GitlabManager from '../../managers/GitlabManager';
class SessionTestCommand extends CommanderCommand {
protected commandName: string = 'test';
private static _instance: SessionTestCommand;
private constructor() { super(); }
public static get instance(): SessionTestCommand {
if ( !SessionTestCommand._instance ) {
SessionTestCommand._instance = new SessionTestCommand();
}
return SessionTestCommand._instance;
}
protected defineCommand() {
this.command
.description('test availability of registered Dojo API and Gitlab API sessions')
......@@ -31,4 +19,4 @@ class SessionTestCommand extends CommanderCommand {
}
export default SessionTestCommand.instance;
\ No newline at end of file
export default new SessionTestCommand();
\ No newline at end of file
......@@ -2,8 +2,6 @@ import getAppDataPath from 'appdata-path';
class Config {
private static _instance: Config;
public apiURL: string;
public gitlab: {
......@@ -15,7 +13,7 @@ class Config {
folder: string; file: string;
};
private constructor() {
constructor() {
this.apiURL = process.env.API_URL || '';
this.gitlab = {
......@@ -31,15 +29,7 @@ class Config {
file : process.env.LOCAL_CONFIG_FILE || ''
};
}
public static get instance(): Config {
if ( !Config._instance ) {
Config._instance = new Config();
}
return Config._instance;
}
}
export default Config.instance;
export default new Config();
......@@ -7,24 +7,12 @@ import GitlabManager from '../managers/GitlabManager';
class LocalConfig {
private static _instance: LocalConfig;
private get configPath(): string {
return `${ Config.localConfig.folder }/${ Config.localConfig.file }`;
}
private _config: { [key in LocalConfigKeys]?: any } = {};
private constructor() { }
public static get instance(): LocalConfig {
if ( !LocalConfig._instance ) {
LocalConfig._instance = new LocalConfig();
}
return LocalConfig._instance;
}
loadConfig() {
if ( !fs.existsSync(this.configPath) ) {
fs.mkdirSync(Config.localConfig.folder, { recursive: true });
......@@ -56,4 +44,4 @@ class LocalConfig {
}
export default LocalConfig.instance;
\ No newline at end of file
export default new LocalConfig();
\ No newline at end of file
......@@ -10,18 +10,6 @@ import DojoResponse from '../shared/types/DojoResponse';
class DojoBackendManager {
constructor() { }
private static _instance: DojoBackendManager;
public static get instance(): DojoBackendManager {
if ( !DojoBackendManager._instance ) {
DojoBackendManager._instance = new DojoBackendManager();
}
return DojoBackendManager._instance;
}
public getApiUrl(route: ApiRoutes): string {
return `${ Config.apiURL }${ route }`;
}
......@@ -144,4 +132,4 @@ class DojoBackendManager {
}
export default DojoBackendManager.instance;
export default new DojoBackendManager();
......@@ -10,18 +10,6 @@ import GitlabRoutes from '../shared/types/Gitlab/GitlabRoutes';
class GitlabManager {
private _token: string | null = null;
constructor() { }
private static _instance: GitlabManager;
public static get instance(): GitlabManager {
if ( !GitlabManager._instance ) {
GitlabManager._instance = new GitlabManager();
}
return GitlabManager._instance;
}
private getApiUrl(route: GitlabRoutes): string {
return `${ Config.gitlab.apiURL }${ route }`;
}
......@@ -219,4 +207,4 @@ class GitlabManager {
}
export default GitlabManager.instance;
export default new GitlabManager();
......@@ -10,18 +10,6 @@ import { StatusCodes } from 'http-status-codes';
class HttpManager {
public handleCommandErrors: boolean = true;
private static _instance: HttpManager;
public static get instance(): HttpManager {
if ( !HttpManager._instance ) {
HttpManager._instance = new HttpManager();
}
return HttpManager._instance;
}
private constructor() { }
registerAxiosInterceptor() {
this.registerRequestInterceptor();
this.registerResponseInterceptor();
......@@ -86,5 +74,5 @@ class HttpManager {
}
export default HttpManager.instance;
export default new HttpManager();
......@@ -16,18 +16,6 @@ class SessionManager {
public profile: User = new User();
constructor() { }
private static _instance: SessionManager;
public static get instance(): SessionManager {
if ( !SessionManager._instance ) {
SessionManager._instance = new SessionManager();
}
return SessionManager._instance;
}
get isLogged(): boolean {
return this._token !== null;
}
......@@ -140,4 +128,4 @@ class SessionManager {
}
export default SessionManager.instance;
export default new SessionManager();
Subproject commit 0328c67fd0cade4b51fbf82afc7a07a7d16abe5d
Subproject commit f20c94b884f7ab76936b059b712274a35fcc6318
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment