-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
124 lines (114 loc) · 3.79 KB
/
index.js
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
const inquirer = require('inquirer');
const chalk = require('chalk');
const boxen = require('boxen')
const fs = require('fs')
const Manager = require('./lib/Manager');
const Engineer = require('./lib/Engineer');
const Intern = require('./lib/Intern');
const generateHtml = require('./lib/generateHtml')
const managerArray = [];
const engineerArray = [];
const internArray = [];
let id = 0;
let exit = false;
const filename = './team.html'
const questionsStart = [
{
type: "list",
message: "******Select team member's role:*****",
name: "role",
choices: ["Manager", "Engineer", "Intern", "Exit"]
}
]
const baseQuestions = [
{
type: "input",
message: "Enter team member's name:",
name: "name",
validate: function validateName(name) {
return name !== '';
}
},
{
type: "input",
message: "Enter team member's email:",
name: "email",
validate: function validateName(name) {
return name !== '';
}
}
]
const managerQuestion = [
{
type: "input",
message: "Enter Manager's Office Number:",
name: "officeNumber",
validate: function validateName(name) {
return name !== '';
}
}
]
const engineerQuestion = [
{
type: "input",
message: "Enter Engineer's GitHub username:",
name: "github",
validate: function validateName(name) {
return name !== '';
}
}
]
const internQuestion = [
{
type: "input",
message: "Enter Inter's School:",
name: "school",
validate: function validateName(name) {
return name !== '';
}
}
]
const inputStart = async () => {
const { role, ...answers } = await inquirer.prompt(questionsStart);
return role;
};
const collectInputs = async (role) => {
id = id + 1
if (role === 'Manager') {
console.log(boxen(chalk.white.bold(`Adding a new ${role} team member.`), { padding: 1, margin: 1, borderColor: 'green', backgroundColor: 'green' }))
const questions = [...baseQuestions, ...managerQuestion];
member = await inquirer.prompt(questions);
const memberObj = new Manager(member.name, id, member.email, member.officeNumber);
managerArray.push(memberObj);
} else if (role === 'Engineer') {
console.log(boxen(chalk.white.bold(`Adding a new ${role} team member.`), { padding: 1, margin: 1, borderColor: 'green', backgroundColor: 'green' }))
const questions = [...baseQuestions, ...engineerQuestion];
member = await inquirer.prompt(questions)
const memberObj = new Engineer(member.name, id, member.email, member.github);
engineerArray.push(memberObj);
} else if (role === 'Intern') {
console.log(boxen(chalk.white.bold(`Adding a new ${role} team member.`), { padding: 1, margin: 1, borderColor: 'green', backgroundColor: 'green' }))
const questions = [...baseQuestions, ...internQuestion]
member = await inquirer.prompt(questions)
const memberObj = new Intern(member.name, id, member.email, member.school);
internArray.push(memberObj);
} else {
console.log(boxen(chalk.black.bold(`Exiting the Add Memeber CLI`), { padding: 1, margin: 1, borderColor: 'yellow', backgroundColor: 'yellow' }))
return exit = true;
}
}
const writeHtml = (filename, data) => {
fs.writeFile(filename, data, function (err) {
if (err) console.log(err);
console.log(chalk.green("File written successfully"));
});
};
const init = async () => {
while (!exit) {
const role = await inputStart();
await collectInputs(role);
}
const html = await generateHtml(managerArray, engineerArray, internArray);
writeHtml(filename, html);
}
init();