From 6e3b8fa029c6f475d99a750f31bf260387c40a29 Mon Sep 17 00:00:00 2001
From: Alex <apuret@e-biz.fr>
Date: Mon, 12 Oct 2020 18:35:26 +0200
Subject: [PATCH] wip with lerna

---
 deadlock-theia-core/config.ts                 | 14 ++++++
 .../src => deadlock-theia-core}/gitMission.ts |  4 +-
 deadlock-theia-core/package-lock.json         | 49 +++++++++++++++++++
 deadlock-theia-core/package.json              | 15 ++++++
 .../src => deadlock-theia-core}/userConfig.ts | 23 +++------
 .../.gitignore                                |  0
 .../command-recorder.js                       |  0
 .../commit.js                                 |  0
 deadlock-theia-recorder/package-lock.json     | 49 +++++++++++++++++++
 deadlock-theia-recorder/package.json          | 16 ++++++
 {recorder => deadlock-theia-recorder}/test.js |  0
 lerna.json                                    |  8 +++
 package.json                                  |  7 +++
 plugins/deadlock-extension/package-lock.json  |  9 ++--
 plugins/deadlock-extension/package.json       |  8 +--
 plugins/deadlock-extension/src/extension.ts   |  5 +-
 .../deadlock-extension/src/userConfigTheia.ts | 14 ++++++
 17 files changed, 193 insertions(+), 28 deletions(-)
 create mode 100644 deadlock-theia-core/config.ts
 rename {plugins/deadlock-extension/src => deadlock-theia-core}/gitMission.ts (94%)
 create mode 100644 deadlock-theia-core/package-lock.json
 create mode 100644 deadlock-theia-core/package.json
 rename {plugins/deadlock-extension/src => deadlock-theia-core}/userConfig.ts (70%)
 rename {recorder => deadlock-theia-recorder}/.gitignore (100%)
 rename {recorder => deadlock-theia-recorder}/command-recorder.js (100%)
 rename {recorder => deadlock-theia-recorder}/commit.js (100%)
 create mode 100644 deadlock-theia-recorder/package-lock.json
 create mode 100644 deadlock-theia-recorder/package.json
 rename {recorder => deadlock-theia-recorder}/test.js (100%)
 create mode 100644 lerna.json
 create mode 100644 package.json
 create mode 100644 plugins/deadlock-extension/src/userConfigTheia.ts

diff --git a/deadlock-theia-core/config.ts b/deadlock-theia-core/config.ts
new file mode 100644
index 00000000..34d4aeff
--- /dev/null
+++ b/deadlock-theia-core/config.ts
@@ -0,0 +1,14 @@
+import * as path from 'path';
+
+// DEV CONFIG
+
+if (!process.env['HOME']) {
+	console.error('Could not get home user.');
+}
+
+const home = process.env['HOME'] ? process.env['HOME'] : "";
+export const DEADLOCK_EXTENSION_PATH = path.join(home, 'deadlock-extension');
+export const CONFIG_PATH = path.join(DEADLOCK_EXTENSION_PATH, 'config');
+export const USER_CHALLENGE_PATH = path.join(CONFIG_PATH, 'user-challenge.json');
+export const PROJECT_SRC_PATH = path.join(DEADLOCK_EXTENSION_PATH, 'project')
+export const PROJECT_THEIA_PATH = path.join(DEADLOCK_EXTENSION_PATH, 'project-theia')
\ No newline at end of file
diff --git a/plugins/deadlock-extension/src/gitMission.ts b/deadlock-theia-core/gitMission.ts
similarity index 94%
rename from plugins/deadlock-extension/src/gitMission.ts
rename to deadlock-theia-core/gitMission.ts
index 7f6efc17..302fa76c 100644
--- a/plugins/deadlock-extension/src/gitMission.ts
+++ b/deadlock-theia-core/gitMission.ts
@@ -1,6 +1,6 @@
-import userConfig, { UserConfig } from "./userConfig";
 import simpleGit, { SimpleGit, SimpleGitOptions } from 'simple-git';
 import { PROJECT_SRC_PATH } from './config';
