@tremho/mist-lift 1.0.2-pre-release.4 → 1.0.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/README.md +12 -0
- package/build/commands/actions/initQuestions.js +24 -22
- package/build/commands/actions/initQuestions.js.map +1 -1
- package/build/commands/actions/setupPackageJson.js +4 -4
- package/build/commands/actions/setupPackageJson.js.map +1 -1
- package/build/commands/build.js +31 -25
- package/build/commands/build.js.map +1 -1
- package/build/commands/builtin/ApiDocMaker.js +60 -23
- package/build/commands/builtin/ApiDocMaker.js.map +1 -1
- package/build/commands/builtin/BuiltInHandler.js +6 -6
- package/build/commands/builtin/BuiltInHandler.js.map +1 -1
- package/build/commands/builtin/DeployBuiltInZip.js +4 -4
- package/build/commands/builtin/DeployBuiltInZip.js.map +1 -1
- package/build/commands/builtin/StageWebrootZip.js +1 -0
- package/build/commands/builtin/StageWebrootZip.js.map +1 -1
- package/build/commands/create.js +10 -11
- package/build/commands/create.js.map +1 -1
- package/build/commands/deploy.js +38 -42
- package/build/commands/deploy.js.map +1 -1
- package/build/commands/doctor.js +38 -37
- package/build/commands/doctor.js.map +1 -1
- package/build/commands/help.js +93 -93
- package/build/commands/help.js.map +1 -1
- package/build/commands/init.js +7 -7
- package/build/commands/init.js.map +1 -1
- package/build/commands/package.js +50 -51
- package/build/commands/package.js.map +1 -1
- package/build/commands/publish.js +98 -102
- package/build/commands/publish.js.map +1 -1
- package/build/commands/settings.js +19 -18
- package/build/commands/settings.js.map +1 -1
- package/build/commands/start.js +4 -4
- package/build/commands/start.js.map +1 -1
- package/build/commands/test.js +3 -3
- package/build/commands/test.js.map +1 -1
- package/build/commands/user.js +1 -1
- package/build/commands/user.js.map +1 -1
- package/build/expressRoutes/all.js +27 -26
- package/build/expressRoutes/all.js.map +1 -1
- package/build/expressRoutes/api.js +9 -7
- package/build/expressRoutes/api.js.map +1 -1
- package/build/expressRoutes/functionBinder.js +38 -36
- package/build/expressRoutes/functionBinder.js.map +1 -1
- package/build/lib/CaseUtils.js +2 -2
- package/build/lib/CaseUtils.js.map +1 -1
- package/build/lib/DirectoryUtils.js +4 -3
- package/build/lib/DirectoryUtils.js.map +1 -1
- package/build/lib/LiftConfig.js +18 -20
- package/build/lib/LiftConfig.js.map +1 -1
- package/build/lib/LiftVersion.js +17 -12
- package/build/lib/LiftVersion.js.map +1 -1
- package/build/lib/Tests/fileCompare.test.js +11 -10
- package/build/lib/Tests/fileCompare.test.js.map +1 -1
- package/build/lib/askQuestion.js +3 -2
- package/build/lib/askQuestion.js.map +1 -1
- package/build/lib/executeCommand.js +46 -33
- package/build/lib/executeCommand.js.map +1 -1
- package/build/lib/fileCompare.js +9 -8
- package/build/lib/fileCompare.js.map +1 -1
- package/build/lib/openAPI/ApiBuildCollector.js +9 -8
- package/build/lib/openAPI/ApiBuildCollector.js.map +1 -1
- package/build/lib/openAPI/WebrootFileSupport.js +4 -3
- package/build/lib/openAPI/WebrootFileSupport.js.map +1 -1
- package/build/lib/openAPI/openApiConstruction.js +62 -61
- package/build/lib/openAPI/openApiConstruction.js.map +1 -1
- package/build/lib/pathResolve.js +4 -4
- package/build/lib/pathResolve.js.map +1 -1
- package/build/lib/utils.js +5 -4
- package/build/lib/utils.js.map +1 -1
- package/build/lift.js +14 -15
- package/build/lift.js.map +1 -1
- package/package.json +2 -1
- package/src/commands/actions/initQuestions.ts +112 -112
- package/src/commands/actions/setupPackageJson.ts +21 -25
- package/src/commands/build.ts +143 -146
- package/src/commands/builtin/ApiDocMaker.ts +86 -54
- package/src/commands/builtin/BuiltInHandler.ts +31 -35
- package/src/commands/builtin/DeployBuiltInZip.ts +15 -17
- package/src/commands/builtin/StageWebrootZip.ts +29 -32
- package/src/commands/create.ts +40 -47
- package/src/commands/deploy.ts +139 -152
- package/src/commands/doctor.ts +86 -82
- package/src/commands/help.ts +152 -153
- package/src/commands/init.ts +37 -39
- package/src/commands/package.ts +201 -204
- package/src/commands/publish.ts +277 -312
- package/src/commands/settings.ts +67 -70
- package/src/commands/start.ts +32 -37
- package/src/commands/test.ts +15 -16
- package/src/commands/user.ts +1 -1
- package/src/expressRoutes/all.ts +73 -78
- package/src/expressRoutes/api.ts +14 -16
- package/src/expressRoutes/functionBinder.ts +144 -151
- package/src/lib/CaseUtils.ts +49 -54
- package/src/lib/DirectoryUtils.ts +25 -27
- package/src/lib/LiftConfig.ts +46 -54
- package/src/lib/LiftVersion.ts +69 -77
- package/src/lib/Tests/fileCompare.test.ts +27 -26
- package/src/lib/askQuestion.ts +12 -13
- package/src/lib/executeCommand.ts +40 -33
- package/src/lib/fileCompare.ts +46 -37
- package/src/lib/openAPI/ApiBuildCollector.ts +36 -36
- package/src/lib/openAPI/WebrootFileSupport.ts +15 -17
- package/src/lib/openAPI/openApiConstruction.ts +169 -175
- package/src/lib/pathResolve.ts +22 -28
- package/src/lib/utils.ts +31 -33
- package/src/lift.ts +68 -67
|
@@ -1,70 +1,102 @@
|
|
|
1
|
-
import {gatherFunctionDefinitions} from
|
|
2
|
-
import {buildOpenApi} from
|
|
3
|
-
import {
|
|
4
|
-
import {GetWebrootServePaths} from "../../lib/openAPI/WebrootFileSupport";
|
|
1
|
+
import { gatherFunctionDefinitions } from '../../lib/openAPI/ApiBuildCollector'
|
|
2
|
+
import { buildOpenApi } from '../../lib/openAPI/openApiConstruction'
|
|
3
|
+
import { GetWebrootServePaths } from '../../lib/openAPI/WebrootFileSupport'
|
|
5
4
|
|
|
6
5
|
export async function MakePublicApiDoc
|
|
7
6
|
(
|
|
8
|
-
):Promise<Uint8Array>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return await buildOpenApi(defs)
|
|
7
|
+
): Promise<Uint8Array> {
|
|
8
|
+
const defs = gatherFunctionDefinitions()
|
|
9
|
+
return await buildOpenApi(defs)
|
|
12
10
|
}
|
|
13
11
|
|
|
14
12
|
export async function MakeBuiltinApiDoc
|
|
15
13
|
(
|
|
16
|
-
|
|
14
|
+
yamlFile: string
|
|
17
15
|
|
|
18
|
-
):Promise<Uint8Array>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return await buildOpenApi(defs, false, yamlFile) //, true)
|
|
16
|
+
): Promise<Uint8Array> {
|
|
17
|
+
const defs = gatherFunctionDefinitions()
|
|
18
|
+
addBuiltInDefinitions(defs)
|
|
19
|
+
return await buildOpenApi(defs, false, yamlFile) //, true)
|
|
23
20
|
}
|
|
24
21
|
|
|
25
|
-
export function addBuiltInDefinitions(defs:any[])
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
defs.push(webrootDef);
|
|
22
|
+
export function addBuiltInDefinitions (defs: any[]): void {
|
|
23
|
+
// console.warn("NOT ADDING ANY BUILTIN API INTEGRATIONS")
|
|
24
|
+
// console.log("ADDING apiDef");
|
|
25
|
+
defs.push(apiDef)
|
|
26
|
+
// console.log("ADDING webrootDef");
|
|
27
|
+
defs.push(webrootDef)
|
|
32
28
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
defs.push(fileserve);
|
|
50
|
-
}
|
|
29
|
+
// console.warn("Adding webroot literals");
|
|
30
|
+
// do just /docs and see how that goes
|
|
31
|
+
const fsdef = Object.assign({}, fileServeDef) // copy
|
|
32
|
+
fsdef.name = 'fileserve_docs'
|
|
33
|
+
fsdef.pathMap = '/docs/{path}'
|
|
34
|
+
defs.push(fsdef)
|
|
35
|
+
const roots = GetWebrootServePaths()
|
|
36
|
+
// console.log("roots", roots)
|
|
37
|
+
for (const root of roots) {
|
|
38
|
+
if (root !== '') {
|
|
39
|
+
let rootName = root
|
|
40
|
+
while (rootName.includes('/')) rootName = rootName.replace('/', '').toLowerCase().trim()
|
|
41
|
+
const fileserve = Object.assign({}, fileServeDef) // copy
|
|
42
|
+
fileserve.name = 'fileserve_' + rootName
|
|
43
|
+
fileserve.pathMap = `${root}/{path}`
|
|
44
|
+
defs.push(fileserve)
|
|
51
45
|
}
|
|
46
|
+
}
|
|
52
47
|
}
|
|
53
48
|
|
|
54
|
-
const apiDef = {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
49
|
+
const apiDef = {
|
|
50
|
+
name: 'API',
|
|
51
|
+
description: '',
|
|
52
|
+
version: '1.0.0',
|
|
53
|
+
pathMap: '/api',
|
|
54
|
+
allowedMethods: 'GET',
|
|
55
|
+
logLevel: 'Debug',
|
|
56
|
+
sessionRequired: false,
|
|
57
|
+
userRequired: false,
|
|
58
|
+
schemas: {},
|
|
59
|
+
parameters: [],
|
|
60
|
+
returns: {
|
|
61
|
+
200: { type: 'empty', description: 'successful response.' },
|
|
62
|
+
500: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Error details'
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
58
68
|
|
|
59
|
-
const fileServeDef = {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
69
|
+
const fileServeDef = {
|
|
70
|
+
name: 'FileServe',
|
|
71
|
+
description: 'file service',
|
|
72
|
+
version:
|
|
73
|
+
'1.0.0',
|
|
74
|
+
pathMap: '',
|
|
75
|
+
allowedMethods: 'GET',
|
|
76
|
+
logLevel: 'Debug',
|
|
77
|
+
sessionRequired: false,
|
|
78
|
+
userRequired: false,
|
|
79
|
+
schemas: {},
|
|
80
|
+
parameters: [{ name: 'path', in: 'path' }],
|
|
81
|
+
returns: {
|
|
82
|
+
200: { type: 'empty', description: 'successful response.' },
|
|
83
|
+
500: { type: 'string', description: 'Error details' }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
65
86
|
|
|
66
|
-
const webrootDef = {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
87
|
+
const webrootDef = {
|
|
88
|
+
name: 'Webroot',
|
|
89
|
+
description: 'Serves files from the webroot /',
|
|
90
|
+
version: '1.0.0',
|
|
91
|
+
pathMap: '/{path}',
|
|
92
|
+
allowedMethods: 'get',
|
|
93
|
+
logLevel: 'Debug',
|
|
94
|
+
sessionRequired: false,
|
|
95
|
+
userRequired: false,
|
|
96
|
+
schemas: {},
|
|
97
|
+
parameters: [{ name: 'path', in: 'path' }],
|
|
98
|
+
returns: {
|
|
99
|
+
200: { type: 'empty', description: 'successful response.' },
|
|
100
|
+
500: { type: 'string', description: 'Error details' }
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -1,51 +1,47 @@
|
|
|
1
|
-
import {StageWebrootZip} from
|
|
2
|
-
import {DeployBuiltInZip} from
|
|
3
|
-
import {GetWebrootServePaths} from
|
|
1
|
+
import { StageWebrootZip } from './StageWebrootZip'
|
|
2
|
+
import { DeployBuiltInZip } from './DeployBuiltInZip'
|
|
3
|
+
import { GetWebrootServePaths } from '../../lib/openAPI/WebrootFileSupport'
|
|
4
4
|
|
|
5
5
|
import fs from 'fs'
|
|
6
6
|
import path from 'path'
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
export async function DeployWebrootBuiltIn
|
|
10
9
|
(
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
fs.rmSync(wrZip, {recursive: true});
|
|
10
|
+
): Promise<void> {
|
|
11
|
+
const wrZip = await StageWebrootZip()
|
|
12
|
+
// console.log("Deploy Webroot Builtin from "+wrZip)
|
|
13
|
+
await DeployBuiltInZip('Webroot', wrZip)
|
|
14
|
+
// remove temp zip when done
|
|
15
|
+
fs.rmSync(wrZip, { recursive: true })
|
|
18
16
|
}
|
|
19
17
|
|
|
20
18
|
export async function DeployRootFileserves
|
|
21
19
|
(
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
name = name.replace('/', '');
|
|
35
|
-
}
|
|
36
|
-
all.push(DeployBuiltInZip(name, fileserveZip))
|
|
20
|
+
): Promise<void> {
|
|
21
|
+
// console.log("Deploy Root Fileserves")
|
|
22
|
+
// Get root paths
|
|
23
|
+
const roots = GetWebrootServePaths()
|
|
24
|
+
// for each, deploy under the name of each
|
|
25
|
+
const fileserveZip = path.join(__dirname, 'prebuilt-zips', 'FileServe.zip')
|
|
26
|
+
const all: Array<Promise<any>> = []
|
|
27
|
+
for (let root of roots) {
|
|
28
|
+
root = root.trim()
|
|
29
|
+
let name = 'fileserve_' + root
|
|
30
|
+
while (name.includes('/')) {
|
|
31
|
+
name = name.replace('/', '')
|
|
37
32
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
all.push(DeployBuiltInZip(name, fileserveZip))
|
|
34
|
+
}
|
|
35
|
+
// console.log('wait all');
|
|
36
|
+
await Promise.all(all)
|
|
37
|
+
// console.log('all complete');
|
|
41
38
|
}
|
|
42
39
|
|
|
43
40
|
export async function DeployApiBuiltin
|
|
44
41
|
(
|
|
45
|
-
):Promise<any>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
await DeployBuiltInZip("api", apiZip)
|
|
42
|
+
): Promise<any> {
|
|
43
|
+
console.log('Deploy API Builtin')
|
|
44
|
+
// get the prebuilt zip location
|
|
45
|
+
const apiZip = path.join(__dirname, 'prebuilt-zips', 'API.zip')
|
|
46
|
+
await DeployBuiltInZip('api', apiZip)
|
|
51
47
|
}
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
|
|
2
2
|
import * as path from 'path'
|
|
3
|
-
import {deployPackage} from '../deploy'
|
|
3
|
+
import { deployPackage } from '../deploy'
|
|
4
4
|
|
|
5
5
|
export async function DeployBuiltInZip
|
|
6
6
|
(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
await deployPackage(name, zipPath);
|
|
7
|
+
name: string,
|
|
8
|
+
zipPath: string
|
|
9
|
+
): Promise<void> {
|
|
10
|
+
// console.log(">> Deploying "+name)
|
|
11
|
+
await deployPackage(name, zipPath)
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
export async function DeployFileserve
|
|
16
15
|
(
|
|
17
|
-
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
16
|
+
root: string
|
|
17
|
+
): Promise<void> {
|
|
18
|
+
// rootName is without slash
|
|
19
|
+
if (root !== '') {
|
|
20
|
+
const rootName = root.replace('/', '')
|
|
21
|
+
const name = 'fileserve_' + rootName
|
|
22
|
+
const zipPath = path.join(__dirname, 'prebuilt-zips', 'FileServe.zip')
|
|
23
|
+
await DeployBuiltInZip(name, zipPath)
|
|
24
|
+
}
|
|
27
25
|
}
|
|
@@ -1,39 +1,36 @@
|
|
|
1
|
-
import {MakePublicApiDoc} from
|
|
1
|
+
import { MakePublicApiDoc } from './ApiDocMaker'
|
|
2
2
|
|
|
3
|
-
import * as ac from "ansi-colors"
|
|
4
3
|
import * as path from 'path'
|
|
5
4
|
import * as fs from 'fs'
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {FolderToZip, UnzipToFolder} from "../../lib/utils";
|
|
5
|
+
import { resolvePaths } from '../../lib/pathResolve'
|
|
6
|
+
import { recurseDirectory } from '../../lib/DirectoryUtils'
|
|
7
|
+
import { FolderToZip, UnzipToFolder } from '../../lib/utils'
|
|
10
8
|
|
|
11
9
|
export async function StageWebrootZip
|
|
12
10
|
(
|
|
13
|
-
):Promise<string>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
11
|
+
): Promise<string> {
|
|
12
|
+
// console.log(">> staging webroot to zip")
|
|
13
|
+
const projectPaths = resolvePaths()
|
|
14
|
+
// make a public yaml
|
|
15
|
+
await MakePublicApiDoc() // writes apidoc.yaml to docs
|
|
16
|
+
const builtinPath = path.join(__dirname, 'prebuilt-zips', 'Webroot.zip')
|
|
17
|
+
const exdir = path.join(projectPaths.basePath, '.package_temp')
|
|
18
|
+
await UnzipToFolder(builtinPath, exdir)
|
|
19
|
+
const webroot = path.join(projectPaths.basePath, 'webroot')
|
|
20
|
+
const packageTemp = path.join(projectPaths.basePath, '.package_temp')
|
|
21
|
+
const zipFilesPath = path.join(packageTemp, 'Webroot', '__files__')
|
|
22
|
+
await recurseDirectory(webroot, (filepath, stats) => {
|
|
23
|
+
const relPath = filepath.substring(webroot.length)
|
|
24
|
+
if (stats.isDirectory()) {
|
|
25
|
+
fs.mkdirSync(zipFilesPath + relPath, { recursive: true })
|
|
26
|
+
} else {
|
|
27
|
+
fs.copyFileSync(filepath, zipFilesPath + relPath)
|
|
28
|
+
}
|
|
29
|
+
return false
|
|
30
|
+
})
|
|
31
|
+
const webrootZip = path.join(projectPaths.basePath, 'a.zip')
|
|
34
32
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
33
|
+
await FolderToZip(path.join(packageTemp, 'Webroot'), webrootZip)
|
|
34
|
+
// return path to this zip
|
|
35
|
+
return webrootZip
|
|
36
|
+
}
|
package/src/commands/create.ts
CHANGED
|
@@ -2,54 +2,47 @@
|
|
|
2
2
|
|
|
3
3
|
import * as fs from 'fs'
|
|
4
4
|
import * as path from 'path'
|
|
5
|
-
import * as ac from
|
|
6
|
-
import {resolvePaths} from
|
|
7
|
-
import {camelCase
|
|
8
|
-
import {helpCreate} from
|
|
9
|
-
|
|
5
|
+
import * as ac from 'ansi-colors'
|
|
6
|
+
import { resolvePaths } from '../lib/pathResolve'
|
|
7
|
+
import { camelCase } from '../lib/CaseUtils'
|
|
8
|
+
import { helpCreate } from './help'
|
|
10
9
|
|
|
11
10
|
/// Create command
|
|
12
|
-
export function doCreate(
|
|
13
|
-
|
|
14
|
-
)
|
|
15
|
-
{
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
let localsrc = fs.readFileSync(path.join(dataDir, 'function-local-ts')).toString();
|
|
33
|
-
while (localsrc.indexOf("$$FUNCTION_NAME$$") !== -1) {
|
|
34
|
-
localsrc = localsrc.replace("$$FUNCTION_NAME$$", funcName);
|
|
35
|
-
}
|
|
36
|
-
fs.writeFileSync(path.join(funcPath, 'src', 'local.ts'), localsrc);
|
|
37
|
-
let defsrc = fs.readFileSync(path.join(dataDir, 'function-definition-template')).toString();
|
|
38
|
-
while(defsrc.indexOf("$$FUNCTION_NAME$$") !== -1) {
|
|
39
|
-
defsrc = defsrc.replace("$$FUNCTION_NAME$$", funcName);
|
|
40
|
-
}
|
|
41
|
-
let defpathMap = "/"+funcName.toLowerCase();
|
|
42
|
-
defsrc = defsrc.replace("$$PATHMAP$$", defpathMap)
|
|
43
|
-
fs.writeFileSync(path.join(funcPath, 'src', 'definition.json'), defsrc);
|
|
44
|
-
let mainsrc = fs.readFileSync(path.join(dataDir, 'function-main-ts')).toString();
|
|
45
|
-
while(mainsrc.indexOf("$$TemplateName$$") !== -1) {
|
|
46
|
-
mainsrc = mainsrc.replace("$$TemplateName$$", funcName);
|
|
47
|
-
}
|
|
48
|
-
fs.writeFileSync(path.join(funcPath, 'src', 'main.ts'), mainsrc);
|
|
49
|
-
fs.copyFileSync(path.join(dataDir, 'function-test-template'), path.join(funcPath, testdirname, 'Sanity.test.ts'))
|
|
50
|
-
fs.copyFileSync(path.join(dataDir, 'function-runmain-mjs'), path.join(funcPath, 'runmain.mjs'));
|
|
51
|
-
|
|
11
|
+
export function doCreate (
|
|
12
|
+
funcName?: string // name of function to create
|
|
13
|
+
): void {
|
|
14
|
+
if (funcName === '' || funcName === undefined) {
|
|
15
|
+
helpCreate()
|
|
16
|
+
} else {
|
|
17
|
+
console.log(ac.green.bold('Creating new function named ') + funcName)
|
|
18
|
+
|
|
19
|
+
const projectPaths = resolvePaths()
|
|
20
|
+
const funcPath = path.join(projectPaths.functionPath, funcName)
|
|
21
|
+
if (!fs.existsSync(funcPath)) fs.mkdirSync(funcPath)
|
|
22
|
+
const dataDir = path.join(__dirname, '..', '..', 'templateData')
|
|
23
|
+
|
|
24
|
+
const testdirname = camelCase(funcName) + '-tests'
|
|
25
|
+
if (!fs.existsSync(path.join(funcPath, testdirname))) fs.mkdirSync(path.join(funcPath, testdirname))
|
|
26
|
+
if (!fs.existsSync(path.join(funcPath, 'src'))) fs.mkdirSync(path.join(funcPath, 'src'))
|
|
27
|
+
|
|
28
|
+
let localsrc = fs.readFileSync(path.join(dataDir, 'function-local-ts')).toString()
|
|
29
|
+
while (localsrc.includes('$$FUNCTION_NAME$$')) {
|
|
30
|
+
localsrc = localsrc.replace('$$FUNCTION_NAME$$', funcName)
|
|
52
31
|
}
|
|
53
|
-
|
|
32
|
+
fs.writeFileSync(path.join(funcPath, 'src', 'local.ts'), localsrc)
|
|
33
|
+
let defsrc = fs.readFileSync(path.join(dataDir, 'function-definition-template')).toString()
|
|
34
|
+
while (defsrc.includes('$$FUNCTION_NAME$$')) {
|
|
35
|
+
defsrc = defsrc.replace('$$FUNCTION_NAME$$', funcName)
|
|
36
|
+
}
|
|
37
|
+
const defpathMap = '/' + funcName.toLowerCase()
|
|
38
|
+
defsrc = defsrc.replace('$$PATHMAP$$', defpathMap)
|
|
39
|
+
fs.writeFileSync(path.join(funcPath, 'src', 'definition.json'), defsrc)
|
|
40
|
+
let mainsrc = fs.readFileSync(path.join(dataDir, 'function-main-ts')).toString()
|
|
41
|
+
while (mainsrc.includes('$$TemplateName$$')) {
|
|
42
|
+
mainsrc = mainsrc.replace('$$TemplateName$$', funcName)
|
|
43
|
+
}
|
|
44
|
+
fs.writeFileSync(path.join(funcPath, 'src', 'main.ts'), mainsrc)
|
|
45
|
+
fs.copyFileSync(path.join(dataDir, 'function-test-template'), path.join(funcPath, testdirname, 'Sanity.test.ts'))
|
|
46
|
+
fs.copyFileSync(path.join(dataDir, 'function-runmain-mjs'), path.join(funcPath, 'runmain.mjs'))
|
|
47
|
+
}
|
|
54
48
|
}
|
|
55
|
-
|