@intelligo-dev/cli 1.0.0-beta.1 → 1.0.0-beta.13
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/NOTICE +6 -0
- package/README.md +63 -0
- package/dist/bin.js +85 -37
- package/dist/bin.js.map +1 -1
- package/dist/commands/add.d.ts +22 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +61 -4
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/create-flow.d.ts +34 -0
- package/dist/commands/create-flow.d.ts.map +1 -0
- package/dist/commands/create-flow.js +180 -0
- package/dist/commands/create-flow.js.map +1 -0
- package/dist/commands/create.d.ts +23 -6
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +45 -13
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/doctor.d.ts +14 -3
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +293 -37
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/migrate-check.d.ts +54 -1
- package/dist/commands/migrate-check.d.ts.map +1 -1
- package/dist/commands/migrate-check.js +101 -5
- package/dist/commands/migrate-check.js.map +1 -1
- package/dist/commands/migrate.d.ts +97 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +147 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/upgrade-check.d.ts +5 -5
- package/dist/commands/upgrade-check.d.ts.map +1 -1
- package/dist/commands/upgrade-check.js +19 -6
- package/dist/commands/upgrade-check.js.map +1 -1
- package/dist/env-files.d.ts +12 -0
- package/dist/env-files.d.ts.map +1 -0
- package/dist/env-files.js +29 -0
- package/dist/env-files.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +9 -15
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +5 -16
- package/dist/manifest.js.map +1 -1
- package/dist/migrations.d.ts +3 -6
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +3 -6
- package/dist/migrations.js.map +1 -1
- package/dist/model-catalogue.d.ts +14 -0
- package/dist/model-catalogue.d.ts.map +1 -0
- package/dist/model-catalogue.js +34 -0
- package/dist/model-catalogue.js.map +1 -0
- package/dist/registry-items.d.ts +56 -0
- package/dist/registry-items.d.ts.map +1 -0
- package/dist/registry-items.js +103 -0
- package/dist/registry-items.js.map +1 -0
- package/package.json +36 -10
- package/src/bin.ts +264 -0
- package/src/commands/add.ts +244 -0
- package/src/commands/create-flow.ts +228 -0
- package/src/commands/create.ts +139 -0
- package/src/commands/doctor.ts +487 -0
- package/src/commands/migrate-check.ts +257 -0
- package/src/commands/migrate.ts +234 -0
- package/src/commands/upgrade-check.ts +157 -0
- package/src/env-files.ts +31 -0
- package/src/index.ts +39 -0
- package/src/manifest.ts +93 -0
- package/src/migrations-dir.ts +25 -0
- package/src/migrations.ts +133 -0
- package/src/model-catalogue.ts +35 -0
- package/src/registry-items.ts +132 -0
- package/templates/admin-page/admin-page.tsx.tpl +2 -3
- package/templates/app-scaffold/assistant-route.ts.tpl +2 -2
- package/templates/app-scaffold/auth-route.ts.tpl +10 -0
- package/templates/app-scaffold/components.json.tpl +6 -2
- package/templates/app-scaffold/db-schema.ts.tpl +29 -0
- package/templates/app-scaffold/drizzle-journal.json.tpl +5 -0
- package/templates/app-scaffold/drizzle.config.ts.tpl +45 -0
- package/templates/app-scaffold/env.example.tpl +65 -1
- package/templates/app-scaffold/globals.css.tpl +172 -281
- package/templates/app-scaffold/i18n-request.ts.tpl +25 -0
- package/templates/app-scaffold/instrumentation.ts.tpl +21 -0
- package/templates/app-scaffold/intelligo.ts.tpl +104 -9
- package/templates/app-scaffold/layout.tsx.tpl +18 -1
- package/templates/app-scaffold/lib-utils.ts.tpl +1 -6
- package/templates/app-scaffold/next.config.mjs.tpl +2 -0
- package/templates/app-scaffold/package.json.tpl +31 -17
- package/templates/app-scaffold/page.tsx.tpl +16 -0
- package/templates/app-scaffold/plans.ts.tpl +32 -13
- package/templates/app-scaffold/{middleware.ts.tpl → proxy.ts.tpl} +6 -0
- package/templates/app-scaffold/sonner.tsx.tpl +42 -20
- package/templates/app-scaffold/stripe-webhook-route.ts.tpl +24 -0
- package/templates/app-scaffold/theme-provider.tsx.tpl +6 -4
- package/templates/app-scaffold/tsconfig.json.tpl +20 -4
- package/templates/app-scaffold/use-mobile.ts.tpl +19 -0
- package/templates/app-scaffold/workspace-bootstrap.ts.tpl +30 -0
- package/templates/maintenance/maintenance-route.ts.tpl +119 -0
- package/templates/manifest.json +57 -18
- package/templates/registry-items.json +116 -0
- package/templates/registry-requires.json +156 -0
- package/templates/usage-page/usage-page.tsx.tpl +23 -8
- package/templates/billing-page/billing-page.tsx.tpl +0 -72
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The conversation around `createApp`: ask what the flags did not say,
|
|
3
|
+
* scaffold, and install the chosen registry items once the developer
|
|
4
|
+
* has approved the commands that do it.
|
|
5
|
+
*
|
|
6
|
+
* Nothing runs on the developer's machine without their say-so. In a
|
|
7
|
+
* terminal the commands are shown and confirmed; without one (CI, a
|
|
8
|
+
* pipe) they run only under `--yes`, and are otherwise printed.
|
|
9
|
+
*/
|
|
10
|
+
import { spawnSync } from "node:child_process";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import * as p from "@clack/prompts";
|
|
13
|
+
import { assertNotOccupied, createApp, deriveNames, formatCreateResult, formatNextSteps, isOccupied, } from "./create.js";
|
|
14
|
+
import { detectPackageManager, formatCommand, hasLocalShadcn, installPlan, readRegistryCatalogue, shortDescription, withDependencies, } from "../registry-items.js";
|
|
15
|
+
export function parseCreateFlags(args) {
|
|
16
|
+
let target;
|
|
17
|
+
let items;
|
|
18
|
+
for (let i = 0; i < args.length; i++) {
|
|
19
|
+
const arg = args[i];
|
|
20
|
+
if (arg === "--items" || arg.startsWith("--items=")) {
|
|
21
|
+
const list = arg === "--items" ? (args[++i] ?? "") : arg.slice(8);
|
|
22
|
+
items = list
|
|
23
|
+
.split(",")
|
|
24
|
+
.map((s) => s.trim())
|
|
25
|
+
.filter(Boolean);
|
|
26
|
+
}
|
|
27
|
+
else if (!arg.startsWith("-") && target === undefined) {
|
|
28
|
+
target = arg;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
target,
|
|
33
|
+
items,
|
|
34
|
+
all: args.includes("--all"),
|
|
35
|
+
yes: args.includes("--yes") || args.includes("-y"),
|
|
36
|
+
install: !args.includes("--no-install"),
|
|
37
|
+
linkWorkspace: args.includes("--link-workspace"),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** The pages a first app most likely wants; the picker starts with them ticked. */
|
|
41
|
+
const SUGGESTED = ["app-shell", "auth-login", "auth-signup", "dashboard"];
|
|
42
|
+
function bail(value, message = "Nothing was created.") {
|
|
43
|
+
if (!p.isCancel(value))
|
|
44
|
+
return false;
|
|
45
|
+
p.cancel(message);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
function run(c, cwd) {
|
|
49
|
+
const result = spawnSync(c.command, c.args, {
|
|
50
|
+
cwd,
|
|
51
|
+
stdio: "inherit",
|
|
52
|
+
// pnpm, npx and friends are .cmd shims on Windows.
|
|
53
|
+
shell: process.platform === "win32",
|
|
54
|
+
});
|
|
55
|
+
return result.status === 0;
|
|
56
|
+
}
|
|
57
|
+
export async function runCreate(flags, context) {
|
|
58
|
+
const { interactive } = context;
|
|
59
|
+
const catalogue = readRegistryCatalogue(context.templatesDir);
|
|
60
|
+
const packageManager = detectPackageManager();
|
|
61
|
+
if (interactive)
|
|
62
|
+
p.intro("intelligo create");
|
|
63
|
+
// 1. Where.
|
|
64
|
+
let target = flags.target;
|
|
65
|
+
if (!target) {
|
|
66
|
+
if (!interactive) {
|
|
67
|
+
console.error("Usage: intelligo create <directory> [--items a,b | --all] [--yes] [--no-install]");
|
|
68
|
+
return 1;
|
|
69
|
+
}
|
|
70
|
+
const answer = await p.text({
|
|
71
|
+
message: "Project name",
|
|
72
|
+
placeholder: "my-app",
|
|
73
|
+
validate: (v) => {
|
|
74
|
+
if (!v)
|
|
75
|
+
return "A name is required.";
|
|
76
|
+
try {
|
|
77
|
+
deriveNames(v);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
return error.message;
|
|
81
|
+
}
|
|
82
|
+
return isOccupied(v) ? `${v} is not empty.` : undefined;
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
if (bail(answer))
|
|
86
|
+
return 1;
|
|
87
|
+
target = answer;
|
|
88
|
+
}
|
|
89
|
+
// Before any question about items, so nobody chooses pages for an
|
|
90
|
+
// app that is then refused.
|
|
91
|
+
assertNotOccupied(target);
|
|
92
|
+
// 2. What.
|
|
93
|
+
let selected = [];
|
|
94
|
+
if (flags.all)
|
|
95
|
+
selected = Object.keys(catalogue.items);
|
|
96
|
+
else if (flags.items)
|
|
97
|
+
selected = flags.items;
|
|
98
|
+
else if (interactive) {
|
|
99
|
+
const answer = await p.multiselect({
|
|
100
|
+
message: "Which pages should be installed? (space to toggle)",
|
|
101
|
+
options: Object.entries(catalogue.items).map(([name, item]) => ({
|
|
102
|
+
value: name,
|
|
103
|
+
label: item.title,
|
|
104
|
+
hint: shortDescription(item.description),
|
|
105
|
+
})),
|
|
106
|
+
initialValues: SUGGESTED.filter((n) => n in catalogue.items),
|
|
107
|
+
required: false,
|
|
108
|
+
});
|
|
109
|
+
if (bail(answer))
|
|
110
|
+
return 1;
|
|
111
|
+
selected = answer;
|
|
112
|
+
}
|
|
113
|
+
const items = withDependencies(selected, catalogue.requires);
|
|
114
|
+
const added = items.filter((n) => !selected.includes(n));
|
|
115
|
+
if (interactive && added.length > 0) {
|
|
116
|
+
p.log.info(`Also installing what they build on: ${added.join(", ")}`);
|
|
117
|
+
}
|
|
118
|
+
// 3. The scaffold.
|
|
119
|
+
const result = createApp({
|
|
120
|
+
target,
|
|
121
|
+
templatesDir: context.templatesDir,
|
|
122
|
+
frameworkVersion: context.frameworkVersion,
|
|
123
|
+
linkWorkspace: flags.linkWorkspace,
|
|
124
|
+
});
|
|
125
|
+
const appRoot = path.resolve(target);
|
|
126
|
+
if (interactive) {
|
|
127
|
+
p.log.success(`Scaffolded ${result.written.length} files in ${target}`);
|
|
128
|
+
}
|
|
129
|
+
// 4. The pages — only with approval.
|
|
130
|
+
const plan = installPlan(items, { appRoot, packageManager });
|
|
131
|
+
let approved = plan.length > 0 && flags.install && flags.yes;
|
|
132
|
+
if (plan.length > 0 && flags.install && !flags.yes && interactive) {
|
|
133
|
+
const needsInstall = !hasLocalShadcn(appRoot);
|
|
134
|
+
p.note(plan.map(formatCommand).join("\n"), "Commands to run in " + target);
|
|
135
|
+
const answer = await p.confirm({
|
|
136
|
+
message: needsInstall
|
|
137
|
+
? `shadcn is not installed yet — install the dependencies (shadcn included) with ${packageManager} and add ${items.length} page(s)?`
|
|
138
|
+
: `Add ${items.length} page(s) with shadcn?`,
|
|
139
|
+
});
|
|
140
|
+
if (bail(answer, `The scaffold is in ${target}; nothing was installed.`))
|
|
141
|
+
return 1;
|
|
142
|
+
approved = answer;
|
|
143
|
+
}
|
|
144
|
+
let pending = [];
|
|
145
|
+
if (approved) {
|
|
146
|
+
for (const [i, command] of plan.entries()) {
|
|
147
|
+
if (interactive)
|
|
148
|
+
p.log.step(formatCommand(command));
|
|
149
|
+
else
|
|
150
|
+
console.log(`› ${formatCommand(command)}`);
|
|
151
|
+
if (!run(command, appRoot)) {
|
|
152
|
+
pending = plan.slice(i);
|
|
153
|
+
const message = `\`${formatCommand(command)}\` failed — the scaffold is in place; run the rest by hand.`;
|
|
154
|
+
if (interactive)
|
|
155
|
+
p.log.error(message);
|
|
156
|
+
else
|
|
157
|
+
console.error(message);
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
pending = plan;
|
|
164
|
+
}
|
|
165
|
+
const next = {
|
|
166
|
+
packageManager,
|
|
167
|
+
installed: approved && pending.length === 0,
|
|
168
|
+
pending,
|
|
169
|
+
};
|
|
170
|
+
if (interactive) {
|
|
171
|
+
p.note(formatNextSteps(target, next), "Next");
|
|
172
|
+
p.outro(next.installed ? `${items.length} page(s) installed.` : "Scaffold ready.");
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
console.log(formatCreateResult(target, result, next));
|
|
176
|
+
}
|
|
177
|
+
// A failed install is a failure; a declined one is a choice.
|
|
178
|
+
return approved && pending.length > 0 ? 1 : 0;
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=create-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-flow.js","sourceRoot":"","sources":["../../src/commands/create-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `intelligo create <name>` — a new application on the framework.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* and the enduring relationship is the versioned packages, not this
|
|
4
|
+
* This is onboarding, not the product boundary: what it writes is the
|
|
5
|
+
* consumer's from the moment it lands, and the enduring relationship is the versioned packages, not this
|
|
7
6
|
* scaffold. So it generates through the same manifest machinery as
|
|
8
7
|
* `add`, which means the very first upgrade already knows which files
|
|
9
8
|
* you have since edited.
|
|
9
|
+
*
|
|
10
|
+
* In a terminal it asks for the project name when none is given, then
|
|
11
|
+
* which registry pages to install (`--items a,b` or `--all` answer that
|
|
12
|
+
* without asking). The pages are installed by the shadcn CLI the scaffold
|
|
13
|
+
* declares, after the dependencies — and only once you approve the exact
|
|
14
|
+
* commands, or pass `--yes`. `--no-install` stops after the scaffold and
|
|
15
|
+
* prints them instead.
|
|
10
16
|
*/
|
|
11
17
|
import { type AddResult } from "./add.js";
|
|
18
|
+
import { type Command, type PackageManager } from "../registry-items.js";
|
|
12
19
|
export type CreateOptions = {
|
|
13
20
|
/** Directory to create the app in; created if absent. */
|
|
14
21
|
target: string;
|
|
@@ -18,8 +25,7 @@ export type CreateOptions = {
|
|
|
18
25
|
* Emit `workspace:*` for the @intelligo-dev/* dependencies instead of a
|
|
19
26
|
* version range. Only meaningful when scaffolding inside this
|
|
20
27
|
* monorepo — outside it, pnpm fails the install with "workspace
|
|
21
|
-
* protocol used outside a workspace"
|
|
22
|
-
* user would have seen.
|
|
28
|
+
* protocol used outside a workspace".
|
|
23
29
|
*/
|
|
24
30
|
linkWorkspace?: boolean;
|
|
25
31
|
};
|
|
@@ -28,6 +34,17 @@ export declare function deriveNames(target: string): {
|
|
|
28
34
|
appName: string;
|
|
29
35
|
appSlug: string;
|
|
30
36
|
};
|
|
37
|
+
export declare function isOccupied(target: string): boolean;
|
|
38
|
+
/** Scaffolding into an occupied directory is how people lose work. */
|
|
39
|
+
export declare function assertNotOccupied(target: string): void;
|
|
31
40
|
export declare function createApp(options: CreateOptions): AddResult;
|
|
32
|
-
export
|
|
41
|
+
export type NextSteps = {
|
|
42
|
+
packageManager: PackageManager;
|
|
43
|
+
/** Whether `create` already installed the dependencies. */
|
|
44
|
+
installed: boolean;
|
|
45
|
+
/** Install commands the developer declined, or that did not get to run. */
|
|
46
|
+
pending?: Command[];
|
|
47
|
+
};
|
|
48
|
+
export declare function formatNextSteps(target: string, next: NextSteps): string;
|
|
49
|
+
export declare function formatCreateResult(target: string, r: AddResult, next?: NextSteps): string;
|
|
33
50
|
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,aAAa,GAAG;IAC1B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAUA;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOtD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAoB3D;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,cAAc,EAAE,cAAc,CAAC;IAC/B,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB,CAAC;AASF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAYvE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,SAAS,EACZ,IAAI,GAAE,SAAwD,GAC7D,MAAM,CAWR"}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `intelligo create <name>` — a new application on the framework.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* and the enduring relationship is the versioned packages, not this
|
|
4
|
+
* This is onboarding, not the product boundary: what it writes is the
|
|
5
|
+
* consumer's from the moment it lands, and the enduring relationship is the versioned packages, not this
|
|
7
6
|
* scaffold. So it generates through the same manifest machinery as
|
|
8
7
|
* `add`, which means the very first upgrade already knows which files
|
|
9
8
|
* you have since edited.
|
|
9
|
+
*
|
|
10
|
+
* In a terminal it asks for the project name when none is given, then
|
|
11
|
+
* which registry pages to install (`--items a,b` or `--all` answer that
|
|
12
|
+
* without asking). The pages are installed by the shadcn CLI the scaffold
|
|
13
|
+
* declares, after the dependencies — and only once you approve the exact
|
|
14
|
+
* commands, or pass `--yes`. `--no-install` stops after the scaffold and
|
|
15
|
+
* prints them instead.
|
|
10
16
|
*/
|
|
11
17
|
import { existsSync, mkdirSync, readdirSync } from "node:fs";
|
|
12
18
|
import path from "node:path";
|
|
13
19
|
import { addFeature, formatAddResult } from "./add.js";
|
|
20
|
+
import { formatCommand, } from "../registry-items.js";
|
|
14
21
|
/** A package name and product slug derived from the directory name. */
|
|
15
22
|
export function deriveNames(target) {
|
|
16
23
|
const base = path.basename(path.resolve(target));
|
|
@@ -23,13 +30,20 @@ export function deriveNames(target) {
|
|
|
23
30
|
}
|
|
24
31
|
return { appName: slug, appSlug: slug };
|
|
25
32
|
}
|
|
26
|
-
export function
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
export function isOccupied(target) {
|
|
34
|
+
const dir = path.resolve(target);
|
|
35
|
+
return existsSync(dir) && readdirSync(dir).length > 0;
|
|
36
|
+
}
|
|
37
|
+
/** Scaffolding into an occupied directory is how people lose work. */
|
|
38
|
+
export function assertNotOccupied(target) {
|
|
39
|
+
if (isOccupied(target)) {
|
|
40
|
+
throw new Error(`${path.resolve(target)} is not empty. Create the app in a new directory, or use ` +
|
|
31
41
|
`\`intelligo add app-scaffold\` inside an existing one.`);
|
|
32
42
|
}
|
|
43
|
+
}
|
|
44
|
+
export function createApp(options) {
|
|
45
|
+
const target = path.resolve(options.target);
|
|
46
|
+
assertNotOccupied(target);
|
|
33
47
|
mkdirSync(target, { recursive: true });
|
|
34
48
|
const { appName, appSlug } = deriveNames(target);
|
|
35
49
|
return addFeature("app-scaffold", {
|
|
@@ -45,15 +59,33 @@ export function createApp(options) {
|
|
|
45
59
|
},
|
|
46
60
|
});
|
|
47
61
|
}
|
|
48
|
-
|
|
62
|
+
/** A path the reader can paste into a shell, spaces and quotes included. */
|
|
63
|
+
function shellQuote(value) {
|
|
64
|
+
return /^[\w@%+=:,./-]+$/.test(value)
|
|
65
|
+
? value
|
|
66
|
+
: `'${value.replace(/'/g, "'\\''")}'`;
|
|
67
|
+
}
|
|
68
|
+
export function formatNextSteps(target, next) {
|
|
69
|
+
const pm = next.packageManager;
|
|
70
|
+
return [
|
|
71
|
+
`cd ${shellQuote(path.relative(process.cwd(), path.resolve(target)) || ".")}`,
|
|
72
|
+
"cp .env.example .env.local # then fill it in",
|
|
73
|
+
...(next.pending?.length
|
|
74
|
+
? next.pending.map(formatCommand)
|
|
75
|
+
: next.installed
|
|
76
|
+
? []
|
|
77
|
+
: [`${pm} install`]),
|
|
78
|
+
`${pm === "npm" ? "npm run" : pm} dev`,
|
|
79
|
+
].join("\n");
|
|
80
|
+
}
|
|
81
|
+
export function formatCreateResult(target, r, next = { packageManager: "pnpm", installed: false }) {
|
|
49
82
|
return [
|
|
50
83
|
formatAddResult(r),
|
|
51
84
|
"",
|
|
52
85
|
"Next:",
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
" pnpm dev",
|
|
86
|
+
...formatNextSteps(target, next)
|
|
87
|
+
.split("\n")
|
|
88
|
+
.map((line) => ` ${line}`),
|
|
57
89
|
"",
|
|
58
90
|
"`intelligo doctor` will tell you what is still missing.",
|
|
59
91
|
].join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;AACvE,OAAO,EACL,aAAa,GAGd,MAAM,sBAAsB,CAAC;AAgB9B,uEAAuE;AACvE,MAAM,UAAU,WAAW,CAAC,MAAc;IAIxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI;SACd,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,2DAA2D;YAChF,wDAAwD,CAC3D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAEjD,OAAO,UAAU,CAAC,cAAc,EAAE;QAChC,OAAO,EAAE,MAAM;QACf,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,SAAS,EAAE;YACT,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,OAAO;YACrB,iBAAiB,EAAE,OAAO,CAAC,aAAa;gBACtC,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,IAAI,OAAO,CAAC,gBAAgB,EAAE;SACnC;KACF,CAAC,CAAC;AACL,CAAC;AAUD,4EAA4E;AAC5E,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAe;IAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;IAC/B,OAAO;QACL,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE;QAC7E,gDAAgD;QAChD,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;YACtB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,SAAS;gBACd,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxB,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM;KACvC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,CAAY,EACZ,OAAkB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;IAE9D,OAAO;QACL,eAAe,CAAC,CAAC,CAAC;QAClB,EAAE;QACF,OAAO;QACP,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC;aAC7B,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7B,EAAE;QACF,yDAAyD;KAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `intelligo doctor` — report the problems that are invisible until
|
|
3
3
|
* they are an incident.
|
|
4
|
-
*
|
|
5
|
-
* The checks here were each chosen because something in this codebase
|
|
6
|
-
* actually went wrong that way, not because they sounded thorough.
|
|
7
4
|
*/
|
|
8
5
|
export type CheckResult = {
|
|
9
6
|
name: string;
|
|
10
7
|
status: "ok" | "warn" | "error";
|
|
11
8
|
detail: string;
|
|
12
9
|
};
|
|
10
|
+
type ItemRequires = {
|
|
11
|
+
marker: string;
|
|
12
|
+
items?: string[];
|
|
13
|
+
files?: string[];
|
|
14
|
+
exports?: Record<string, string[]>;
|
|
15
|
+
features?: string[];
|
|
16
|
+
};
|
|
17
|
+
export type RegistryRequires = {
|
|
18
|
+
scaffold: string[];
|
|
19
|
+
items: Record<string, ItemRequires>;
|
|
20
|
+
};
|
|
13
21
|
export type DoctorOptions = {
|
|
14
22
|
/** Workspace root; defaults to the current working directory. */
|
|
15
23
|
root?: string;
|
|
24
|
+
/** Registry requirements; defaults to the copy bundled with the CLI. */
|
|
25
|
+
requires?: RegistryRequires | null;
|
|
16
26
|
/** Environment to validate; defaults to process.env. */
|
|
17
27
|
env?: NodeJS.ProcessEnv;
|
|
18
28
|
};
|
|
@@ -20,4 +30,5 @@ export declare function runChecks(options?: DoctorOptions): CheckResult[];
|
|
|
20
30
|
export declare function formatResults(results: CheckResult[]): string;
|
|
21
31
|
/** Process exit code: non-zero when any check errored. */
|
|
22
32
|
export declare function exitCodeFor(results: CheckResult[]): number;
|
|
33
|
+
export {};
|
|
23
34
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACrC,CAAC;AAiCF,MAAM,MAAM,aAAa,GAAG;IAC1B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,CAAC;AAyLF,wBAAgB,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,WAAW,EAAE,CAmNpE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAK5D;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAE1D"}
|