+import UserConfig from './userConfig';
 
 const DEFAULT_REMOTE = 'deadlock';
 const DEFAULT_BRANCH = 'master';
@@ -19,7 +19,7 @@ class GitMission {
         this.git = simpleGit(options);
     }
 
-    async init() {
+    async init(userConfig: UserConfig) {
         try {
             console.log('Init Git mission..')
             console.log('prijectSRC PATH', PROJECT_SRC_PATH);
diff --git a/deadlock-theia-core/package-lock.json b/deadlock-theia-core/package-lock.json
new file mode 100644
index 00000000..097ea179
--- /dev/null
+++ b/deadlock-theia-core/package-lock.json
@@ -0,0 +1,49 @@
+{
+	"name": "deadlock-theia-core",
+	"version": "1.0.0",
+	"lockfileVersion": 1,
+	"requires": true,
+	"dependencies": {
+		"@kwsites/file-exists": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
+			"integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
+			"requires": {
+				"debug": "^4.1.1"
+			}
+		},
+		"@kwsites/promise-deferred": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
+			"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
+		},
+		"@types/node": {
+			"version": "14.11.8",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz",
+			"integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw=="
+		},
+		"debug": {
+			"version": "4.2.0",
+			"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
+			"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
+			"requires": {
+				"ms": "2.1.2"
+			}
+		},
+		"ms": {
+			"version": "2.1.2",
+			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+		},
+		"simple-git": {
+			"version": "2.21.0",
+			"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.21.0.tgz",
+			"integrity": "sha512-rohCHmEjD/ESXFLxF4bVeqgdb4Awc65ZyyuCKl3f7BvgMbZOBa/Ye3HN/GFnvruiUOAWWNupxhz3Rz5/3vJLTg==",
+			"requires": {
+				"@kwsites/file-exists": "^1.1.1",
+				"@kwsites/promise-deferred": "^1.1.1",
+				"debug": "^4.1.1"
+			}
+		}
+	}
+}
diff --git a/deadlock-theia-core/package.json b/deadlock-theia-core/package.json
new file mode 100644
index 00000000..ffd2b7c5
--- /dev/null
+++ b/deadlock-theia-core/package.json
@@ -0,0 +1,15 @@
+{
+  "name": "deadlock-theia-core",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "@types/node": "^14.11.8",
+    "simple-git": "^2.21.0"
+  }
+}
diff --git a/plugins/deadlock-extension/src/userConfig.ts b/deadlock-theia-core/userConfig.ts
similarity index 70%
rename from plugins/deadlock-extension/src/userConfig.ts
rename to deadlock-theia-core/userConfig.ts
index ac013590..0053db9b 100644
--- a/plugins/deadlock-extension/src/userConfig.ts
+++ b/deadlock-theia-core/userConfig.ts
@@ -19,12 +19,9 @@ import { USER_CHALLENGE_PATH } from './config';
  * }
  */
 
