Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • ci-change_exercises_image_registry
  • develop
  • docs-improve_documentation
  • docs-improve_user_path_description
  • feat-change_user
  • feat-create_little_container_for_developer
  • feat-default_folder
  • feat-exercise_automatic_save
  • feat-local-dev
  • feat-merge_recorder_in_extension
  • fix-pipeline
  • master
  • refactor-mission
  • 0.1.10
  • 0.1.11
  • 0.1.12
  • 0.1.5
17 results

Target

Select target project
  • deadlock-public/deadlock-desktop
1 result
Select Git revision
  • ci-change_exercises_image_registry
  • develop
  • docs-improve_documentation
  • docs-improve_user_path_description
  • feat-change_user
  • feat-create_little_container_for_developer
  • feat-default_folder
  • feat-exercise_automatic_save
  • feat-local-dev
  • feat-merge_recorder_in_extension
  • fix-pipeline
  • master
  • refactor-mission
  • 0.1.10
  • 0.1.11
  • 0.1.12
  • 0.1.5
17 results
Show changes

Commits on Source 53

Showing
with 676 additions and 435 deletions
......@@ -8,7 +8,6 @@ before_script:
- apk add curl
- export TAG=${CI_COMMIT_TAG:-latest}
build:
stage: build
services:
......
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
default
dind
plugins
\ No newline at end of file
{
"tabWidth": 2,
"semi": true,
"trailingComma": "all",
"singleQuote": true,
"printWidth": 120,
"useTabs": false
}
[1.4] 24/02/2022
* chore: remove java plugin
* feat: prefix path instead of suffix for hosts
- chore: remove java plugin
- feat: prefix path instead of suffix for hosts
[1.3] 14/02/2022
* upgrade java plugin to 0.21.0
* support of git for student
- upgrade java plugin to 0.21.0
- support of git for student
[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)
- 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
* Keep view on memory
- preStop hook ok
- GitLens integration
- Keep view on memory
[1.0] 02/10/2020
* git integration
* recorder-command
* docs/ support
- git integration
- recorder-command
- docs/ support
Deadlock Theia projet basé sur notre propre image de Theia https://git.e-biz.fr/deadlock-public/theia.
Plusieurs éléments ajoutés à l'image de base :
1. Deadlock plugins (deadlock-plugins/)
2. Outil d'enregistrment, qui permet d'enregistrer le code quand un utilisateur exécute du code (deadlock(plugins/recorder))
3. Gestion du CORS (*.deadlock.io) dans `server.js`
3. Gestion du CORS (\*.deadlock.io) dans `server.js`
Deux images de `deadlock-theia` sont build ici, _code_ et _kube_.
Deux images de `deadlock-theia` sont build ici, *code* et *kube*.
## Setup
Afin d'installer les éléments requis pour le développement, vous pouvez lancer le script `./setup.sh`.
## Construire les plugins :
`./build-plugins.sh`
Tous les plugins qui se trouvent dans `deadlock-public` vont être construit en `.vsix` puis placés
......@@ -16,17 +20,21 @@ dans `plugins/` (ex: deadlock-plugins/deadlock-extension).
Il est aussi possible d'ajouter directement des plugins `.vsix` en ajoutant le fichier dans `plugins/`
## Recorder :
Le recorder permet de sauvegarder régulièrement le code de l'utilisateur.
Pour se faire il écoute les commandes exécutées par l'utilisateur et si une contient `java|npm|yarn`
alors un snapshot du code est réalisé.
### Build
`./build-recorder.sh`
## Construire l'image Deadlock Theia avec le recorder et les plugins
`./build.sh $TAG (code|kube)`
# Requirements:
1. NodeJS > ^14.X
2. Vscode ou Vscodium
3. Docker
......
Contient une liste de dossier des extensions à construire pour ajouter à Theia pendant la phase de build.
Chaque dossier d'extension doit contenir un fichier `install.sh` et `build.sh` qui doivent contenir
respectivement la façon d'installer les dépendances et les executions pour construire le plugin,
......
......@@ -3,19 +3,14 @@
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
],
plugins: ['@typescript-eslint'],
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'],
rules: {
'semi': [2, 'always'],
'quotes': [2, 'single', 'avoid-escape'],
semi: [2, 'always'],
quotes: [2, 'single' | 'backtick', 'avoid-escape'],
'@typescript-eslint/no-unused-vars': 0,
'@typescript-eslint/no-explicit-any': 0,
'@typescript-eslint/explicit-module-boundary-types': 0,
'@typescript-eslint/no-non-null-assertion': 0,
}
},
};
......@@ -3,7 +3,5 @@
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
"dbaeumer.vscode-eslint"
]
"recommendations": ["dbaeumer.vscode-eslint"]
}
.vscode
node_modules
out/
!out/main.js
src/
dev/
tsconfig.json
\ No newline at end of file
webpack.config.js
\ No newline at end of file
......@@ -4,7 +4,7 @@
"version": "0.0.2",
"publisher": "Deadlock",
"engines": {
"vscode": "^1.51.0"
"vscode": "^1.66.0"
},
"categories": [
"Other"
......@@ -27,6 +27,21 @@
"command": "deadlock.openBriefing",
"title": "Open Briefing",
"category": "Deadlock Coding"
},
{
"command": "deadlock.openQuickSetup",
"title": "Open Deadlock quick setup page",
"category": "Deadlock Coding"
},
{
"command": "deadlock.chooseMissionWorkdir",
"title": "Choose mission workdir",
"category": "Deadlock Coding"
},
{
"command": "deadlock.clear",
"title": "Clear cache",
"category": "Deadlock Coding"
}
],
"viewsContainers": {
......@@ -45,11 +60,27 @@
"name": "Explorer",
"icon": "media/dep.svg",
"contextualTitle": "Deadlock"
},
{
"id": "help",
"name": "Help",
"visibility": "collapsed"
}
]
},
"viewsWelcome": [
{
"view": "help",
"contents": "[Quick Setup](command:deadlock.openQuickSetup)\n"
}
],
"menus": {
"view/title": [],
"view/title": [
{
"command": "deadlock.chooseMissionWorkdir",
"when": "view == deadlockPanel"
}
],
"view/item/context": []
}
},
......@@ -65,19 +96,27 @@
"watch": "tsc -w -p ./"
},
"dependencies": {
"@vscode/webview-ui-toolkit": "^1.0.0",
"async": "^3.2.2",
"crypto-js": "^4.1.1",
"date-fns": "^2.27.0",
"inversify": "^6.0.1",
"marked": "^4.0.6",
"node-fetch": "^3.2.3",
"reflect-metadata": "^0.1.13",
"simple-git": "^2.48.0"
},
"devDependencies": {
"@types/crypto-js": "^4.1.1",
"@types/marked": "^4.0.1",
"@types/node": "^12.20.47",
"@types/node-fetch": "^2.6.1",
"@types/vscode": "^1.51.0",
"@typescript-eslint/eslint-plugin": "^3.10.1",
"@typescript-eslint/parser": "^3.10.1",
"esbuild": "^0.14.2",
"eslint": "^7.32.0",
"prettier": "2.6.2",
"terser-webpack-plugin": "^5.2.5",
"ts-node": "^9.1.1",
"typescript": "^3.9.10",
......
// This file is used by gettingStarted via a <script> tag
const vscode = acquireVsCodeApi();
function launchChooseMissionWorkdirAction() {
vscode.postMessage({
command: 'launchChooseMissionWorkdirAction',
});
}
function openAuthenticationPageAction() {
vscode.postMessage({
command: 'openAuthenticationPageAction',
});
}
/* This file is used by gettingStarted via a <style> tag */
.deadlock-getting-started-card-container {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}
.deadlock-getting-started-card-container .deadlock-getting-started-card {
display: flex;
align-items: start;
min-height: 5em;
margin: 0.5em;
width: 50vw;
min-width: 20vw;
}
.deadlock-getting-started-card-container .deadlock-getting-started-card .card-checkbox {
width: 15%;
}
.deadlock-getting-started-card-container .deadlock-getting-started-card .card-body {
width: 85%;
}
.deadlock-getting-started-card-container .deadlock-getting-started-card .card-body .card-title {
font-weight: bold;
font-size: 1.5em;
margin-bottom: 0.2em;
}
.deadlock-getting-started-card-container .deadlock-getting-started-card .card-body .card-description {
margin-bottom: 0.5em;
}
export const KEYCLOAK_DEVICE_AUTH_URL =
'https://auth.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/auth/device';
export const KEYCLOAK_TOKEN_CREATE_URL = 'https://auth.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/token';
export const KEYCLOAK_USER_INFO_URL = 'https://auth.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/userinfo';
export const REJECT_UNAUTHORIZED = true;
export const KEYCLOAK_DEVICE_AUTH_URL =
'https://auth.staging.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/auth/device';
export const KEYCLOAK_TOKEN_CREATE_URL =
'https://auth.staging.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/token';
export const KEYCLOAK_USER_INFO_URL =
'https://auth.staging.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/userinfo';
export const REJECT_UNAUTHORIZED = true;
export const KEYCLOAK_DEVICE_AUTH_URL =
'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/auth/device';
export const KEYCLOAK_TOKEN_CREATE_URL =
'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/token';
export const KEYCLOAK_USER_INFO_URL =
'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/userinfo';
export const REJECT_UNAUTHORIZED = false;