-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
169 lines (166 loc) · 4.38 KB
/
app.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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
// Use the require() function to include inquirer in the app.js file
const inquirer = require('inquirer');
// Recieve the generatePage function from the page-template function
const generatePage = require('./src/page-template');
// include generate-site in the app
const { writeFile, copyFile } = require('./utils/generate-site');
/* Profile Questions */
const promptUser = () => {
return inquirer.prompt([
// pass questions
{
type: 'input',
name: 'name',
message: 'What is your name? (Required)',
// validate that the user hasnt left the name blank
validate: nameInput => {
if (nameInput) {
return true;
} else {
console.log('Please enter your name!');
return false;
}
},
},
{
type: 'input',
name: 'github',
message: 'Enter your GitHub Username (Required)',
// validate that the user hasnt left the github username blank
validate: githubInput => {
if (githubInput) {
return true;
} else {
console.log('Please enter a valid GitHub username!');
}
},
},
{
type: 'confirm',
name: 'confirmAbout',
message:
'Would you like to enter some information about yourself for an "about" section?',
default: true,
},
{
type: 'input',
name: 'about',
message: 'Provide some information about yourself:',
when: ({ confirmAbout }) => {
if (confirmAbout) {
return true;
} else {
return false;
}
},
},
]);
};
/* Project questions */
const promptProject = portfolioData => {
// If there's no 'projects' array property, create one
if (!portfolioData.projects) {
portfolioData.projects = [];
}
console.log(`
=================
Add a New Project
=================
`);
return inquirer
.prompt([
{
type: 'input',
name: 'name',
message: 'What is the name of your project? (Required)',
// validate that the user hasnt left the github username blank
validate: projectName => {
if (projectName) {
return true;
} else {
console.log('Please enter a valid project name!');
}
},
},
{
type: 'input',
name: 'description',
message: 'Provide a description of the project (Required)',
// validate that the user hasnt left the github username blank
validate: projectDescription => {
if (projectDescription) {
return true;
} else {
console.log('Please enter a valid project description!');
}
},
},
{
type: 'checkbox',
name: 'languages',
message: 'What did you build this project with? (Check all that apply)',
choices: [
'JavaScript',
'HTML',
'CSS',
'ES6',
'jQuery',
'Bootstrap',
'Node',
],
},
{
type: 'input',
name: 'link',
message: 'Enter the GitHub link to your project. (Required)',
// validate that the user hasnt left the github username blank
validate: githubLink => {
if (githubLink) {
return true;
} else {
console.log('Please enter a valid GitHub link!');
}
},
},
{
type: 'confirm',
name: 'feature',
message: 'Would you like to feature this project?',
default: false,
},
{
type: 'confirm',
name: 'confirmAddProject',
message: 'Would you like to enter another project',
default: false,
},
])
.then(projectData => {
portfolioData.projects.push(projectData);
// Call the promptProject(portfolioData) function when confirmAddProject evaluates to true
if (projectData.confirmAddProject) {
return promptProject(portfolioData);
} else {
return portfolioData;
}
});
};
// use the user feedback
promptUser()
.then(promptProject)
.then(portfolioData => {
return generatePage(portfolioData);
})
.then(pageHTML => {
return writeFile(pageHTML);
})
.then(writeFileResponse => {
console.log(writeFileResponse);
return copyFile();
})
.then(copyFileResponse => {
console.log(copyFileResponse);
})
.catch(err => {
console.log(err);
});