-export class UserConfig {
-    private static instance: UserConfig;
+export abstract class UserConfig {
     private userConfigJson: any | undefined;
 
-    private constructor() { }
-
     getPaths(): Map<number, string> {
         return this.userConfigJson?.paths;
     }
@@ -53,19 +50,15 @@ export class UserConfig {
         return this.userConfigJson?.missionId;
     }
 
-    public static getInstance(): UserConfig {
-        if (!UserConfig.instance) {
-            UserConfig.instance = new UserConfig();
-        }
-
-        return UserConfig.instance;
-    }
+    abstract async loadUserChallengeFile(): Promise<string>;
 
     public async init() {
         try {
-            const userConfig = await vscode.workspace.openTextDocument(vscode.Uri.parse(USER_CHALLENGE_PATH));
+            // const userConfig = await vscode.workspace.openTextDocument(vscode.Uri.parse(USER_CHALLENGE_PATH));
+
+            const userConfig = await this.loadUserChallengeFile();
 
-            this.userConfigJson = JSON.parse(userConfig.getText());
+            this.userConfigJson = JSON.parse(userConfig);
             return Promise.resolve();
         } catch (e) {
             console.error(e);
@@ -74,6 +67,4 @@ export class UserConfig {
     }
 }
 
-const userConfig = UserConfig.getInstance();
-
-export default userConfig;
+export default UserConfig;
diff --git a/recorder/.gitignore b/deadlock-theia-recorder/.gitignore
similarity index 100%
rename from recorder/.gitignore
rename to deadlock-theia-recorder/.gitignore
diff --git a/recorder/command-recorder.js b/deadlock-theia-recorder/command-recorder.js
similarity index 100%
rename from recorder/command-recorder.js
rename to deadlock-theia-recorder/command-recorder.js
diff --git a/recorder/commit.js b/deadlock-theia-recorder/commit.js
similarity index 100%
rename from recorder/commit.js
rename to deadlock-theia-recorder/commit.js
diff --git a/deadlock-theia-recorder/package-lock.json b/deadlock-theia-recorder/package-lock.json
new file mode 100644
index 00000000..a6928b14
--- /dev/null
+++ b/deadlock-theia-recorder/package-lock.json
@@ -0,0 +1,49 @@
+{
+	"name": "deadlock-theia-recorder",
+	"version": "1.0.0",
+	"lockfileVersion": 1,
+	"requires": true,
+	"dependencies": {
+		"@kwsites/file-exists": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
+			"integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
+			"requires": {
+				"debug": "^4.1.1"
+			}
+		},
+		"@kwsites/promise-deferred": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
+			"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
+		},
+		"@types/node": {
+			"version": "14.11.8",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz",
+			"integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw=="
+		},
+		"debug": {
+			"version": "4.2.0",
+			"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
+			"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
+			"requires": {
+				"ms": "2.1.2"
+			}
+		},
+		"ms": {
+			"version": "2.1.2",
+			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+		},
+		"simple-git": {
+			"version": "2.21.0",
+			"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.21.0.tgz",
+			"integrity": "sha512-rohCHmEjD/ESXFLxF4bVeqgdb4Awc65ZyyuCKl3f7BvgMbZOBa/Ye3HN/GFnvruiUOAWWNupxhz3Rz5/3vJLTg==",
+			"requires": {
+				"@kwsites/file-exists": "^1.1.1",
+				"@kwsites/promise-deferred": "^1.1.1",
+				"debug": "^4.1.1"
+			}
+		}
+	}
+}
diff --git a/deadlock-theia-recorder/package.json b/deadlock-theia-recorder/package.json
new file mode 100644
index 00000000..c962c1ce
--- /dev/null
+++ b/deadlock-theia-recorder/package.json
@@ -0,0 +1,16 @@
+{
+  "name": "deadlock-theia-recorder",
+  "version": "1.0.0",
+  "description": "",
+  "main": "command-recorder.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "@types/node": "^14.11.8",
+    "deadlock-theia-core": "^1.0.0",
+    "simple-git": "^2.21.0"
+  }
+}
diff --git a/recorder/test.js b/deadlock-theia-recorder/test.js
similarity index 100%
rename from recorder/test.js
rename to deadlock-theia-recorder/test.js
diff --git a/lerna.json b/lerna.json
new file mode 100644
index 00000000..b34ead76
--- /dev/null
+++ b/lerna.json
@@ -0,0 +1,8 @@
+{
+  "packages": [
+    "plugins/*",
+    "deadlock-theia-core/",
+    "deadlock-theia-recorder/"
+  ],
+  "version": "0.0.0"
+}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..99f61af8
--- /dev/null
+++ b/package.json
@@ -0,0 +1,7 @@
+{
+  "name": "root",
+  "private": true,
+  "devDependencies": {
+    "lerna": "^3.22.1"
+  }
+}
diff --git a/plugins/deadlock-extension/package-lock.json b/plugins/deadlock-extension/package-lock.json
index 743451f8..7f50f80e 100644
--- a/plugins/deadlock-extension/package-lock.json
+++ b/plugins/deadlock-extension/package-lock.json
@@ -1,5 +1,5 @@
 {
-	"name": "deadlock-coding",
+	"name": "deadlock-extension-coding",
 	"version": "0.0.1",
 	"lockfileVersion": 1,
 	"requires": true,
@@ -67,10 +67,9 @@
 			"integrity": "sha512-j8XXj6/l9kFvCwMyVqozznqpd/nk80krrW+QiIJN60Uu9gX5Pvn4/qPJ2YngQrR3QREPwmrE1f9/EWKVTFzoEw=="
 		},
 		"@types/node": {
-			"version": "12.12.35",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.35.tgz",
-			"integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==",
-			"dev": true
+			"version": "14.11.8",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz",
+			"integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw=="
 		},
 		"@types/vscode": {
 			"version": "1.38.0",
diff --git a/plugins/deadlock-extension/package.json b/plugins/deadlock-extension/package.json
index 6d8578e5..076819dd 100644
--- a/plugins/deadlock-extension/package.json
+++ b/plugins/deadlock-extension/package.json
@@ -1,5 +1,5 @@
 {
-	"name": "deadlock-coding",
+	"name": "deadlock-extension-coding",
 	"description": "Deadlock Coding",
 	"version": "0.0.1",
 	"publisher": "Deadlock",
@@ -61,16 +61,18 @@
 	},
 	"dependencies": {
 		"@types/marked": "^1.1.0",
+		"@types/node": "^14.11.8",
+		"deadlock-theia-core": "^1.0.0",
 		"keycloak-js": "^11.0.0",
 		"marked": "^1.1.1",
 		"simple-git": "^2.21.0"
 	},
 	"devDependencies": {
 		"@types/node": "^12.12.0",
+		"@types/vscode": "^1.38.0",
 		"@typescript-eslint/eslint-plugin": "^3.0.2",
 		"@typescript-eslint/parser": "^3.0.2",
 		"eslint": "^7.1.0",
-		"typescript": "^3.9.4",
-		"@types/vscode": "^1.38.0"
+		"typescript": "^3.9.4"
 	}
 }
