Skip to content
Snippets Groups Projects
Commit 0fedeca2 authored by Lansana DIOMANDE's avatar Lansana DIOMANDE Committed by Guillaume WEBER
Browse files

refactor: improve recorder

parent a5a10430
Branches
No related tags found
2 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
import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'; import axios, { AxiosInstance } from 'axios';
import { API_QUERY_REFERER, API_URL } from '../config'; import { API_QUERY_REFERER, API_URL } from '../config';
import { GiteaPublicProperties } from '../model/giteaPublicProperties.model'; import { GiteaPublicProperties } from '../model/giteaPublicProperties.model';
import { SshKeyPair } from '../model/sshKeyPair.model'; import { SshKeyPair } from '../model/sshKeyPair.model';
......
...@@ -49,7 +49,7 @@ export default class GitMission { ...@@ -49,7 +49,7 @@ export default class GitMission {
log('Setup ssh agent'); log('Setup ssh agent');
await this.setupSshAgent(); await this.setupSshAgent();
console.log('Init Git mission..'); log('Init Git mission..');
const remote = await this.readRemote(); const remote = await this.readRemote();
......
import { Branch } from './../core/gitMission'; import { Branch } from '../core/gitMission';
import { ENABLE_AUTOMATIC_SAVE } from './../config'; import { ENABLE_AUTOMATIC_SAVE } from '../config';
import CommandRecorder from './command-recorder'; import CommandRecorder from './command-recorder';
import GitMission from '../core/gitMission'; import GitMission from '../core/gitMission';
import UserConfigNode from './userConfigNode'; import UserConfigNode from './userConfigNode';
...@@ -63,10 +63,7 @@ export default class Recorder { ...@@ -63,10 +63,7 @@ export default class Recorder {
log('Init GitMission'); log('Init GitMission');
gitMission = await new GitMission(userConfig).init(); gitMission = await new GitMission(userConfig).init();
if (ENABLE_RECORDER_HTTP_SERVER) new HttpServer(gitMission);
await this.setupFromRemoteRepo(gitMission); await this.setupFromRemoteRepo(gitMission);
if (ENABLE_AUTOMATIC_SAVE) new AutomaticSave(PROJECT_DEADLOCK_DESKTOP_PATH, gitMission);
} catch (e) { } catch (e) {
error('Cannot setup user repo.'); error('Cannot setup user repo.');
error(e); error(e);
...@@ -77,6 +74,20 @@ export default class Recorder { ...@@ -77,6 +74,20 @@ export default class Recorder {
error('Error while setup project sources'); error('Error while setup project sources');
error(e); 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);
}
} }
} }
......
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);
}
})();
...@@ -11,13 +11,11 @@ export default class FileWatcher { ...@@ -11,13 +11,11 @@ export default class FileWatcher {
} }
setupWatcher() { setupWatcher() {
// Without timeout, chokidar watch when file is init
setTimeout(() => {
const watcher = chokidar.watch(this.watchFilePatterns, { const watcher = chokidar.watch(this.watchFilePatterns, {
cwd: this.folderToWatch, cwd: this.folderToWatch,
ignored: this.ignoreFilePatterns, ignored: this.ignoreFilePatterns,
ignoreInitial: true,
}); });
watcher.on('change', this.onFilesChangeAction); watcher.on('change', this.onFilesChangeAction);
}, 1000);
} }
} }
...@@ -138,7 +138,7 @@ async function commitAndPushCode(gitMission: GitMission) { ...@@ -138,7 +138,7 @@ async function commitAndPushCode(gitMission: GitMission) {
await gitMission.commit(currentDate); await gitMission.commit(currentDate);
await gitMission.push(); await gitMission.push();
log('Commit & push done.'); log('Commit & push done.');
} catch (e) { } catch (e: any) {
error(`[${e.status}] cannot commitAndPush code: ${e.stderr}`); error(`[${e.status}] cannot commitAndPush code: ${e.stderr}`);
error(e.message); error(e.message);
throw new Error(e); throw new Error(e);
...@@ -157,7 +157,7 @@ async function mergeMaster(gitMission: GitMission) { ...@@ -157,7 +157,7 @@ async function mergeMaster(gitMission: GitMission) {
await gitMission.push(); await gitMission.push();
log('Merge to master done'); log('Merge to master done');
await gitMission.checkout(Branch.LIVE); await gitMission.checkout(Branch.LIVE);
} catch (e) { } catch (e: any) {
error(`[${e.status}] cannot commitAndPush code: ${e.stderr}`); error(`[${e.status}] cannot commitAndPush code: ${e.stderr}`);
error(e.message); error(e.message);
throw new Error(e); throw new Error(e);
......
...@@ -24,7 +24,7 @@ else ...@@ -24,7 +24,7 @@ else
fi fi
su deadlock -c "python setup_trace.py" su deadlock -c "sudo python /setup_trace.py"
rm setup_trace.py rm setup_trace.py
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment