do-functions-cli 1.1.0 → 1.4.0
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 +75 -32
- package/dist/cli.js +5 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +28 -17
- package/dist/commands/create.js.map +1 -1
- package/dist/schemas/createOptions.d.ts +7 -0
- package/dist/schemas/createOptions.d.ts.map +1 -0
- package/dist/schemas/createOptions.js +9 -0
- package/dist/schemas/createOptions.js.map +1 -0
- package/dist/schemas/doFunction.d.ts +1 -10
- package/dist/schemas/doFunction.d.ts.map +1 -1
- package/dist/schemas/doFunction.js +1 -10
- package/dist/schemas/doFunction.js.map +1 -1
- package/dist/schemas/doPackage.d.ts +1 -5
- package/dist/schemas/doPackage.d.ts.map +1 -1
- package/dist/schemas/doPackage.js.map +1 -1
- package/dist/schemas/doProjectYml.d.ts +1 -5
- package/dist/schemas/doProjectYml.d.ts.map +1 -1
- package/dist/schemas/doProjectYml.js.map +1 -1
- package/dist/schemas/functionTemplate.d.ts +14 -0
- package/dist/schemas/functionTemplate.d.ts.map +1 -0
- package/dist/schemas/functionTemplate.js +10 -0
- package/dist/schemas/functionTemplate.js.map +1 -0
- package/dist/services/functionTemplateService.d.ts +21 -0
- package/dist/services/functionTemplateService.d.ts.map +1 -0
- package/dist/services/functionTemplateService.js +39 -0
- package/dist/services/functionTemplateService.js.map +1 -0
- package/dist/utils/util.d.ts +3 -4
- package/dist/utils/util.d.ts.map +1 -1
- package/dist/utils/util.js +10 -6
- package/dist/utils/util.js.map +1 -1
- package/package.json +15 -4
package/README.md
CHANGED
|
@@ -1,69 +1,112 @@
|
|
|
1
1
|
# do-functions-cli
|
|
2
2
|
|
|
3
|
-

|
|
4
|
-