diff --git a/plugins/deadlock-extension/src/extension.ts b/plugins/deadlock-extension/src/extension.ts
index d518c1b1..d6277494 100644
--- a/plugins/deadlock-extension/src/extension.ts
+++ b/plugins/deadlock-extension/src/extension.ts
@@ -8,8 +8,9 @@ import View from './view/view';
 import { OPEN_BRIEFING_COMMAND } from './command';
 import { PROJECT_SRC_PATH, PROJECT_THEIA_PATH } from './config';
 
-import userConfig from './userConfig';
-import gitMission from './gitMission';
+import userConfig from './userConfigTheia';
+import gitMission from 'deadlock-theia-core/gitMission';
+
 
 export function initViews(extensionPath: string) {
   new BriefingView(extensionPath);
diff --git a/plugins/deadlock-extension/src/userConfigTheia.ts b/plugins/deadlock-extension/src/userConfigTheia.ts
new file mode 100644
index 00000000..173bd9ff
--- /dev/null
+++ b/plugins/deadlock-extension/src/userConfigTheia.ts
@@ -0,0 +1,14 @@
+import UserConfig from "deadlock-theia-core/userConfig";
+
+class UserConfigTheia extends UserConfig {
+
+    constructor() {
+        super();
+    }
+
+    loadUserChallengeFile(): Promise<string> {
+        throw new Error("Method not implemented.");
+    }
+}
+
+export default UserConfigTheia;
\ No newline at end of file
-- 
GitLab