From 0fedeca28fbc98fe676fda3c89d594f47c289755 Mon Sep 17 00:00:00 2001 From: Lansana DIOMANDE <ldiomande@takima.fr> Date: Mon, 23 May 2022 11:50:20 +0200 Subject: [PATCH] refactor: improve recorder --- .../src/core/api.service.ts | 2 +- .../deadlock-extension/src/core/gitMission.ts | 2 +- .../deadlock-extension/src/recorder/index.ts | 21 ++++++-- .../src/recorder/preStop.ts | 50 ------------------- .../src/recorder/services/file-watcher.ts | 14 +++--- .../deadlock-extension/src/recorder/utils.ts | 4 +- start.desktop.sh | 2 +- 7 files changed, 27 insertions(+), 68 deletions(-) delete mode 100644 deadlock-plugins/deadlock-extension/src/recorder/preStop.ts diff --git a/deadlock-plugins/deadlock-extension/src/core/api.service.ts b/deadlock-plugins/deadlock-extension/src/core/api.service.ts index 630de2ca..b7321240 100644 --- a/deadlock-plugins/deadlock-extension/src/core/api.service.ts +++ b/deadlock-plugins/deadlock-extension/src/core/api.service.ts @@ -1,4 +1,4 @@ -import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'; +import axios, { AxiosInstance } from 'axios'; import { API_QUERY_REFERER, API_URL } from '../config'; import { GiteaPublicProperties } from '../model/giteaPublicProperties.model'; import { SshKeyPair } from '../model/sshKeyPair.model'; diff --git a/deadlock-plugins/deadlock-extension/src/core/gitMission.ts b/deadlock-plugins/deadlock-extension/src/core/gitMission.ts index 7c704b02..3bed6fd3 100644 --- a/deadlock-plugins/deadlock-extension/src/core/gitMission.ts +++ b/deadlock-plugins/deadlock-extension/src/core/gitMission.ts @@ -49,7 +49,7 @@ export default class GitMission { log('Setup ssh agent'); await this.setupSshAgent(); - console.log('Init Git mission..'); + log('Init Git mission..'); const remote = await this.readRemote(); diff --git a/deadlock-plugins/deadlock-extension/src/recorder/index.ts b/deadlock-plugins/deadlock-extension/src/recorder/index.ts index 157d18f4..0927ecf4 100644 --- a/deadlock-plugins/deadlock-extension/src/recorder/index.ts +++ b/deadlock-plugins/deadlock-extension/src/recorder/index.ts @@ -1,5 +1,5 @@ -import { Branch } from './../core/gitMission'; -import { ENABLE_AUTOMATIC_SAVE } from './../config'; +import { Branch } from '../core/gitMission'; +import { ENABLE_AUTOMATIC_SAVE } from '../config'; import CommandRecorder from './command-recorder'; import GitMission from '../core/gitMission'; import UserConfigNode from './userConfigNode'; @@ -63,10 +63,7 @@ export default class Recorder { log('Init GitMission'); gitMission = await new GitMission(userConfig).init(); - if (ENABLE_RECORDER_HTTP_SERVER) new HttpServer(gitMission); await this.setupFromRemoteRepo(gitMission); - - if (ENABLE_AUTOMATIC_SAVE) new AutomaticSave(PROJECT_DEADLOCK_DESKTOP_PATH, gitMission); } catch (e) { error('Cannot setup user repo.'); error(e); @@ -77,6 +74,20 @@ export default class Recorder { error('Error while setup project sources'); error(e); } + + try { + if (ENABLE_AUTOMATIC_SAVE) new AutomaticSave(PROJECT_DEADLOCK_DESKTOP_PATH, gitMission); + } catch (e) { + error('Error while setup automatic save'); + error(e); + } + + try { + if (ENABLE_RECORDER_HTTP_SERVER) new HttpServer(gitMission); + } catch (e) { + error('Error while setup recorder http server'); + error(e); + } } } diff --git a/deadlock-plugins/deadlock-extension/src/recorder/preStop.ts b/deadlock-plugins/deadlock-extension/src/recorder/preStop.ts deleted file mode 100644 index a6f754c6..00000000 --- a/deadlock-plugins/deadlock-extension/src/recorder/preStop.ts +++ /dev/null @@ -1,50 +0,0 @@ -import UserConfigNode from './userConfigNode'; -import GitMission from '../core/gitMission'; -import { PROJECT_DEADLOCK_DESKTOP_PATH, PROJECT_SRC_PATH } from '../core/config'; - -import { CommitFrom, error, log, updateRemote } from './utils'; - -const util = require('util'); -const exec = util.promisify(require('child_process').exec); - -async function containsDiff() { - try { - // https://man7.org/linux/man-pages/man1/diff.1.html - // Exit status is 0 if inputs are the same, 1 if different, 2 if trouble. - await exec(`diff -qr ${PROJECT_SRC_PATH} ${PROJECT_DEADLOCK_DESKTOP_PATH}`); - // When status code is 0 exec does not fail - } catch (result) { - // when status code is > 0 - if (result.code === 1) { - const stdout = result.stdout; - if (stdout.indexOf('Files ') !== -1 || stdout.indexOf('Only in /home/deadlock/') !== -1) { - // if user created new file or added a directory - return true; - } - } else { - // print error - error(result.stderr); - } - } - return false; -} - -(async () => { - try { - log('Container will die'); - - const userConfig = new UserConfigNode(); - await userConfig.init(); - - if (!userConfig.isProfessor()) { - log('Save user code..'); - const gitMission = await new GitMission(userConfig).init(); - if (await containsDiff()) { - await updateRemote(gitMission, CommitFrom.Auto); - } - } - } catch (e) { - error('Cannot push user code at the end..'); - error(e); - } -})(); diff --git a/deadlock-plugins/deadlock-extension/src/recorder/services/file-watcher.ts b/deadlock-plugins/deadlock-extension/src/recorder/services/file-watcher.ts index b46e7a14..133048b8 100644 --- a/deadlock-plugins/deadlock-extension/src/recorder/services/file-watcher.ts +++ b/deadlock-plugins/deadlock-extension/src/recorder/services/file-watcher.ts @@ -11,13 +11,11 @@ export default class FileWatcher { } setupWatcher() { - // Without timeout, chokidar watch when file is init - setTimeout(() => { - const watcher = chokidar.watch(this.watchFilePatterns, { - cwd: this.folderToWatch, - ignored: this.ignoreFilePatterns, - }); - watcher.on('change', this.onFilesChangeAction); - }, 1000); + const watcher = chokidar.watch(this.watchFilePatterns, { + cwd: this.folderToWatch, + ignored: this.ignoreFilePatterns, + ignoreInitial: true, + }); + watcher.on('change', this.onFilesChangeAction); } } diff --git a/deadlock-plugins/deadlock-extension/src/recorder/utils.ts b/deadlock-plugins/deadlock-extension/src/recorder/utils.ts index aad779a4..f3737fdc 100644 --- a/deadlock-plugins/deadlock-extension/src/recorder/utils.ts +++ b/deadlock-plugins/deadlock-extension/src/recorder/utils.ts @@ -138,7 +138,7 @@ async function commitAndPushCode(gitMission: GitMission) { await gitMission.commit(currentDate); await gitMission.push(); log('Commit & push done.'); - } catch (e) { + } catch (e: any) { error(`[${e.status}] cannot commitAndPush code: ${e.stderr}`); error(e.message); throw new Error(e); @@ -157,7 +157,7 @@ async function mergeMaster(gitMission: GitMission) { await gitMission.push(); log('Merge to master done'); await gitMission.checkout(Branch.LIVE); - } catch (e) { + } catch (e: any) { error(`[${e.status}] cannot commitAndPush code: ${e.stderr}`); error(e.message); throw new Error(e); diff --git a/start.desktop.sh b/start.desktop.sh index c7847a1f..e211e094 100644 --- a/start.desktop.sh +++ b/start.desktop.sh @@ -24,7 +24,7 @@ else fi -su deadlock -c "python setup_trace.py" +su deadlock -c "sudo python /setup_trace.py" rm setup_trace.py -- GitLab