diff --git a/CHANGELOG.md b/CHANGELOG.md index 619d8bb1d1de2825edc9b0c402fd8ea198dc1e8a..2aac295528364caf88860935469d7d719bef8abe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ +[1.2] 27/11/2020 +* Image supports in briefing +* Set theia-full instead of theia-java (https://git.e-biz.fr/deadlock-public/deadlock-theia/-/issues/2) + [1.1] 27/11/2020 * preStop hook ok * GitLens integration diff --git a/Dockerfile b/Dockerfile index 2f4643b962ab9dba868cb0e23d5696b60511434d..28671db2a9c107d923e81fc80b885bcd59ef1ec4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM theiaide/theia-java:1.4.0 +FROM theiaide/theia-full:1.7.0 USER root @@ -19,7 +19,7 @@ COPY recorder-out/dist/main.js deadlock/recorder.js COPY recorder-out/dist/preStop.js deadlock/preStop.js COPY .gitignore_recorder deadlock/.gitignore -RUN chmod 500 deadlock/ -R +RUN chmod 504 deadlock/ -R RUN chmod 500 start.sh ENTRYPOINT ["bash", "start.sh"] diff --git a/plugins/deadlock-extension/README.md b/plugins/deadlock-extension/README.md index 9a5ab4bce2ddd3b97bc58549f348bea137ff2fd5..01fc6452bd81c2d5c43bbcdb2ffd01b0291c5ab6 100644 --- a/plugins/deadlock-extension/README.md +++ b/plugins/deadlock-extension/README.md @@ -4,3 +4,5 @@ Vscode extension to show a panel with : * adresses availables for the current challenge pulled from `/home/config/user-challenge.json` * challenge instruction pulled from the `README.md` +## Run first the `setup-dev-env.sh` then you can start your plugin with `VsCode Run`. + diff --git a/plugins/deadlock-extension/dev/config/user-challenge.json b/plugins/deadlock-extension/dev/config/user-challenge.json new file mode 100644 index 0000000000000000000000000000000000000000..76564a32e157f6d15ef0a19891e0af0ae8ea74a9 --- /dev/null +++ b/plugins/deadlock-extension/dev/config/user-challenge.json @@ -0,0 +1,13 @@ +{ + "paths": { + "9090": "HXW3fnKwUULrfKS1-cdb", + "3000": "HXW3fnKwUULrfKS1-web", + "8080": "HXW3fnKwUULrfKS1-angular" + }, + "host": "persist.dev.deadlock.io", + "token": "e75da487-9576-4427-be2d-8da4059adc7d", + "giteaHost": "deadlock.minikube", + "giteaSshPort": 32000, + "username": "toast", + "missionId": "code_persist_cdb_crud" +} diff --git a/plugins/deadlock-extension/dev/docs/briefing.md b/plugins/deadlock-extension/dev/docs/briefing.md new file mode 100644 index 0000000000000000000000000000000000000000..dc0b11a276a9f166fc9817a7b164f147d9666776 --- /dev/null +++ b/plugins/deadlock-extension/dev/docs/briefing.md @@ -0,0 +1,5 @@ +# Briefing dev sample + +HELL0 WORLD! + + diff --git a/plugins/deadlock-extension/dev/docs/toast.jpg b/plugins/deadlock-extension/dev/docs/toast.jpg new file mode 100644 index 0000000000000000000000000000000000000000..77bef7473d1159a789053366aa960d0ebbfa7e44 Binary files /dev/null and b/plugins/deadlock-extension/dev/docs/toast.jpg differ diff --git a/plugins/deadlock-extension/setup-dev-env.sh b/plugins/deadlock-extension/setup-dev-env.sh index 66a4ee53c991fe38b81de07812ea8f21f0572533..fcd5d04ba4016f9026efbb77389456e196f77ee2 100755 --- a/plugins/deadlock-extension/setup-dev-env.sh +++ b/plugins/deadlock-extension/setup-dev-env.sh @@ -5,25 +5,5 @@ mkdir -p /home/$USER/deadlock-extension/project mkdir -p /home/$USER/deadlock-extension/project-theia -mkdir -p /home/$USER/deadlock-extension/config -mkdir -p /home/$USER/deadlock-extension/docs -echo ' -# Briefing dev sample -HELL0 WORLD! -' > /home/$USER/deadlock-extension/docs/briefing.md -echo ' -{ - "paths": { - "9090":"HXW3fnKwUULrfKS1-cdb", - "3000":"HXW3fnKwUULrfKS1-web", - "8080":"HXW3fnKwUULrfKS1-angular" - }, - "host":"persist.dev.deadlock.io", - "token":"e75da487-9576-4427-be2d-8da4059adc7d", - "giteaHost":"deadlock.minikube", - "giteaSshPort":32000, - "username":"toast", - "missionId":"code_persist_cdb_crud" - } -' > /home/$USER/deadlock-extension/config/user-challenge.json \ No newline at end of file +cp -R ./dev/* /home/$USER/deadlock-extension diff --git a/plugins/deadlock-extension/src/extension.ts b/plugins/deadlock-extension/src/extension.ts index 8b1891cb7df38663b0ac8098bbabb4517f2d372a..b9849fa850ea92208e3c73c3b4328d049f8bebdc 100644 --- a/plugins/deadlock-extension/src/extension.ts +++ b/plugins/deadlock-extension/src/extension.ts @@ -12,7 +12,11 @@ export const userConfig = new UserConfigTheia(); export async function activate(context: vscode.ExtensionContext) { - await userConfig.init(); + try { + await userConfig.init(); + } catch (e) { + console.error("Cannot init userConfig"); + } initViews(); diff --git a/plugins/deadlock-extension/src/view/briefingView.ts b/plugins/deadlock-extension/src/view/briefingView.ts index 77fc224ac373a5f14938bc2fbf70b1a313980699..755c8901f696b6bf5132a2cea469bc4db088cbfb 100644 --- a/plugins/deadlock-extension/src/view/briefingView.ts +++ b/plugins/deadlock-extension/src/view/briefingView.ts @@ -2,9 +2,10 @@ import View from "./view"; import * as vscode from "vscode"; -import * as path from "path"; // eslint-disable-next-line @typescript-eslint/no-var-requires const marked = require("marked"); +const fs = require("fs"); +import * as path from "path"; import { DOCS_PATH, BRIEFING_FILE_NAME } from "../core/config"; import { WebviewBase } from "./webviewBase"; @@ -25,6 +26,27 @@ export default class BriefingView extends WebviewBase { super(BRIEFING_ID, "Briefing", OPEN_BRIEFING_COMMAND); } + toBase64(file: string) { + const re = fs.readFileSync(path.join(DOCS_PATH, file), { + encoding: "base64", + }); + console.log("re", re); + return re; + } + + setupImages(text: string) { + const imageRegex = /\!\[(.*?)\]\(\b(image:)(.*?\))?/g + + return text.replace(imageRegex, (match, title, imagePrefix, img) => { + const fileName = img.replace(")", ""); + const extension = fileName.split("\."); + + return `})`; + }); + } + load(): void { const intervalId = setInterval(() => { if (vscode.workspace && !this.loadingBriefing) { @@ -37,7 +59,12 @@ export default class BriefingView extends WebviewBase { ) .then( (document) => { - this.briefingContent = document.getText(); + try { + this.briefingContent = this.setupImages(document.getText()); + } catch (e) { + console.error(e); + this.briefingContent = "Error while parsing your briefing." + } this.show(); }, (error) => { @@ -93,7 +120,7 @@ export default class BriefingView extends WebviewBase { if (key !== "3000") { pathsLength++; const path = paths[key]; - if (userConfig.getHost() === 'localhost') { + if (userConfig.getHost() === "localhost") { adresses += `<li>${key} binded on <a href="http://${userConfig.getHost()}:${path}">${path}</a></li>`; } else { adresses += `<li>${key} binded on <a href="https://${userConfig.getHost()}/${path}/">${path}</a></li>`; diff --git a/server.js b/server.js index 39e7d1718b44a61d65b4b16a87afc31b872d11e6..2b30d4bd734881380a8ea62fdefb9e3fe8f7348f 100644 --- a/server.js +++ b/server.js @@ -58,20 +58,21 @@ function start(port, host, argv) { }); } - module.exports = (port, host, argv) => Promise.resolve() - .then(function () { return Promise.resolve(require('@theia/process/lib/common/process-common-module')).then(load) }) - .then(function () { return Promise.resolve(require('@theia/process/lib/node/process-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/filesystem/lib/node/filesystem-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/filesystem/lib/node/download/file-download-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/workspace/lib/node/workspace-backend-module')).then(load) }) - .then(function () { return Promise.resolve(require('@theia/languages/lib/node/languages-backend-module')).then(load) }) - .then(function () { return Promise.resolve(require('@theia/file-search/lib/node/file-search-backend-module')).then(load) }) - .then(function () { return Promise.resolve(require('@theia/git/lib/node/git-backend-module')).then(load) }) - .then(function () { return Promise.resolve(require('@theia/git/lib/node/env/git-env-module')).then(load) }) + .then(function () { return Promise.resolve(require('@theia/process/lib/common/process-common-module')).then(load) }) + .then(function () { return Promise.resolve(require('@theia/process/lib/node/process-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/terminal/lib/node/terminal-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/task/lib/node/task-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/debug/lib/node/debug-backend-module')).then(load) }) + .then(function () { return Promise.resolve(require('@theia/cpp-debug/lib/node/cpp-debug-backend-module')).then(load) }) + .then(function () { return Promise.resolve(require('@theia/file-search/lib/node/file-search-backend-module')).then(load) }) + .then(function () { return Promise.resolve(require('@theia/git/lib/node/git-backend-module')).then(load) }) + .then(function () { return Promise.resolve(require('@theia/git/lib/node/env/git-env-module')).then(load) }) + .then(function () { return Promise.resolve(require('@theia/metrics/lib/node/metrics-backend-module')).then(load) }) + .then(function () { return Promise.resolve(require('@theia/mini-browser/lib/node/mini-browser-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/search-in-workspace/lib/node/search-in-workspace-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/plugin-ext/lib/plugin-ext-backend-module')).then(load) }) .then(function () { return Promise.resolve(require('@theia/plugin-ext-vscode/lib/node/plugin-vscode-backend-module')).then(load) }) @@ -82,4 +83,4 @@ module.exports = (port, host, argv) => Promise.resolve() console.error(reason); } throw reason; - }); \ No newline at end of file + }); diff --git a/start.sh b/start.sh index 37d853aa2cf2043a02e1c0f9eb82906251010b3e..e6e2ad0d5e8f4adb17f3f3f14fc5ebd439be1cd5 100755 --- a/start.sh +++ b/start.sh @@ -9,4 +9,4 @@ cp /tmp/.ssh/* ~/.ssh/ node deadlock/recorder.js & # starting theia as THEIA -su theia --command "yarn theia start /home/project --hostname=0.0.0.0 --plugins=local-dir:/home/plugins" \ No newline at end of file +su theia --command "node /home/theia/src-gen/backend/main.js /home/project --hostname=0.0.0.0 --plugins=local-dir:/home/plugins" \ No newline at end of file