create-seedcli 0.1.6 → 0.1.8
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/dist/index.js +17 -5
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/templates/plugin/package.json.eta +27 -0
- package/templates/plugin/src/commands/hello.ts.eta +17 -0
- package/templates/plugin/src/extensions/example.ts.eta +24 -0
- package/templates/plugin/src/index.ts.eta +11 -0
- package/templates/plugin/tests/plugin.test.ts.eta +19 -0
- package/templates/plugin/tsconfig.json.eta +17 -0
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { join } from "node:path";
|
|
|
3
3
|
import { exists } from "@seedcli/filesystem";
|
|
4
4
|
import { create, detect } from "@seedcli/package-manager";
|
|
5
5
|
import { error, info, muted, newline, spin, success, warning } from "@seedcli/print";
|
|
6
|
-
import {
|
|
6
|
+
import { input, select } from "@seedcli/prompt";
|
|
7
7
|
import { kebabCase } from "@seedcli/strings";
|
|
8
8
|
import { exec } from "@seedcli/system";
|
|
9
9
|
import { directory } from "@seedcli/template";
|
|
@@ -53,6 +53,7 @@ async function parseArgs() {
|
|
|
53
53
|
choices: [
|
|
54
54
|
{ name: "Full (recommended)", value: "full" },
|
|
55
55
|
{ name: "Minimal (bare bones)", value: "minimal" },
|
|
56
|
+
{ name: "Plugin (reusable plugin package)", value: "plugin" },
|
|
56
57
|
],
|
|
57
58
|
});
|
|
58
59
|
const description = await input({
|
|
@@ -134,10 +135,21 @@ async function main() {
|
|
|
134
135
|
newline();
|
|
135
136
|
muted(" Next steps:\n");
|
|
136
137
|
info(` cd ${options.name}`);
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
if (options.template === "plugin") {
|
|
139
|
+
info(" bun test");
|
|
140
|
+
muted(`\n To use this plugin in a CLI:\n`);
|
|
141
|
+
info(` import plugin from "${options.name}";`);
|
|
142
|
+
info("");
|
|
143
|
+
info(` const cli = build("my-cli")`);
|
|
144
|
+
info(` .plugin(plugin)`);
|
|
145
|
+
info(` .create();`);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
info(" bun run dev");
|
|
149
|
+
info(` bun run src/index.ts --help`);
|
|
150
|
+
muted(`\n To use "${options.name}" as a global command:\n`);
|
|
151
|
+
info(" bun link");
|
|
152
|
+
}
|
|
141
153
|
newline();
|
|
142
154
|
}
|
|
143
155
|
main().catch((err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-seedcli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Scaffold a new Seed CLI project — works with bun create, npx, and npm create",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,15 +40,15 @@
|
|
|
40
40
|
"templates"
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@seedcli/filesystem": "^0.1.
|
|
44
|
-
"@seedcli/package-manager": "^0.1.
|
|
45
|
-
"@seedcli/print": "^0.1.
|
|
46
|
-
"@seedcli/prompt": "^0.1.
|
|
47
|
-
"@seedcli/strings": "^0.1.
|
|
48
|
-
"@seedcli/system": "^0.1.
|
|
49
|
-
"@seedcli/template": "^0.1.
|
|
43
|
+
"@seedcli/filesystem": "^0.1.7",
|
|
44
|
+
"@seedcli/package-manager": "^0.1.7",
|
|
45
|
+
"@seedcli/print": "^0.1.7",
|
|
46
|
+
"@seedcli/prompt": "^0.1.7",
|
|
47
|
+
"@seedcli/strings": "^0.1.7",
|
|
48
|
+
"@seedcli/system": "^0.1.7",
|
|
49
|
+
"@seedcli/template": "^0.1.7"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@seedcli/testing": "^0.1.
|
|
52
|
+
"@seedcli/testing": "^0.1.7"
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "<%= it.name %>",
|
|
3
|
+
"version": "<%= it.version %>",
|
|
4
|
+
"description": "<%= it.description %>",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"import": "./src/index.ts",
|
|
9
|
+
"types": "./src/index.ts"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"test": "bun test",
|
|
14
|
+
"typecheck": "tsc --noEmit"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@seedcli/core": "^<%= it.seedcliVersion %>"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"@seedcli/core": "^<%= it.seedcliVersion %>"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@seedcli/testing": "^<%= it.seedcliVersion %>",
|
|
24
|
+
"@types/bun": "latest",
|
|
25
|
+
"typescript": "^5.9.0"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { command, arg, flag } from "@seedcli/core";
|
|
2
|
+
|
|
3
|
+
export default command({
|
|
4
|
+
name: "hello",
|
|
5
|
+
description: "Say hello",
|
|
6
|
+
args: {
|
|
7
|
+
name: arg({ type: "string", description: "Who to greet" }),
|
|
8
|
+
},
|
|
9
|
+
flags: {
|
|
10
|
+
loud: flag({ type: "boolean", default: false, alias: "l", description: "SHOUT the greeting" }),
|
|
11
|
+
},
|
|
12
|
+
run: async ({ args, flags, print }) => {
|
|
13
|
+
const name = args.name ?? "World";
|
|
14
|
+
const greeting = `Hello, ${name}!`;
|
|
15
|
+
print.info(flags.loud ? greeting.toUpperCase() : greeting);
|
|
16
|
+
},
|
|
17
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { defineExtension } from "@seedcli/core";
|
|
2
|
+
|
|
3
|
+
declare module "@seedcli/core" {
|
|
4
|
+
interface ToolboxExtensions {
|
|
5
|
+
<%= it.name.replace(/-/g, "_") %>: {
|
|
6
|
+
greet(name: string): string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const exampleExtension = defineExtension({
|
|
12
|
+
name: "<%= it.name %>",
|
|
13
|
+
description: "Example extension for <%= it.name %>",
|
|
14
|
+
|
|
15
|
+
setup: (toolbox) => {
|
|
16
|
+
(toolbox as unknown as Record<string, unknown>).<%= it.name.replace(/-/g, "_") %> = {
|
|
17
|
+
greet: (name: string) => `Hello from <%= it.name %>, ${name}!`,
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
teardown: () => {
|
|
22
|
+
// Clean up resources if needed
|
|
23
|
+
},
|
|
24
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { definePlugin } from "@seedcli/core";
|
|
2
|
+
import helloCommand from "./commands/hello.js";
|
|
3
|
+
import { exampleExtension } from "./extensions/example.js";
|
|
4
|
+
|
|
5
|
+
export default definePlugin({
|
|
6
|
+
name: "<%= it.name %>",
|
|
7
|
+
version: "<%= it.version %>",
|
|
8
|
+
description: "<%= it.description %>",
|
|
9
|
+
commands: [helloCommand],
|
|
10
|
+
extensions: [exampleExtension],
|
|
11
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import { build } from "@seedcli/core";
|
|
3
|
+
import { createTestCli } from "@seedcli/testing";
|
|
4
|
+
import plugin from "../src/index.js";
|
|
5
|
+
|
|
6
|
+
describe("<%= it.name %> plugin", () => {
|
|
7
|
+
test("hello command runs", async () => {
|
|
8
|
+
const runtime = build("test-cli")
|
|
9
|
+
.plugin(plugin)
|
|
10
|
+
.version("0.0.1")
|
|
11
|
+
.create();
|
|
12
|
+
|
|
13
|
+
const cli = createTestCli(runtime);
|
|
14
|
+
const result = await cli.run("hello");
|
|
15
|
+
|
|
16
|
+
expect(result.stdout).toContain("Hello, World!");
|
|
17
|
+
expect(result.exitCode).toBe(0);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ESNext",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"isolatedModules": true,
|
|
11
|
+
"verbatimModuleSyntax": true,
|
|
12
|
+
"noEmit": true,
|
|
13
|
+
"types": ["@types/bun"]
|
|
14
|
+
},
|
|
15
|
+
"include": ["src/**/*.ts"],
|
|
16
|
+
"exclude": ["node_modules", "dist"]
|
|
17
|
+
}
|