-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathInquire.ts
118 lines (106 loc) · 2.26 KB
/
Inquire.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
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
import Args from './Args';
import { DistinctQuestion, Separator, Answers, prompt } from 'inquirer';
async function Inquire(): Promise<DistinctQuestion> {
const { install, rainbow } = Args.flags;
const authorName: DistinctQuestion = {
type: 'input',
name: 'aName',
message: "Author's Name:",
default: 'Someone',
filter: (answer: string) => answer.trim()
};
enum pTemplate {
Jumpstart = 'Jumpstart',
Static = 'Static',
Rust = 'Rust',
Node = 'Node'
}
const projectTemplate: DistinctQuestion = {
type: 'list',
name: 'projTemplate',
message: 'Project Template?',
default: pTemplate.Node,
choices: [
{ name: 'Jumpstart', value: pTemplate.Jumpstart },
new Separator(),
{ name: 'A Node.js project', value: pTemplate.Node },
{ name: 'Static site biolerplate', value: pTemplate.Static },
{ name: 'Oxidized-C project (Rust)', value: pTemplate.Rust }
]
};
const initilizeGit = {
type: 'confirm',
name: 'gitInit',
message: 'Initilize Git?',
default: true
};
const firstCommit = {
type: 'confirm',
name: 'fstCommit',
message: 'Commit current files?',
default: true,
when: (answers: Answers) => answers.gitInit === true
};
enum pManager {
Npm = 'Npm',
Yarn = 'Yarn',
Cargo = 'Cargo'
}
const packageManager: DistinctQuestion = {
type: 'list',
name: 'pkgManager',
message: 'Package Manager?',
default: pManager.Npm,
choices: [
{ name: 'Npm', value: pManager.Npm },
{ name: 'Yarn', value: pManager.Yarn },
{ name: 'Cargo', value: pManager.Cargo }
],
when: () => install
};
const areYou = {
type: 'confirm',
name: 'areU',
message: 'Do you listen to girl in red?',
default: true,
when: () => rainbow
};
const Confirm = {
type: 'expand',
name: 'confirm',
message: 'Generating proj in currentDir...',
choices: [
{
key: 'y',
name: 'Confirm selection',
value: 'yes'
},
{
key: 'c',
name: 'Change directory',
value: 'change'
},
{
key: 'o',
name: 'Overwrite conflicting files (if any)',
value: 'overwrite'
},
new Separator(),
{
key: 'x',
name: 'Abort',
value: 'abort'
}
]
};
return prompt([
authorName,
projectTemplate,
packageManager,
initilizeGit,
firstCommit,
areYou,
Confirm
]);
}
export default Inquire;