-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
294 lines (291 loc) · 7.12 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
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
const fs = require('fs');
const inquirer = require('inquirer');
const writeToFile = require('./utils/writeToFile');
const generateMarkdown = require('./utils/generateMarkdown');
// array of questions for user
const questions = [
{
type: 'input',
name: 'title',
message: 'What is the project title? (Required)',
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter a project title!');
return false;
}
}
},
{
type: 'input',
name: 'description',
message: 'Please input a brief description of the project (what, why & how?): (Required)',
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter a project description!');
return false;
}
}
},
{
type: 'confirm',
name: 'confirmTOC',
message: 'Would you like to include a table of contents?'
},
{
type: 'input',
name: 'deployment',
message: 'What is the deployment link (URL)? (Required)',
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter a link to the deployed application!');
return false;
}
}
},
{
type: 'input',
name: 'repo',
message: 'What is the Repo link (Please enter the full URL, such as: https://github.com/ahmadelgamal/README-Gen-Pro)? (Required)',
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter a link to the repository!');
return false;
}
}
},
{
type: 'input',
name: 'features',
message: "What are the main features of the project? (separate with '|') (Required)",
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter the main features of the project!');
return false;
}
}
},
{
type: 'confirm',
name: 'confirmPreReq',
message: 'Would you like to list installation pre-requisites?'
},
{
type: 'input',
name: 'preReq',
message: "Please list the pre-requisites to installation: (separate with '|')"
},
{
type: 'input',
name: 'installation',
message: "Please list the installation steps: (separate with '|') (Required)",
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter the installation steps!');
return false;
}
}
},
{
type: 'confirm',
name: 'confirmCloning',
message: 'Would you like to add a Cloning section?'
},
{
type: 'input',
name: 'cloning',
message: "Please list the cloning steps: (separate with '|')"
},
{
type: 'input',
name: 'usage',
message: "Please list the usage information: (separate with '|') (Required)",
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter the usage information!');
return false;
}
}
},
{
type: 'confirm',
name: 'confirmScreenshot',
message: 'Would you like to include a gif animation or png screenshot of the app?'
},
{
type: 'input',
name: 'screenshot',
message: 'What is the filename of the app gif animation or png screenshot, including the file extension (Place it in ./assets/images/)?',
when: function (userInput) {
return userInput.confirmScreenshot;
}
},
{
type: 'confirm',
name: 'confirmVideo',
message: 'Would you like to include a link to a video demo?'
},
{
type: 'input',
name: 'video',
message: 'Please copy the link to the video url and paste it here:',
when: function (userInput) {
return userInput.confirmVideo;
}
},
{
type: 'input',
name: 'tech',
message: "Please list the technologies used: (separate with '|') (Required)",
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to list the technologies used!');
return false;
}
}
},
{
type: 'confirm',
name: 'confirmCollaborators',
message: 'Would you like to include a Collaborators section?'
},
{
type: 'input',
name: 'collaborators',
message: "Please list the collaborators: (separate with '|')",
when: function (userInput) {
return userInput.confirmCollaborators;
}
},
{
type: 'confirm',
name: 'confirmContributing',
message: 'Would you like to include a Contributing section?'
},
{
type: 'input',
name: 'contributing',
message: "What are the contribution guidelines? (separate with '|')",
when: function (userInput) {
return userInput.confirmContributing;
}
},
{
type: 'confirm',
name: 'confirmTests',
message: 'Would you like to include a Tests section?'
},
{
type: 'input',
name: 'tests',
message: "Please list the test instructions: (separate with '|')",
when: function (userInput) {
return userInput.confirmTests;
}
},
{
type: 'confirm',
name: 'confirmRoadmap',
message: 'Would you like to include a Roadmap section?'
},
{
type: 'input',
name: 'roadmap',
message: "What are the next steps and/or future upgrades? (separate with '|')",
when: function (userInput) {
return userInput.confirmRoadmap;
}
},
{
type: 'input',
name: 'name',
message: 'What is your name? (Required)',
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter your name!');
return false;
}
}
},
{
type: 'input',
name: 'username',
message: 'What is your GitHub username? (Required)',
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter your GitHub username!');
return false;
}
}
},
{
type: 'input',
name: 'email',
message: 'What is your email address? (Required)',
validate: userInput => {
if (userInput) {
return true;
} else {
console.log('You need to enter your email address!');
return false;
}
}
},
{
type: 'confirm',
name: 'confirmLicense',
message: 'Would you like to include a License section?'
},
{
type: 'rawlist',
name: 'license',
message: 'Please select a license:',
choices: ['ISC', 'MIT', 'GNU GPL v3', 'Unlicense'],
when: function (userInput) {
return userInput.confirmLicense;
}
},
{
type: 'rawlist',
name: 'listType',
message: 'Do you prefer numbers or bullets for your lists?',
choices: ['Numbers', 'Bullets'],
default: 'Numbers'
}
];
// function to initialize program
function init() {
inquirer
.prompt(questions)
.then(answers => {
return generateMarkdown(answers);
})
.then(markdownData => {
!fs.existsSync('output') && fs.mkdirSync('output');
return writeToFile('./output/README.md', markdownData);
})
.catch(error => {
console.log(error);
});
}
// function call to initialize program
init();