diff --git a/README.md b/README.md index 428481eb4b0d30b949cf41d17331633ffbd087fc..e4ab58074010a8436bc320689ebf9dfd0727d99a 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,52 @@ -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 : +Deadlock Desktop est un projet dont l'objectif est de permettre à un étudiant de réaliser des exercices deadlock +sur son IDE Vscode directement. Pour cela, le répertoire héberge 3 éléments : -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` +- **Une extension Vscode** : L'extension est installée sur l'IDE Vscode de l'étudiant et est responsable de l'ouverture + de l'exercice dans un [devcontainer](https://code.visualstudio.com/docs/remote/containers). -Deux images de `deadlock-theia` sont build ici, _code_ et _kube_. +- **Le recorder** : Une application `node` qui va effectuer des sauvegardes du code source de l'étudiant à chaque fois + que celui-ci va modifier un fichier ou saisir certaines commandes dans son terminal. + +- **Une image Docker** : L'image contient des programmes basiques et le recorder qui est lancé au démarrage + du conteneur. + +# Requirements: + +1. NodeJS > ^14.X +2. Vscode ou Vscodium +3. Docker ## Setup Afin d'installer les éléments requis pour le développement, vous pouvez lancer le script `./setup.sh`. -## Construire les plugins : +## L'image Docker desktop -`./build-plugins.sh` +Il s'agit d'une image qui sera utilisé par tous les créateurs d'exercices comme base. +Le créateur d'exercice peut ensuite ajouter l'exercice et les dépendances qu'il souhaite pour créer l'image de son exercice. -Tous les plugins qui se trouvent dans `deadlock-public` vont être construit en `.vsix` puis placés -dans `plugins/` (ex: deadlock-plugins/deadlock-extension). -Il est aussi possible d'ajouter directement des plugins `.vsix` en ajoutant le fichier dans `plugins/` +L'image est décrite dans le fichier `Dockerfile.desktop`. ## 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é. +Pour se faire, il écoute les commandes exécutées par l'utilisateur. Si l'une d'entre elles contient `java`, `npm` ou `yarn` +alors un snapshot du code est réalisé. Il va également faire un snapshot du code lorsque l'étudiant modifiera les fichiers de l'exercice. ### Build `./build-recorder.sh` -## Construire l'image Deadlock Theia avec le recorder et les plugins +## Construire les plugins Vscode : -`./build.sh $TAG (code|kube)` +`./build-plugins.sh` -# Requirements: +Tous les plugins qui se trouvent dans `deadlock-public` vont être construit en `.vsix` puis placés +dans `plugins/` (ex: deadlock-plugins/deadlock-extension). +Il est aussi possible d'ajouter directement des plugins `.vsix` en ajoutant le fichier dans `plugins/` -1. NodeJS > ^14.X -2. Vscode ou Vscodium -3. Docker +Plus d'informations sur l'extension `deadlock-coding` dans ce [README](deadlock-plugins/deadlock-extension/dev/README.md). + +## Construire l'image Deadlock Desktop avec le recorder -Ce projet contient le minimum pour construire une image Docker Theia avec Blueprint (https://theia-ide.org/docs/composing_applications/) +`./build.sh $TAG desktop` diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts index a55ce6842209df1acbf29b9b87f5317c74ad0509..7697f39772277c24768dfdcc0bfbb1efebcd6e54 100644 --- a/deadlock-plugins/deadlock-extension/src/core/controller.ts +++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts @@ -2,7 +2,6 @@ import * as vscode from 'vscode'; import { KEYCLOAK_DEVICE_AUTH_URL, KEYCLOAK_TOKEN_CREATE_URL, KEYCLOAK_USER_INFO_URL } from '../config'; import { log } from '../recorder/utils'; -import { OPEN_QUICK_SETUP_COMMAND } from '../theia/command'; import BriefingView from '../view/briefingView'; import QuickSetupView from '../view/quickSetupView'; import { CHOOSE_MISSION_WORKDIR_COMMAND, CommandHandler, OPEN_URL_IN_BROWSER_COMMAND } from './commandHandler'; diff --git a/deadlock-plugins/deadlock-extension/src/recorder/services/automatic-save.ts b/deadlock-plugins/deadlock-extension/src/recorder/services/automatic-save.ts index 42bcb2a8a9f70b520239fe48d8f3f450fa135fed..154cc0ae4e829df391d8c210acd99d8f7bf75927 100644 --- a/deadlock-plugins/deadlock-extension/src/recorder/services/automatic-save.ts +++ b/deadlock-plugins/deadlock-extension/src/recorder/services/automatic-save.ts @@ -1,4 +1,4 @@ -import { CommitFrom, getIgnorePatternFromIgnoreFile } from './../utils'; +import { CommitFrom, getIgnorePatternFromIgnoreFile } from '../utils'; import FileWatcher from './file-watcher'; import { updateRemote } from '../utils'; import GitMission from '../../core/gitMission';