-
Notifications
You must be signed in to change notification settings - Fork 0
/
inquirer.js
136 lines (125 loc) · 3.86 KB
/
inquirer.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
const inquirer = require("inquirer");
const fse = require('fs-extra');
const askQuestions = () => {
const questions = [
{
name: "TYPE",
type: "list",
message: "What do you want to generate?",
choices: ["Fuzz Test"
, "Unit Test"
// , "Formal Verification"
// , "Symbolic Execution"
],
},
{
name: "FRAMEWORK",
type: "list",
message: "What is the framework you want to use?",
choices: ["Foundry"
, "Hardhat","Others"],
},
{
name: "TOOL",
type: "list",
message: "What is the framework you want to use?",
choices: ["Foundry"
, "Echidna","Others"],
},
{
name: "OUTPUTPATH",
type: "input",
message: "Where do you want to generate the file?",
validate: async function (value) {
if (value.length) {
try {
await fse.ensureDir(value);
return true;
} catch (error) {
return "Please enter the path of where you want to generate the file.";
}
} else {
return "Please enter the path of where you want to generate the file.";
}
}
},
{
name: "ISAIBASED",
type: "confirm",
message: "Do you want AI optomized result?",
},
];
return inquirer.prompt(questions);
};
const askQuestionsForAI = () => {
const questions = [ {
name: "AIFRAMEWORK",
type: "list",
message: "What is the framework you want to use?",
choices: ["chatGPT",
"openAI"],
}
];
return inquirer.prompt(questions);
};
const askQuestionsForAINunSupportedSolidityFramework = () => {
const questions = [{
name: "CONTRACTPATH",
type: "input",
message: "where is your solidity contract file?",
validate: async function (value) {
if (value.length) {
try {
await fse.ensureDir(value);
return true;
} catch (error) {
return "Please enter the path of the solidity contract file exists.";
}
} else {
return "Please enter the path of the solidity contract file exists.";
}
}
}
];
return inquirer.prompt(questions);
};
const askQuestionsForChatGPT = () => {
const questions = [
{
name: "GPTKEY",
type: "input",
message: "ChatGPT API key?"
},
];
return inquirer.prompt(questions);
};
const askQuestionsForNonSupportedFramework = () => {
const questions = [
{
name: "INPUTPATH",
type: "input",
message: "Where is your ABI files? ( folder path )",
validate: async function (value) {
if (value.length) {
try {
// get the direcroty of a given file
await fse.ensureDir(value);
return true;
} catch (error) {
console.log(error);
return "Please enter the path of your ABI files.";
}
} else {
return "Please enter the path of your ABI files.";
}
}
}];
return inquirer.prompt(questions);
};
module.exports = {
askQuestions,
askQuestionsForAI,
askQuestionsForChatGPT,
askQuestionsForNonSupportedFramework,
askQuestionsForAINunSupportedSolidityFramework
}