-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
71 lines (60 loc) · 2.75 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { chartsUtils } from './src/charts';
import { config } from './src/config';
import { fsUtils } from './src/fs';
import { htmlUtils } from './src/html';
import { inputUtils } from './src/input';
import { interviewUtils } from './src/interview';
import { questionsUtils } from './src/questions';
import { englishEvaluationUtils, resultUtils } from './src/result';
import { validationUtils } from './src/validation';
import type { InterviewQuestions } from './src/html';
const validateDatabaseArg = process.argv.includes('--validateDatabase');
const generateQuestionsArg = process.argv.includes('--generateQuestions');
const generateInterviewPDFArg = process.argv.includes('--generateInterviewPDF');
const generateResultPDFArg = process.argv.includes('--generateResultPDF');
const interviewQuestions: InterviewQuestions = htmlUtils.parseDatabase();
const validateDatabase = async (): Promise<void> => {
if (!validationUtils.validateInterviewQuestions(interviewQuestions)) {
console.log(`Questions are not valid.
See ${fsUtils.getOutputDirectory()}/${config.files.interview.notValidQuestionsFilename} for more details.`);
}
};
const generateQuestions = async (): Promise<void> => {
try {
if (!validationUtils.validateInterviewQuestions(interviewQuestions)) return;
await inputUtils.generateInput();
fsUtils.createOutputsDirectory();
fsUtils.createOutputDirectory();
questionsUtils.generateQuestions(interviewQuestions);
} catch (error) {
console.log(error);
}
};
const generateInterviewPDF = async (): Promise<void> => {
try {
const parsedQuestions = interviewUtils.parseQuestions(interviewQuestions);
interviewUtils.generateInterviewPDF(parsedQuestions);
interviewUtils.generateResultDraft(parsedQuestions);
interviewUtils.generateEnglishDraft();
interviewUtils.generateResultNotesDraft();
} catch (error) {
console.log(error);
}
};
const generateResultPDF = async (): Promise<void> => {
try {
const parsedResultDraft = resultUtils.parseResultDraft();
const parsedResultNotesDraft = resultUtils.parseResultNotesDraft();
const parsedEnglishDraft = resultUtils.parseEnglishDraft();
const englishLevel = englishEvaluationUtils.evaluateEnglishLevel(parsedEnglishDraft);
await chartsUtils.buildRadarChart(parsedResultDraft, 'Topics', config.files.result.topicsChartFilename);
await chartsUtils.buildRadarChart(parsedEnglishDraft, 'English', config.files.result.englishChartFilename);
resultUtils.generateResultPDF(parsedResultNotesDraft, englishLevel);
} catch (error) {
console.log(error);
}
};
if (validateDatabaseArg) validateDatabase();
if (generateQuestionsArg) generateQuestions();
if (generateInterviewPDFArg) generateInterviewPDF();
if (generateResultPDFArg) generateResultPDF();