usf-cli 1.1.3 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +5 -5
- package/README.md +67 -49
- package/ci.sh +60 -0
- package/index.js +186 -186
- package/package.json +30 -30
- package/templates/crud_mongo.js +35 -35
- package/templates/crud_mysql.js +59 -59
- package/templates/crud_postgresql.js +29 -29
- package/templates/crud_redis.js +31 -31
- package/templates/default.js +8 -8
- package/utils/dynamic-runner/index.js +89 -89
- package/utils/function-construct/index.js +120 -120
- package/utils/uploader/index.js +364 -359
- package/.idea/modules.xml +0 -8
- package/.idea/usf-cli.iml +0 -12
- package/.idea/vcs.xml +0 -6
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { fileURLToPath } from "url";
|
|
4
|
-
import { spawn } from "child_process";
|
|
5
|
-
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = path.dirname(__filename);
|
|
8
|
-
|
|
9
|
-
const event = {
|
|
10
|
-
body: "",
|
|
11
|
-
headerParameters: {},
|
|
12
|
-
headers: {},
|
|
13
|
-
httpMethod: "GET",
|
|
14
|
-
isBase64Encoded: false,
|
|
15
|
-
pathParameters: {},
|
|
16
|
-
queryString: {},
|
|
17
|
-
queryStringParameters: {},
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
const repository = {
|
|
21
|
-
crud_mongo: "func-stateless-mongodb-sdk-nodejs",
|
|
22
|
-
crud_mysql: "func-stateless-mysql-sdk-nodejs",
|
|
23
|
-
crud_postgresql: "func-stateless-postgresql-sdk-nodejs",
|
|
24
|
-
crud_redis: "func-stateless-redis-sdk-nodejs",
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const makeFile = async function (dir, folderName, fileName, overwrite=false) {
|
|
28
|
-
const folder = path.join(dir, folderName);
|
|
29
|
-
if (!fs.existsSync(folder)) {
|
|
30
|
-
fs.mkdirSync(folder);
|
|
31
|
-
}
|
|
32
|
-
const file = path.join(folder, fileName);
|
|
33
|
-
if (!overwrite && fs.existsSync(file)) {
|
|
34
|
-
console.log(
|
|
35
|
-
`"./${folderName}/${fileName}" is existed. Running 'vim ./${folderName}/${fileName}' to edit it.\n`
|
|
36
|
-
);
|
|
37
|
-
throw new Error("File is existed");
|
|
38
|
-
}
|
|
39
|
-
return file;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const createFile = async function (dir, folderName, fileName, conent) {
|
|
43
|
-
try {
|
|
44
|
-
const file = await makeFile(dir, folderName, fileName);
|
|
45
|
-
fs.writeFile(file, conent, (err) => {
|
|
46
|
-
if (err) {
|
|
47
|
-
console.error(`Fail to init './${folderName}${fileName}':\n`, err);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
console.log(
|
|
51
|
-
`"./${folderName}${fileName}" has inited. Running 'vim ./${folderName}${fileName}' to edit it.\n`
|
|
52
|
-
);
|
|
53
|
-
});
|
|
54
|
-
} catch (e) {
|
|
55
|
-
console.log(e);
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
const copyFile = async function (dir, folderName, fileName, template) {
|
|
60
|
-
try {
|
|
61
|
-
const file = await makeFile(dir, folderName, fileName);
|
|
62
|
-
const templatePath = path.resolve(
|
|
63
|
-
__dirname,
|
|
64
|
-
`../../templates/${template}.js`
|
|
65
|
-
);
|
|
66
|
-
if (!fs.existsSync(templatePath)) {
|
|
67
|
-
console.log("template is not found");
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
fs.copyFile(templatePath, file, (err) => {
|
|
71
|
-
if (err) {
|
|
72
|
-
console.error(`Fail to init function with template:\n`, err);
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
console.log(
|
|
76
|
-
`"./${folderName}${fileName}" data has inited. Running 'vim ./${folderName}${fileName}' to edit it.\n`
|
|
77
|
-
);
|
|
78
|
-
|
|
79
|
-
// auto install dependency of stateless sdk
|
|
80
|
-
if (repository[template]) {
|
|
81
|
-
spawn("npm", ["install", repository[template]], {
|
|
82
|
-
shell: true,
|
|
83
|
-
stdio: "inherit",
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
} catch (e) {
|
|
88
|
-
console.log(e);
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
const create = async function (dir, functionName, template) {
|
|
93
|
-
template = template || "default";
|
|
94
|
-
copyFile(dir, `${functionName}/`, `index.js`, template);
|
|
95
|
-
createFile(
|
|
96
|
-
dir,
|
|
97
|
-
".uos_test/",
|
|
98
|
-
`${functionName}_event.json`,
|
|
99
|
-
JSON.stringify(event, null, 2)
|
|
100
|
-
);
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const loader = function (filePath) {
|
|
104
|
-
return new Promise((resolve, reject) => {
|
|
105
|
-
try {
|
|
106
|
-
fs.readFile(filePath, "utf8", (err, data) => {
|
|
107
|
-
if (err) {
|
|
108
|
-
resolve(undefined);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
resolve(JSON.parse(data));
|
|
113
|
-
});
|
|
114
|
-
} catch (e) {
|
|
115
|
-
resolve(undefined);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
export { create, loader, makeFile };
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
import { spawn } from "child_process";
|
|
5
|
+
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
|
|
9
|
+
const event = {
|
|
10
|
+
body: "",
|
|
11
|
+
headerParameters: {},
|
|
12
|
+
headers: {},
|
|
13
|
+
httpMethod: "GET",
|
|
14
|
+
isBase64Encoded: false,
|
|
15
|
+
pathParameters: {},
|
|
16
|
+
queryString: {},
|
|
17
|
+
queryStringParameters: {},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const repository = {
|
|
21
|
+
crud_mongo: "func-stateless-mongodb-sdk-nodejs",
|
|
22
|
+
crud_mysql: "func-stateless-mysql-sdk-nodejs",
|
|
23
|
+
crud_postgresql: "func-stateless-postgresql-sdk-nodejs",
|
|
24
|
+
crud_redis: "func-stateless-redis-sdk-nodejs",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const makeFile = async function (dir, folderName, fileName, overwrite=false) {
|
|
28
|
+
const folder = path.join(dir, folderName);
|
|
29
|
+
if (!fs.existsSync(folder)) {
|
|
30
|
+
fs.mkdirSync(folder);
|
|
31
|
+
}
|
|
32
|
+
const file = path.join(folder, fileName);
|
|
33
|
+
if (!overwrite && fs.existsSync(file)) {
|
|
34
|
+
console.log(
|
|
35
|
+
`"./${folderName}/${fileName}" is existed. Running 'vim ./${folderName}/${fileName}' to edit it.\n`
|
|
36
|
+
);
|
|
37
|
+
throw new Error("File is existed");
|
|
38
|
+
}
|
|
39
|
+
return file;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const createFile = async function (dir, folderName, fileName, conent) {
|
|
43
|
+
try {
|
|
44
|
+
const file = await makeFile(dir, folderName, fileName);
|
|
45
|
+
fs.writeFile(file, conent, (err) => {
|
|
46
|
+
if (err) {
|
|
47
|
+
console.error(`Fail to init './${folderName}${fileName}':\n`, err);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
console.log(
|
|
51
|
+
`"./${folderName}${fileName}" has inited. Running 'vim ./${folderName}${fileName}' to edit it.\n`
|
|
52
|
+
);
|
|
53
|
+
});
|
|
54
|
+
} catch (e) {
|
|
55
|
+
console.log(e);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const copyFile = async function (dir, folderName, fileName, template) {
|
|
60
|
+
try {
|
|
61
|
+
const file = await makeFile(dir, folderName, fileName);
|
|
62
|
+
const templatePath = path.resolve(
|
|
63
|
+
__dirname,
|
|
64
|
+
`../../templates/${template}.js`
|
|
65
|
+
);
|
|
66
|
+
if (!fs.existsSync(templatePath)) {
|
|
67
|
+
console.log("template is not found");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
fs.copyFile(templatePath, file, (err) => {
|
|
71
|
+
if (err) {
|
|
72
|
+
console.error(`Fail to init function with template:\n`, err);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
console.log(
|
|
76
|
+
`"./${folderName}${fileName}" data has inited. Running 'vim ./${folderName}${fileName}' to edit it.\n`
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
// auto install dependency of stateless sdk
|
|
80
|
+
if (repository[template]) {
|
|
81
|
+
spawn("npm", ["install", repository[template]], {
|
|
82
|
+
shell: true,
|
|
83
|
+
stdio: "inherit",
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
} catch (e) {
|
|
88
|
+
console.log(e);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const create = async function (dir, functionName, template) {
|
|
93
|
+
template = template || "default";
|
|
94
|
+
copyFile(dir, `${functionName}/`, `index.js`, template);
|
|
95
|
+
createFile(
|
|
96
|
+
dir,
|
|
97
|
+
".uos_test/",
|
|
98
|
+
`${functionName}_event.json`,
|
|
99
|
+
JSON.stringify(event, null, 2)
|
|
100
|
+
);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const loader = function (filePath) {
|
|
104
|
+
return new Promise((resolve, reject) => {
|
|
105
|
+
try {
|
|
106
|
+
fs.readFile(filePath, "utf8", (err, data) => {
|
|
107
|
+
if (err) {
|
|
108
|
+
resolve(undefined);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
resolve(JSON.parse(data));
|
|
113
|
+
});
|
|
114
|
+
} catch (e) {
|
|
115
|
+
resolve(undefined);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
export { create, loader, makeFile };
|