From 93466625369792117f63b0eb674aa2b36b3b3179 Mon Sep 17 00:00:00 2001 From: Guillaume WEBER <gweber@takima.fr> Date: Fri, 8 Jul 2022 13:52:01 +0000 Subject: [PATCH] fix: prevent reviewer from pushing code or updating time spent --- .../deadlock-extension/src/core/gitMission.ts | 4 ++++ .../deadlock-extension/src/extension.ts | 9 +++------ .../deadlock-extension/src/recorder/recorder.ts | 17 ++++++++++++----- .../src/recorder/services/automatic-save.ts | 4 ++-- .../src/recorder/utils/gitea.ts | 9 ++++++++- .../deadlock-extension/src/view/CommandTree.ts | 4 ++-- 6 files changed, 31 insertions(+), 16 deletions(-) diff --git a/deadlock-plugins/deadlock-extension/src/core/gitMission.ts b/deadlock-plugins/deadlock-extension/src/core/gitMission.ts index 09017997..6df20bee 100644 --- a/deadlock-plugins/deadlock-extension/src/core/gitMission.ts +++ b/deadlock-plugins/deadlock-extension/src/core/gitMission.ts @@ -53,6 +53,10 @@ export default class GitMission { } } + async forgetSshKeys() { + await exec(`ssh-add -d /tmp/.ssh/id_rsa`); + } + async getAuthor(): Promise<string> { return (await UserMission.getInstance().getGiteaUser()).username; } diff --git a/deadlock-plugins/deadlock-extension/src/extension.ts b/deadlock-plugins/deadlock-extension/src/extension.ts index 29abd15f..01ee2de5 100644 --- a/deadlock-plugins/deadlock-extension/src/extension.ts +++ b/deadlock-plugins/deadlock-extension/src/extension.ts @@ -1,7 +1,7 @@ import { window, ExtensionContext, workspace, commands } from 'vscode'; import Controller from './core/controller'; import isDocker from './core/utils/isdocker'; -import Recorder, { runTimer } from './recorder/recorder'; +import Recorder from './recorder/recorder'; import { extensionError as error } from './recorder/utils/log'; import { DepNodeProvider } from './view/deadlockPanel'; import { CommandTreeProvider } from './view/CommandTree'; @@ -20,10 +20,6 @@ export async function activate(context: ExtensionContext) { if (isDocker()) { commands.executeCommand('setContext', 'deadlock.inContainer', true); window.registerTreeDataProvider('commandTree', new CommandTreeProvider(context)); - } else { - commands.executeCommand('setContext', 'deadlock.inContainer', false); - } - if (isDocker()) { try { Recorder.instance.run(); } catch (e) { @@ -31,6 +27,7 @@ export async function activate(context: ExtensionContext) { error(JSON.stringify(e)); window.showErrorMessage("Le recorder n'a pas pu ĂȘtre lancĂ©"); } - runTimer(); + } else { + commands.executeCommand('setContext', 'deadlock.inContainer', false); } } diff --git a/deadlock-plugins/deadlock-extension/src/recorder/recorder.ts b/deadlock-plugins/deadlock-extension/src/recorder/recorder.ts index a1fe2de1..fd9220d6 100644 --- a/deadlock-plugins/deadlock-extension/src/recorder/recorder.ts +++ b/deadlock-plugins/deadlock-extension/src/recorder/recorder.ts @@ -67,11 +67,18 @@ export default class Recorder { this._gitMission = await new GitMission().init(); await this.setupFromRemoteRepo(this._gitMission); await this.setupProject(this._gitMission); - try { - if (ENABLE_AUTOMATIC_SAVE) new AutomaticSave(MISSION_PATH_IC, this._gitMission); - } catch (e) { - error('Error while setup automatic save'); - error(e); + if (!this.userMission.isReviewing()) { + if (ENABLE_AUTOMATIC_SAVE) { + new AutomaticSave(MISSION_PATH_IC, this._gitMission); + } + try { + runTimer(); + } catch (e) { + error('Error while setup automatic save'); + error(e); + } + } else { + await this.gitMission.forgetSshKeys(); } } catch (e) { error('Cannot setup user repo.'); 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 faa7925b..9fc66c68 100644 --- a/deadlock-plugins/deadlock-extension/src/recorder/services/automatic-save.ts +++ b/deadlock-plugins/deadlock-extension/src/recorder/services/automatic-save.ts @@ -1,6 +1,6 @@ import { getIgnorePatternFromIgnoreFile } from '../utils/gitea'; import FileWatcher from './file-watcher'; -import { commitAndPushOnQueue } from '../utils/gitea'; +import { pushOnCommitQueueIfNotReviewing } from '../utils/gitea'; import GitMission from '../../core/gitMission'; export default class AutomaticSave { @@ -11,7 +11,7 @@ export default class AutomaticSave { async setupAutomaticSave() { const ignoreFilePatterns = await getIgnorePatternFromIgnoreFile('/deadlock/.gitignore'); new FileWatcher(this.folderToWatch, ['**/*'], ignoreFilePatterns, () => { - commitAndPushOnQueue(this.gitMission, 'Auto'); + pushOnCommitQueueIfNotReviewing(this.gitMission, 'Auto'); }); } } diff --git a/deadlock-plugins/deadlock-extension/src/recorder/utils/gitea.ts b/deadlock-plugins/deadlock-extension/src/recorder/utils/gitea.ts index c0b98092..196e081e 100644 --- a/deadlock-plugins/deadlock-extension/src/recorder/utils/gitea.ts +++ b/deadlock-plugins/deadlock-extension/src/recorder/utils/gitea.ts @@ -9,6 +9,7 @@ import { queue } from 'async'; import { extensionWarn, recorderError as error, recorderLog as log } from './log'; import { clearFilesExceptGit, copyGitUserFiles } from './workdir'; import { copyFile } from 'fs/promises'; +import UserMission from '../../core/mission/model/userMission'; const { readFile } = promises; @@ -16,7 +17,7 @@ const gitQueue = queue(async (task: CallableFunction) => { await task(); }, 1); -export async function commitAndPushOnQueue(gitMission: GitMission, from: 'Run' | 'Auto' | 'HttpServer') { +async function pushOnCommitQueue(gitMission: GitMission, from: 'Run' | 'Auto' | 'HttpServer') { if (from === 'Run') { gitQueue.push(async () => { await mergeMaster(gitMission); @@ -28,6 +29,12 @@ export async function commitAndPushOnQueue(gitMission: GitMission, from: 'Run' | } } +export async function pushOnCommitQueueIfNotReviewing(gitMission: GitMission, from: 'Run' | 'Auto' | 'HttpServer') { + if (!UserMission.getInstance().isReviewing()) { + await pushOnCommitQueue(gitMission, from); + } +} + async function commitAndPushCode(gitMission: GitMission) { try { await gitMission.checkout('live'); diff --git a/deadlock-plugins/deadlock-extension/src/view/CommandTree.ts b/deadlock-plugins/deadlock-extension/src/view/CommandTree.ts index 78640e78..cdb024f0 100644 --- a/deadlock-plugins/deadlock-extension/src/view/CommandTree.ts +++ b/deadlock-plugins/deadlock-extension/src/view/CommandTree.ts @@ -3,7 +3,7 @@ import Mission, { MissionCommand } from '../model/mission'; import { parse } from 'yaml'; import { readFileSync } from 'fs'; import { commands, ExtensionContext, ThemeColor, ThemeIcon, TreeDataProvider, TreeItem, window } from 'vscode'; -import { commitAndPushOnQueue } from '../recorder/utils/gitea'; +import { pushOnCommitQueueIfNotReviewing } from '../recorder/utils/gitea'; import Recorder from '../recorder/recorder'; export class CommandTreeProvider implements TreeDataProvider<CommandItem> { @@ -73,7 +73,7 @@ class CommandItem extends TreeItem { terminal.sendText(this.missionCommand.command); terminal.show(); if (this.missionCommand.type === 'submit' || this.missionCommand.type === 'run') { - commitAndPushOnQueue(Recorder.instance.gitMission, 'Run'); + pushOnCommitQueueIfNotReviewing(Recorder.instance.gitMission, 'Run'); } } } -- GitLab