|
|
3
|
+
[](https://www.npmjs.com/package/do-functions-cli)
|
|
4
|
+
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
A CLI tool
|
|
6
|
+
A CLI tool for scaffolding [DigitalOcean Serverless Functions](https://docs.digitalocean.com/products/functions/). Quickly create new functions with JavaScript or TypeScript templates, install dependencies, and automatically update your `project.yml` configuration.
|
|
7
|
+
|
|
8
|
+
> **Note:** This project is not affiliated with [DigitalOcean](https://digitalocean.com) or [do-functions](https://github.com/mrbrianevans/do-functions), but was inspired by the latter.
|
|
7
9
|
|
|
8
10
|
## Features
|
|
9
11
|
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
12
|
+
- **Interactive function creation** — Guided prompts walk you through creating new functions
|
|
13
|
+
- **JavaScript & TypeScript templates** — Choose your preferred language
|
|
14
|
+
- **Automatic dependency installation** — Optionally run `npm install` in the generated function directory
|
|
15
|
+
- **Auto-update project.yml** — Automatically add new functions to your project configuration
|
|
16
|
+
- **Non-interactive mode** — Use CLI flags and `--yes` for scripted workflows
|
|
14
17
|
|
|
15
18
|
## Installation
|
|
16
19
|
|
|
17
|
-
Global:
|
|
18
|
-
|
|
19
20
|
```bash
|
|
20
|
-
|
|
21
|
+
# Global installation
|
|
22
|
+
npm install -g do-functions-cli
|
|
23
|
+
|
|
24
|
+
# Or use directly with npx
|
|
25
|
+
npx do-functions-cli create
|
|
21
26
|
```
|
|
22
27
|
|
|
23
|
-
|
|
28
|
+
## Quick Start
|
|
29
|
+
|
|
30
|
+
Create a new function interactively:
|
|
24
31
|
|
|
25
32
|
```bash
|
|
26
|
-
|
|
33
|
+
do-functions-cli create
|
|
27
34
|
```
|
|
28
35
|
|
|
36
|
+
You'll be prompted to:
|
|
37
|
+
|
|
38
|
+
1. Enter the packages directory (default: `./packages`)
|
|
39
|
+
2. Enter the package/function name (e.g., `api/hello`)
|
|
40
|
+
3. Choose a language (JavaScript or TypeScript)
|
|
41
|
+
4. Install dependencies (optional)
|
|
42
|
+
5. Add the function to `project.yml` (optional)
|
|
43
|
+
|
|
29
44
|
## Usage
|
|
30
45
|
|
|
31
|
-
|
|
46
|
+
### Interactive Mode
|
|
32
47
|
|
|
33
48
|
```bash
|
|
34
|
-
|
|
35
|
-
|
|
49
|
+
do-functions-cli create
|
|
50
|
+
```
|
|
36
51
|
|
|
37
|
-
|
|
38
|
-
|
|
52
|
+
### Non-Interactive Mode
|
|
53
|
+
|
|
54
|
+
Use flags to skip prompts:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
do-functions-cli create --packages-dir ./packages --func api/hello --yes
|
|
39
58
|
```
|
|
40
59
|
|
|
41
|
-
|
|
60
|
+
### CLI Options
|
|
61
|
+
|
|
62
|
+
| Option | Description |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| `--packages-dir <dir>` | Root packages directory (default: prompted, or `./packages`) |
|
|
65
|
+
| `-f, --func <name>` | Package/function name in `package/function` format |
|
|
66
|
+
| `-y, --yes` | Skip optional prompts and use defaults |
|
|
67
|
+
| `--help` | Show help information |
|
|
68
|
+
| `--version` | Show version number |
|
|
42
69
|
|
|
43
|
-
|
|
44
|
-
- Additional commands: `validate`, `deploy`, etc.
|
|
70
|
+
## Project Structure
|
|
45
71
|
|
|
46
|
-
|
|
72
|
+
After creating a function, your project will look like:
|
|
47
73
|
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
74
|
+
```
|
|
75
|
+
your-project/
|
|
76
|
+
├── packages/
|
|
77
|
+
│ └── api/ # Package name
|
|
78
|
+
│ └── hello/ # Function name
|
|
79
|
+
│ ├── index.js # Function entry point (or index.ts)
|
|
80
|
+
│ ├── package.json
|
|
81
|
+
│ └── .include # DigitalOcean include file
|
|
82
|
+
└── project.yml # DigitalOcean project configuration
|
|
83
|
+
```
|
|
54
84
|
|
|
55
|
-
##
|
|
85
|
+
## project.yml Configuration
|
|
56
86
|
|
|
57
|
-
|
|
87
|
+
The CLI automatically manages your `project.yml` file:
|
|
58
88
|
|
|
59
89
|
```yaml
|
|
60
90
|
packages:
|
|
61
|
-
- name:
|
|
91
|
+
- name: api
|
|
62
92
|
functions:
|
|
63
93
|
- name: hello
|
|
64
94
|
runtime: nodejs:18
|
|
65
95
|
web: true
|
|
66
|
-
...
|
|
67
96
|
```
|
|
68
97
|
|
|
69
|
-
|
|
98
|
+
## Requirements
|
|
99
|
+
|
|
100
|
+
- Node.js 18 or later
|
|
101
|
+
- npm or compatible package manager
|
|
102
|
+
|
|
103
|
+
## Roadmap
|
|
104
|
+
|
|
105
|
+
- Additional language templates (Python, Go)
|
|
106
|
+
- `validate` command for project configuration
|
|
107
|
+
- `deploy` command integration with DigitalOcean CLI
|
|
108
|
+
- Dry-run mode for previewing changes
|
|
109
|
+
|
|
110
|
+
## License
|
|
111
|
+
|
|
112
|
+
MIT
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import createCommand from './commands/create.js';
|
|
4
3
|
import fs from 'fs-extra/esm';
|
|
4
|
+
import createCommand from './commands/create.js';
|
|
5
5
|
const packageJson = await fs.readJSON(new URL('../package.json', import.meta.url));
|
|
6
6
|
const cliVersion = packageJson.version;
|
|
7
7
|
// Initialize the main CLI program
|
|
@@ -17,16 +17,16 @@ program.parse(process.argv);
|
|
|
17
17
|
/**
|
|
18
18
|
* Handle uncaught exceptions globally.
|
|
19
19
|
*
|
|
20
|
-
* ExitPromptError is thrown when a user cancels an interactive prompt
|
|
21
|
-
* so we handle it gracefully. Other errors are re-thrown for proper error reporting.
|
|
20
|
+
* ExitPromptError is thrown when a user cancels an interactive prompt.
|
|
22
21
|
*/
|
|
23
22
|
process.on('uncaughtException', (error) => {
|
|
24
23
|
if (error instanceof Error && error.name === 'ExitPromptError') {
|
|
25
24
|
console.log('👋 until next time!');
|
|
25
|
+
process.exit(0);
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
console.error(error);
|
|
29
|
+
process.exit(1);
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9B,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;AAEvC,kCAAkC;AAClC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvB,sEAAsE;AACtE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,2CAA2C;AAC3C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B;;;;GAIG;AACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,QAAA,MAAM,aAAa,SAAwB,CAAC;AAkI5C,eAAe,aAAa,CAAC"}
|
package/dist/commands/create.js
CHANGED
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
* 4. Installing dependencies (optional)
|
|
9
9
|
* 5. Adding the function to project.yml configuration (optional)
|
|
10
10
|
*/
|
|
11
|
-
import { confirm, input, select } from '@inquirer/prompts';
|
|
12
|
-
import { Command } from 'commander';
|
|
13
|
-
import fs from 'fs-extra';
|
|
14
11
|
import * as child_process from 'node:child_process';
|
|
15
12
|
import * as path from 'node:path';
|
|
16
13
|
import * as util from 'node:util';
|
|
14
|
+
import { confirm, input, select } from '@inquirer/prompts';
|
|
15
|
+
import { Command } from 'commander';
|
|
16
|
+
import fs from 'fs-extra';
|
|
17
17
|
import ora from 'ora';
|
|
18
|
+
import * as z from 'zod';
|
|
19
|
+
import { CreateOptionsSchema } from '../schemas/createOptions.js';
|
|
20
|
+
import { functionTemplateService } from '../services/functionTemplateService.js';
|
|
18
21
|
import { scaffoldFunction, updateProjectConfig } from '../utils/util.js';
|
|
19
22
|
import { validateFunctionName } from '../utils/validators.js';
|
|
20
23
|
// Promisify exec to use async/await syntax
|
|
@@ -24,17 +27,26 @@ createCommand
|
|
|
24
27
|
.description('create a new serverless function')
|
|
25
28
|
.option('-y, --yes', 'skip all optional prompts and use defaults')
|
|
26
29
|
.option('--packages-dir <dir>', 'specify the root packages directory')
|
|
30
|
+
.option('-f, --func <name>', 'specify the package/function name')
|
|
27
31
|
.action(async (options) => {
|
|
28
|
-
const
|
|
32
|
+
const parsedOptionsResult = CreateOptionsSchema.safeParse(options);
|
|
33
|
+
if (!parsedOptionsResult.success) {
|
|
34
|
+
const prettyError = z.prettifyError(parsedOptionsResult.error);
|
|
35
|
+
console.log(prettyError);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const parsedOptions = parsedOptionsResult.data;
|
|
39
|
+
const userPackagesDir = parsedOptions.packagesDir ||
|
|
29
40
|
(await input({
|
|
30
41
|
message: 'Enter the root function packages directory:',
|
|
31
42
|
default: './packages',
|
|
32
43
|
}));
|
|
33
|
-
const userFuncPath =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
44
|
+
const userFuncPath = parsedOptions.func ||
|
|
45
|
+
(await input({
|
|
46
|
+
message: 'Enter the package/function name to create:',
|
|
47
|
+
default: 'sample/hello',
|
|
48
|
+
validate: validateFunctionName,
|
|
49
|
+
}));
|
|
38
50
|
const [pkgName, funcName] = userFuncPath.split('/');
|
|
39
51
|
const resolvedFuncDir = path.resolve(userPackagesDir, userFuncPath);
|
|
40
52
|
if (await fs.exists(resolvedFuncDir)) {
|
|
@@ -47,14 +59,13 @@ createCommand
|
|
|
47
59
|
return;
|
|
48
60
|
}
|
|
49
61
|
}
|
|
50
|
-
const funcLanguage =
|
|
62
|
+
const funcLanguage = await select({
|
|
51
63
|
message: 'Choose a language for the function:',
|
|
52
|
-
choices:
|
|
53
|
-
|
|
54
|
-
{ name:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}));
|
|
64
|
+
choices: functionTemplateService
|
|
65
|
+
.getTemplates()
|
|
66
|
+
.map((template) => ({ name: template.name, value: template.dirName })),
|
|
67
|
+
default: functionTemplateService.getDefaultTemplate().dirName,
|
|
68
|
+
});
|
|
58
69
|
// Initialize a spinner to show progress to the user
|
|
59
70
|
const spinner = ora(`Creating function '${userFuncPath}'...`).start();
|
|
60
71
|
try {
|
|
@@ -107,7 +118,7 @@ createCommand
|
|
|
107
118
|
}
|
|
108
119
|
else {
|
|
109
120
|
spinner.start('Updating project.yml configuration...');
|
|
110
|
-
const result = await updateProjectConfig(projectYmlPath, pkgName, funcName);
|
|
121
|
+
const result = await updateProjectConfig(projectYmlPath, pkgName, funcName, funcLanguage);
|
|
111
122
|
const resultStatusMessageMap = {
|
|
112
123
|
'created-new-config': `Created project.yml with package "${pkgName}" and function "${userFuncPath}"`,
|
|
113
124
|
'added-package': `Added new package "${pkgName}" with function "${userFuncPath}" to project.yml`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
export declare const CreateOptionsSchema: z.ZodObject<{
|
|
3
|
+
packagesDir: z.ZodOptional<z.ZodString>;
|
|
4
|
+
func: z.ZodOptional<z.ZodString>;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export type CreateOptions = z.infer<typeof CreateOptionsSchema>;
|
|
7
|
+
//# sourceMappingURL=createOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createOptions.d.ts","sourceRoot":"","sources":["../../src/schemas/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,mBAAmB;;;iBAM9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createOptions.js","sourceRoot":"","sources":["../../src/schemas/createOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,kBAAkB,CAAC;SACzB,QAAQ,EAAE;CACd,CAAC,CAAC"}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
/**
|
|
3
3
|
* Zod schema for validating a DigitalOcean function entry in project.yml
|
|
4
|
-
*
|
|
5
|
-
* Properties:
|
|
6
|
-
* - name: The function name (required)
|
|
7
|
-
* - runtime: The Node.js runtime version (defaults to DEFAULT_RUNTIME)
|
|
8
|
-
* - web: Whether the function is web-accessible (defaults to true)
|
|
9
4
|
*/
|
|
10
5
|
export declare const DOFunctionSchema: z.ZodObject<{
|
|
11
6
|
name: z.ZodString;
|
|
12
|
-
runtime: z.
|
|
13
|
-
"nodejs:18": "nodejs:18";
|
|
14
|
-
"nodejs:14": "nodejs:14";
|
|
15
|
-
"nodejs:default": "nodejs:default";
|
|
16
|
-
}>>>;
|
|
7
|
+
runtime: z.ZodOptional<z.ZodString>;
|
|
17
8
|
web: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
18
9
|
}, z.core.$strip>;
|
|
19
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doFunction.d.ts","sourceRoot":"","sources":["../../src/schemas/doFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"doFunction.d.ts","sourceRoot":"","sources":["../../src/schemas/doFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
|
-
import { DEFAULT_RUNTIME } from '../constants.js';
|
|
3
2
|
/**
|
|
4
3
|
* Zod schema for validating a DigitalOcean function entry in project.yml
|
|
5
|
-
*
|
|
6
|
-
* Properties:
|
|
7
|
-
* - name: The function name (required)
|
|
8
|
-
* - runtime: The Node.js runtime version (defaults to DEFAULT_RUNTIME)
|
|
9
|
-
* - web: Whether the function is web-accessible (defaults to true)
|
|
10
4
|
*/
|
|
11
5
|
export const DOFunctionSchema = z.object({
|
|
12
6
|
name: z.string(),
|
|
13
|
-
runtime: z
|
|
14
|
-
.enum(['nodejs:14', 'nodejs:18', 'nodejs:default'])
|
|
15
|
-
.optional()
|
|
16
|
-
.default(DEFAULT_RUNTIME),
|
|
7
|
+
runtime: z.string().optional(),
|
|
17
8
|
web: z.boolean().optional().default(true),
|
|
18
9
|
});
|
|
19
10
|
//# sourceMappingURL=doFunction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doFunction.js","sourceRoot":"","sources":["../../src/schemas/doFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"doFunction.js","sourceRoot":"","sources":["../../src/schemas/doFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC1C,CAAC,CAAC"}
|
|
@@ -10,11 +10,7 @@ export declare const DOPackageSchema: z.ZodObject<{
|
|
|
10
10
|
name: z.ZodString;
|
|
11
11
|
functions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12
12
|
name: z.ZodString;
|
|
13
|
-
runtime: z.
|
|
14
|
-
"nodejs:18": "nodejs:18";
|
|
15
|
-
"nodejs:14": "nodejs:14";
|
|
16
|
-
"nodejs:default": "nodejs:default";
|
|
17
|
-
}>>>;
|
|
13
|
+
runtime: z.ZodOptional<z.ZodString>;
|
|
18
14
|
web: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
19
15
|
}, z.core.$strip>>>>;
|
|
20
16
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doPackage.d.ts","sourceRoot":"","sources":["../../src/schemas/doPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"doPackage.d.ts","sourceRoot":"","sources":["../../src/schemas/doPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;iBAG1B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doPackage.js","sourceRoot":"","sources":["../../src/schemas/doPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"doPackage.js","sourceRoot":"","sources":["../../src/schemas/doPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5D,CAAC,CAAC"}
|
|
@@ -10,11 +10,7 @@ export declare const DOProjectYmlSchema: z.ZodObject<{
|
|
|
10
10
|
name: z.ZodString;
|
|
11
11
|
functions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12
12
|
name: z.ZodString;
|
|
13
|
-
runtime: z.
|
|
14
|
-
"nodejs:18": "nodejs:18";
|
|
15
|
-
"nodejs:14": "nodejs:14";
|
|
16
|
-
"nodejs:default": "nodejs:default";
|
|
17
|
-
}>>>;
|
|
13
|
+
runtime: z.ZodOptional<z.ZodString>;
|
|
18
14
|
web: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
19
15
|
}, z.core.$strip>>>>;
|
|
20
16
|
}, z.core.$strip>>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doProjectYml.d.ts","sourceRoot":"","sources":["../../src/schemas/doProjectYml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"doProjectYml.d.ts","sourceRoot":"","sources":["../../src/schemas/doProjectYml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;iBAE7B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doProjectYml.js","sourceRoot":"","sources":["../../src/schemas/doProjectYml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"doProjectYml.js","sourceRoot":"","sources":["../../src/schemas/doProjectYml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1D,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for validating a function template entry
|
|
4
|
+
*/
|
|
5
|
+
export declare const FunctionTemplateSchema: z.ZodObject<{
|
|
6
|
+
name: z.ZodString;
|
|
7
|
+
dirName: z.ZodString;
|
|
8
|
+
runtime: z.ZodString;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
/**
|
|
11
|
+
* TypeScript type derived from the FunctionTemplateSchema
|
|
12
|
+
*/
|
|
13
|
+
export type FunctionTemplate = z.infer<typeof FunctionTemplateSchema>;
|
|
14
|
+
//# sourceMappingURL=functionTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionTemplate.d.ts","sourceRoot":"","sources":["../../src/schemas/functionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for validating a function template entry
|
|
4
|
+
*/
|
|
5
|
+
export const FunctionTemplateSchema = z.object({
|
|
6
|
+
name: z.string(),
|
|
7
|
+
dirName: z.string(),
|
|
8
|
+
runtime: z.string(),
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=functionTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionTemplate.js","sourceRoot":"","sources":["../../src/schemas/functionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { FunctionTemplate } from '../schemas/functionTemplate.js';
|
|
2
|
+
/**
|
|
3
|
+
* Service class for managing function templates.
|
|
4
|
+
* Provides methods to retrieve and manage available function templates.
|
|
5
|
+
*/
|
|
6
|
+
declare class FunctionTemplateService {
|
|
7
|
+
/** Array to store available function templates */
|
|
8
|
+
private templates;
|
|
9
|
+
/** Retrieves all available function templates */
|
|
10
|
+
getTemplates(): FunctionTemplate[];
|
|
11
|
+
/** Retrieves the default function template */
|
|
12
|
+
getDefaultTemplate(): FunctionTemplate;
|
|
13
|
+
/** Retrieves a function template by its directory name */
|
|
14
|
+
getTemplateByDirName(dirName: string): FunctionTemplate | undefined;
|
|
15
|
+
/** Adds a new function template to the list */
|
|
16
|
+
addTemplate(template: FunctionTemplate): void;
|
|
17
|
+
}
|
|
18
|
+
/** Singleton instance for managing function templates */
|
|
19
|
+
export declare const functionTemplateService: FunctionTemplateService;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=functionTemplateService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionTemplateService.d.ts","sourceRoot":"","sources":["../../src/services/functionTemplateService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;GAGG;AACH,cAAM,uBAAuB;IAC3B,kDAAkD;IAClD,OAAO,CAAC,SAAS,CAWf;IAEF,iDAAiD;IACjD,YAAY,IAAI,gBAAgB,EAAE;IAIlC,8CAA8C;IAC9C,kBAAkB,IAAI,gBAAgB;IAItC,0DAA0D;IAC1D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAKnE,+CAA+C;IAC/C,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;CAG9C;AAED,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,yBAAgC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service class for managing function templates.
|
|
3
|
+
* Provides methods to retrieve and manage available function templates.
|
|
4
|
+
*/
|
|
5
|
+
class FunctionTemplateService {
|
|
6
|
+
/** Array to store available function templates */
|
|
7
|
+
templates = [
|
|
8
|
+
{
|
|
9
|
+
name: 'JavaScript',
|
|
10
|
+
dirName: 'javascript',
|
|
11
|
+
runtime: 'nodejs:18',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'TypeScript',
|
|
15
|
+
dirName: 'typescript',
|
|
16
|
+
runtime: 'nodejs:18',
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
/** Retrieves all available function templates */
|
|
20
|
+
getTemplates() {
|
|
21
|
+
return this.templates.map((template) => ({ ...template }));
|
|
22
|
+
}
|
|
23
|
+
/** Retrieves the default function template */
|
|
24
|
+
getDefaultTemplate() {
|
|
25
|
+
return { ...this.templates[0] };
|
|
26
|
+
}
|
|
27
|
+
/** Retrieves a function template by its directory name */
|
|
28
|
+
getTemplateByDirName(dirName) {
|
|
29
|
+
const template = this.templates.find((template) => template.dirName === dirName);
|
|
30
|
+
return template ? { ...template } : undefined;
|
|
31
|
+
}
|
|
32
|
+
/** Adds a new function template to the list */
|
|
33
|
+
addTemplate(template) {
|
|
34
|
+
this.templates.push({ ...template });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Singleton instance for managing function templates */
|
|
38
|
+
export const functionTemplateService = new FunctionTemplateService();
|
|
39
|
+
//# sourceMappingURL=functionTemplateService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionTemplateService.js","sourceRoot":"","sources":["../../src/services/functionTemplateService.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,uBAAuB;IAC3B,kDAAkD;IAC1C,SAAS,GAAuB;QACtC;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,WAAW;SACrB;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,WAAW;SACrB;KACF,CAAC;IAEF,iDAAiD;IACjD,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,8CAA8C;IAC9C,kBAAkB;QAChB,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,CAAC;IACnC,CAAC;IAED,0DAA0D;IAC1D,oBAAoB,CAAC,OAAe;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACjF,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,+CAA+C;IAC/C,WAAW,CAAC,QAA0B;QACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;CACF;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC"}
|
package/dist/utils/util.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
export type LanguageChoice = 'typescript' | 'javascript';
|
|
2
1
|
/**
|
|
3
2
|
* Get the template directory for a function depending on language choice.
|
|
4
3
|
*/
|
|
5
|
-
export declare function getTemplateDir(funcLanguage:
|
|
4
|
+
export declare function getTemplateDir(funcLanguage: string): string;
|
|
6
5
|
export type ScaffoldOptions = {
|
|
7
6
|
targetDir: string;
|
|
8
7
|
funcPath: string;
|
|
9
|
-
funcLanguage:
|
|
8
|
+
funcLanguage: string;
|
|
10
9
|
};
|
|
11
10
|
/**
|
|
12
11
|
* Scaffolds a function directory by emptying target and copying template, then updating package.json name.
|
|
@@ -20,5 +19,5 @@ export type UpdateResult = {
|
|
|
20
19
|
* Update or create the project.yml configuration with the given package and function.
|
|
21
20
|
* Uses early returns for clarity. Returns a status describing the performed action.
|
|
22
21
|
*/
|
|
23
|
-
export declare function updateProjectConfig(projectYmlPath: string, pkgName: string, funcName: string): Promise<UpdateResult>;
|
|
22
|
+
export declare function updateProjectConfig(projectYmlPath: string, pkgName: string, funcName: string, funcLanguage: string): Promise<UpdateResult>;
|
|
24
23
|
//# sourceMappingURL=util.d.ts.map
|
package/dist/utils/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,SAAS,EACT,QAAQ,EACR,YAAY,GACb,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjC;AAED,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAoCvB"}
|
package/dist/utils/util.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import fs from 'fs-extra';
|
|
2
1
|
import * as path from 'node:path';
|
|
3
|
-
import { DEFAULT_RUNTIME } from '../constants.js';
|
|
4
|
-
import { DOProjectYmlSchema } from '../schemas/doProjectYml.js';
|
|
5
|
-
import YAML from 'yaml';
|
|
6
2
|
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import YAML from 'yaml';
|
|
5
|
+
import { DOProjectYmlSchema } from '../schemas/doProjectYml.js';
|
|
6
|
+
import { functionTemplateService } from '../services/functionTemplateService.js';
|
|
7
7
|
/**
|
|
8
8
|
* Get the template directory for a function depending on language choice.
|
|
9
9
|
*/
|
|
@@ -25,9 +25,13 @@ export async function scaffoldFunction({ targetDir, funcPath, funcLanguage, }) {
|
|
|
25
25
|
* Update or create the project.yml configuration with the given package and function.
|
|
26
26
|
* Uses early returns for clarity. Returns a status describing the performed action.
|
|
27
27
|
*/
|
|
28
|
-
export async function updateProjectConfig(projectYmlPath, pkgName, funcName) {
|
|
28
|
+
export async function updateProjectConfig(projectYmlPath, pkgName, funcName, funcLanguage) {
|
|
29
29
|
try {
|
|
30
|
-
const
|
|
30
|
+
const funcLanguageObj = functionTemplateService.getTemplateByDirName(funcLanguage);
|
|
31
|
+
if (!funcLanguageObj) {
|
|
32
|
+
throw new Error(`Unsupported function language: ${funcLanguage}`);
|
|
33
|
+
}
|
|
34
|
+
const functionObj = { name: funcName, runtime: funcLanguageObj.runtime, web: true };
|
|
31
35
|
const exists = await fs.exists(projectYmlPath);
|
|
32
36
|
if (!exists) {
|
|
33
37
|
const initial = { packages: [{ name: pkgName, functions: [functionObj] }] };
|
package/dist/utils/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "do-functions-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
15
|
"build": "tsc",
|
|
16
|
-
"format": "prettier --write
|
|
17
|
-
"format:check": "prettier --check
|
|
16
|
+
"format": "prettier --write ./src",
|
|
17
|
+
"format:check": "prettier --check ./src",
|
|
18
|
+
"lint": "eslint ./src --ext .ts",
|
|
19
|
+
"lint:fix": "eslint ./src --ext .ts --fix",
|
|
18
20
|
"prepublishOnly": "npm run build",
|
|
19
21
|
"watch": "tsc -w"
|
|
20
22
|
},
|
|
@@ -27,10 +29,19 @@
|
|
|
27
29
|
"zod": "^4.1.13"
|
|
28
30
|
},
|
|
29
31
|
"devDependencies": {
|
|
32
|
+
"@eslint/js": "^9.39.1",
|
|
33
|
+
"@semantic-release/git": "^10.0.1",
|
|
34
|
+
"@trivago/prettier-plugin-sort-imports": "^6.0.0",
|
|
30
35
|
"@types/fs-extra": "^11.0.4",
|
|
31
36
|
"@types/node": "^24.10.1",
|
|
37
|
+
"eslint": "^9.39.1",
|
|
38
|
+
"eslint-config-prettier": "^10.1.8",
|
|
39
|
+
"globals": "^16.5.0",
|
|
40
|
+
"jiti": "^2.6.1",
|
|
32
41
|
"prettier": "^3.7.2",
|
|
33
|
-
"
|
|
42
|
+
"prettier-plugin-organize-imports": "^4.3.0",
|
|
43
|
+
"typescript": "^5.9.3",
|
|
44
|
+
"typescript-eslint": "^8.48.0"
|
|
34
45
|
},
|
|
35
46
|
"files": [
|
|
36
47
|
"dist",
|