Skip to content
Snippets Groups Projects
Commit 6d677cdd authored by Christian ZHENG's avatar Christian ZHENG
Browse files

feat(devcontainer): Open mission inside container on xdg-open link

parent e0c8a6d0
Branches feat-local-dev
Tags
3 merge requests!14feat: added mounted, .bashrc, .zshrc, added tests, added keycloak tests,!8feat(extension): login, open in devcontainer, automaticly save code, open briefing, publish extension,!3feat: devcontainer support
import * as vscode from 'vscode';
import { KEYCLOAK_DEVICE_AUTH_URL, KEYCLOAK_TOKEN_CREATE_URL, KEYCLOAK_USER_INFO_URL } from '../config';
import { copyProjectSources, log } from '../recorder/utils';
import {
KEYCLOAK_DEVICE_AUTH_URL,
KEYCLOAK_TOKEN_CREATE_URL,
KEYCLOAK_USER_INFO_URL,
REGISTRY_MISSION_URL,
} from '../config';
import { log } from '../recorder/utils';
import { OPEN_GETTING_STARTED_COMMAND } from '../theia/command';
import BriefingView from '../view/briefingView';
import GettingStartedView from '../view/gettingStartedView';
import { CHOOSE_MISSION_WORKDIR_COMMAND, CommandHandler, OPEN_URL_IN_BROWSER_COMMAND } from './commandHandler';
import ExtensionStore from './extensionStore';
import KeycloakOAuth2DeviceFlowConnection from './keycloakOAuth2DeviceFlowConnection';
import Mission from './mission';
export default class Controller {
public connection: KeycloakOAuth2DeviceFlowConnection;
......@@ -37,7 +43,7 @@ export default class Controller {
switch (action) {
case 'open-challenge':
that.launchMission(queryParams.get('missionId'));
that.launchMission(queryParams.get('missionId'), queryParams.get('missionVersion'));
break;
default:
......@@ -87,8 +93,8 @@ export default class Controller {
vscode.commands.executeCommand(OPEN_URL_IN_BROWSER_COMMAND.cmd, vscode.Uri.parse(url));
}
public async launchMission(missionId: string | null) {
if (missionId) {
public async launchMission(missionId: string | null, missionVersion: string | null) {
if (missionId && missionVersion) {
vscode.window.showInformationMessage(`vous lancez la mission ${missionId}`);
const hadMissionWorkdir = this.extensionStore.getMissionWorkdir() !== undefined;
if (!hadMissionWorkdir) {
......@@ -103,16 +109,19 @@ export default class Controller {
} else {
vscode.window.showInformationMessage('Déjà connecté: session récupérée');
}
await copyProjectSources(
'Documents/deadlock-challenges/resources/code_desktop_exemple',
this.extensionStore.getMissionWorkdir()!,
).catch((e) => {
log(e);
// TODO Should I fetch GET api/missions/{missionId} one day instead of passing necessary parameters in vscode xdg-open link ?
const mission = new Mission({
registryBaseURL: REGISTRY_MISSION_URL,
missionId: missionId,
missionVersion: missionVersion,
});
await vscode.commands.executeCommand(
'remote-containers.openFolder',
vscode.Uri.file(this.extensionStore.getMissionWorkdir()!),
vscode.window.showInformationMessage(
'opening inside folder ' + this.extensionStore.getMissionWorkdir()! + '/' + missionId,
);
await mission.setup({});
await mission.openEditorInFolder();
vscode.commands.executeCommand(OPEN_GETTING_STARTED_COMMAND.cmd);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment