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 :
-
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.
-
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:
- NodeJS > ^14.X
- Vscode ou Vscodium
- Docker
Setup
Afin d'installer les éléments requis pour le développement, vous pouvez lancer le script ./setup.sh
.
L'image Docker desktop
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.
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. 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 les plugins Vscode :
./build-plugins.sh
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/
Plus d'informations sur l'extension deadlock-coding
dans ce README.
Construire l'image Deadlock Desktop avec le recorder
./build.sh $TAG desktop