@g3nomaly/ui 0.3.3 → 0.3.5
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 +49 -26
- package/dist/cli/adapter.d.ts +25 -8
- package/dist/cli/adapter.d.ts.map +1 -1
- package/dist/cli/adapter.js +34 -20
- package/dist/cli/adapter.js.map +1 -1
- package/dist/cli/afterInstall.d.ts +26 -0
- package/dist/cli/afterInstall.d.ts.map +1 -0
- package/dist/cli/afterInstall.js +54 -0
- package/dist/cli/afterInstall.js.map +1 -0
- package/dist/cli/commands/add.d.ts +8 -2
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +10 -5
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +16 -5
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +59 -13
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/ls.d.ts +1 -1
- package/dist/cli/commands/ls.js +1 -1
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/manifest.js +1 -1
- package/dist/cli/commands/manifest.js.map +1 -1
- package/dist/cli/commands/source.d.ts +4 -1
- package/dist/cli/commands/source.d.ts.map +1 -1
- package/dist/cli/commands/source.js +29 -2
- package/dist/cli/commands/source.js.map +1 -1
- package/dist/cli/commands/sourceInit.d.ts +9 -0
- package/dist/cli/commands/sourceInit.d.ts.map +1 -0
- package/dist/cli/commands/sourceInit.js +78 -0
- package/dist/cli/commands/sourceInit.js.map +1 -0
- package/dist/cli/commands/update.d.ts +10 -3
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +9 -4
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +17 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/localSources.d.ts +12 -0
- package/dist/cli/localSources.d.ts.map +1 -0
- package/dist/cli/localSources.js +49 -0
- package/dist/cli/localSources.js.map +1 -0
- package/dist/cli/npmDependencies.d.ts +11 -0
- package/dist/cli/npmDependencies.d.ts.map +1 -0
- package/dist/cli/npmDependencies.js +73 -0
- package/dist/cli/npmDependencies.js.map +1 -0
- package/dist/cli/packageFiles.d.ts +15 -0
- package/dist/cli/packageFiles.d.ts.map +1 -0
- package/dist/cli/packageFiles.js +54 -0
- package/dist/cli/packageFiles.js.map +1 -0
- package/dist/cli/themeTokens.d.ts +12 -0
- package/dist/cli/themeTokens.d.ts.map +1 -0
- package/dist/cli/themeTokens.js +60 -0
- package/dist/cli/themeTokens.js.map +1 -0
- package/dist/packages/dependencies.d.ts +48 -0
- package/dist/packages/dependencies.d.ts.map +1 -0
- package/dist/packages/dependencies.js +66 -0
- package/dist/packages/dependencies.js.map +1 -0
- package/dist/packages/install.d.ts +30 -0
- package/dist/packages/install.d.ts.map +1 -0
- package/dist/packages/install.js +54 -0
- package/dist/packages/install.js.map +1 -0
- package/dist/packages/localPack.d.ts +48 -0
- package/dist/packages/localPack.d.ts.map +1 -0
- package/dist/packages/localPack.js +72 -0
- package/dist/packages/localPack.js.map +1 -0
- package/dist/registry/adapters/shadcn.adapter.d.ts +32 -7
- package/dist/registry/adapters/shadcn.adapter.d.ts.map +1 -1
- package/dist/registry/adapters/shadcn.adapter.js +75 -20
- package/dist/registry/adapters/shadcn.adapter.js.map +1 -1
- package/dist/registry/adapters/shadcnImports.d.ts +10 -0
- package/dist/registry/adapters/shadcnImports.d.ts.map +1 -0
- package/dist/registry/adapters/shadcnImports.js +18 -0
- package/dist/registry/adapters/shadcnImports.js.map +1 -0
- package/dist/registry/componentsJson.d.ts +6 -1
- package/dist/registry/componentsJson.d.ts.map +1 -1
- package/dist/registry/componentsJson.js +34 -1
- package/dist/registry/componentsJson.js.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/manifest.d.ts +2 -13
- package/dist/registry/manifest.d.ts.map +1 -1
- package/dist/registry/manifest.js +4 -76
- package/dist/registry/manifest.js.map +1 -1
- package/dist/registry/packageExports.d.ts +9 -0
- package/dist/registry/packageExports.d.ts.map +1 -0
- package/dist/registry/packageExports.js +50 -0
- package/dist/registry/packageExports.js.map +1 -0
- package/dist/registry/packageImports.d.ts +23 -0
- package/dist/registry/packageImports.d.ts.map +1 -0
- package/dist/registry/packageImports.js +51 -0
- package/dist/registry/packageImports.js.map +1 -0
- package/dist/registry/readSource.d.ts +4 -2
- package/dist/registry/readSource.d.ts.map +1 -1
- package/dist/registry/readSource.js +27 -3
- package/dist/registry/readSource.js.map +1 -1
- package/dist/registry/types.d.ts +86 -3
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +46 -3
- package/dist/registry/types.js.map +1 -1
- package/dist/sources/builtins.d.ts +1 -5
- package/dist/sources/builtins.d.ts.map +1 -1
- package/dist/sources/builtins.js +2 -7
- package/dist/sources/builtins.js.map +1 -1
- package/dist/theme/cssVars.d.ts +43 -0
- package/dist/theme/cssVars.d.ts.map +1 -0
- package/dist/theme/cssVars.js +107 -0
- package/dist/theme/cssVars.js.map +1 -0
- package/dist/theme/detectCssFile.d.ts +9 -0
- package/dist/theme/detectCssFile.d.ts.map +1 -0
- package/dist/theme/detectCssFile.js +41 -0
- package/dist/theme/detectCssFile.js.map +1 -0
- package/package.json +8 -21
- package/template/build.ts +32 -0
- package/template/package.json +22 -0
- package/template/src/components/example/Example.css +20 -0
- package/template/src/components/example/Example.tsx +26 -0
- package/template/src/components/example/example.meta.ts +69 -0
- package/dist/components/basic/Card.css +0 -32
- package/dist/components/basic/Card.debug.ts +0 -5
- package/dist/components/basic/Card.tsx +0 -31
- package/dist/components/basic/CardFooter.css +0 -16
- package/dist/components/basic/CardFooter.debug.ts +0 -5
- package/dist/components/basic/CardFooter.tsx +0 -29
- package/dist/components/basic/CardHeader.css +0 -14
- package/dist/components/basic/CardHeader.debug.ts +0 -5
- package/dist/components/basic/CardHeader.tsx +0 -29
- package/dist/components/basic/card.meta.ts +0 -14
- package/dist/components/basic/cardfooter.meta.ts +0 -14
- package/dist/components/basic/cardheader.meta.ts +0 -14
- package/dist/components/input/Button.css +0 -34
- package/dist/components/input/Button.debug.ts +0 -5
- package/dist/components/input/Button.tsx +0 -28
- package/dist/components/input/button.meta.ts +0 -14
- package/dist/components.json +0 -138
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import type {
|
|
2
|
+
import type { UiSettings } from "@g3nomaly/core/config";
|
|
3
3
|
import type { Dialogue, DialogueAnswers } from "@g3nomaly/core/cli";
|
|
4
4
|
import type { ProjectDeps } from "../adapter";
|
|
5
5
|
/**
|
|
@@ -18,27 +18,38 @@ declare const UiInitAnswersSchema: z.ZodObject<{
|
|
|
18
18
|
componentsDir: z.ZodString;
|
|
19
19
|
includeDebugFiles: z.ZodBoolean;
|
|
20
20
|
includeMetaFiles: z.ZodBoolean;
|
|
21
|
+
cssFile: z.ZodOptional<z.ZodString>;
|
|
22
|
+
useShadcn: z.ZodOptional<z.ZodBoolean>;
|
|
21
23
|
}, z.core.$strip>;
|
|
22
24
|
/**
|
|
23
|
-
* @brief Answers of the init dialogue, parsed into the
|
|
25
|
+
* @brief Answers of the init dialogue, parsed into the ui settings.
|
|
24
26
|
*
|
|
25
27
|
* @property componentsDir - Install directory, relative to the project root, e.g. `src/components`.
|
|
26
28
|
* @property includeDebugFiles - Whether `.debug.ts` files are installed with components.
|
|
27
29
|
* @property includeMetaFiles - Whether `.meta.ts` files are installed with components.
|
|
30
|
+
* @property cssFile - Global stylesheet theme tokens go into, relative to the project root; absent for none.
|
|
31
|
+
* @property useShadcn - Whether shadcn components are offered; asked only when `package.json` lists shadcn,
|
|
32
|
+
* absent to leave the setting as it is.
|
|
28
33
|
*/
|
|
29
34
|
export type UiInitAnswers = z.infer<typeof UiInitAnswersSchema>;
|
|
30
35
|
/**
|
|
31
36
|
* @brief Input of the init dialogue: the settings its steps start from.
|
|
32
37
|
*
|
|
33
|
-
* @property settings - Current
|
|
38
|
+
* @property settings - Current ui settings, the initial value of each step.
|
|
39
|
+
* @property shadcnInstalled - Whether the project's `package.json` lists the `shadcn` package.
|
|
40
|
+
* @property detectedCssFile - Global stylesheet found in the project, offered when none is set.
|
|
34
41
|
*/
|
|
35
42
|
interface UiInitInput extends Record<string, unknown> {
|
|
36
|
-
settings:
|
|
43
|
+
settings: UiSettings;
|
|
44
|
+
shadcnInstalled: boolean;
|
|
45
|
+
detectedCssFile?: string;
|
|
37
46
|
}
|
|
38
47
|
export declare const orphanDialogue: Dialogue;
|
|
39
48
|
export declare const initDialogue: Dialogue<UiInitInput>;
|
|
40
49
|
/**
|
|
41
|
-
* @brief Initializes the
|
|
50
|
+
* @brief Initializes the ui config in this project. The global stylesheet is detected and offered.
|
|
51
|
+
* When the project's `package.json` lists shadcn, shadcn components are offered too: after asking, or
|
|
52
|
+
* without asking when the install dir is preset.
|
|
42
53
|
*
|
|
43
54
|
* @param options - Force flag, install dir and preset answers.
|
|
44
55
|
* @param deps - Test injection.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKxD,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAO,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,QAAA,MAAM,mBAAmB;;;;;;iBAMvB,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;;;GAMG;AACH,UAAU,WAAY,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnD,QAAQ,EAAU,UAAU,CAAC;IAC7B,eAAe,EAAG,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAYD,eAAO,MAAM,cAAc,EAAE,QAQ5B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,WAAW,CAkC9C,CAAC;AAuDF;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFlG"}
|
|
@@ -8,12 +8,16 @@ import { configExists, loadConfig, resolveProjectRoot, saveConfig } from "@g3nom
|
|
|
8
8
|
import { entries as storeEntries, unregister } from "@g3nomaly/core/registry";
|
|
9
9
|
import { StepKind, c, orExit, runDialogue, runDialogueValue } from "@g3nomaly/core/cli";
|
|
10
10
|
import { loadInstallManifest, saveInstallManifest } from "@g3nomaly/core/installer";
|
|
11
|
-
import {
|
|
11
|
+
import { readDeclaredDependencies } from "@g3nomaly/core/sources";
|
|
12
|
+
import { SHADCN_SOURCE, uiManifestPath } from "../../registry/manifest";
|
|
12
13
|
import { ComponentMetaSchema } from "../../registry/types";
|
|
14
|
+
import { detectCssFile } from "../../theme/detectCssFile";
|
|
13
15
|
const UiInitAnswersSchema = z.object({
|
|
14
16
|
componentsDir: z.string().min(1),
|
|
15
17
|
includeDebugFiles: z.boolean(),
|
|
16
18
|
includeMetaFiles: z.boolean(),
|
|
19
|
+
cssFile: z.string().optional(),
|
|
20
|
+
useShadcn: z.boolean().optional(),
|
|
17
21
|
});
|
|
18
22
|
const reconfigureDialogue = {
|
|
19
23
|
steps: {
|
|
@@ -52,6 +56,19 @@ export const initDialogue = {
|
|
|
52
56
|
kind: StepKind.Confirm,
|
|
53
57
|
message: "Include .meta.ts files when installing components?",
|
|
54
58
|
initial: ({ settings }) => settings.includeMetaFiles,
|
|
59
|
+
next: "cssFile",
|
|
60
|
+
},
|
|
61
|
+
cssFile: {
|
|
62
|
+
kind: StepKind.Text,
|
|
63
|
+
message: "Global stylesheet that components add their theme tokens to (empty for none)?",
|
|
64
|
+
initial: ({ settings, detectedCssFile }) => settings.cssFile ?? detectedCssFile ?? "",
|
|
65
|
+
next: "useShadcn",
|
|
66
|
+
},
|
|
67
|
+
useShadcn: {
|
|
68
|
+
kind: StepKind.Confirm,
|
|
69
|
+
message: "shadcn is in package.json. Install shadcn components with g3n-ui too?",
|
|
70
|
+
initial: true,
|
|
71
|
+
when: ({ shadcnInstalled }) => shadcnInstalled,
|
|
55
72
|
},
|
|
56
73
|
},
|
|
57
74
|
};
|
|
@@ -65,7 +82,7 @@ function boolLabel(v) {
|
|
|
65
82
|
return v ? chalk.green("true") : chalk.dim("false");
|
|
66
83
|
}
|
|
67
84
|
/**
|
|
68
|
-
* @brief One printed line per
|
|
85
|
+
* @brief One printed line per ui setting.
|
|
69
86
|
*
|
|
70
87
|
* @param answers - The settings to print.
|
|
71
88
|
*/
|
|
@@ -74,12 +91,26 @@ function settingsLines(answers) {
|
|
|
74
91
|
` componentsDir: ${c.dir(answers.componentsDir)}`,
|
|
75
92
|
` includeDebugFiles: ${boolLabel(answers.includeDebugFiles)}`,
|
|
76
93
|
` includeMetaFiles: ${boolLabel(answers.includeMetaFiles)}`,
|
|
94
|
+
` cssFile: ${answers.cssFile === undefined ? chalk.dim("none") : c.file(answers.cssFile)}`,
|
|
95
|
+
` shadcn: ${boolLabel(answers.useShadcn === true)}`,
|
|
77
96
|
];
|
|
78
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* @brief The registered packages after init: shadcn added or dropped as answered, the rest kept.
|
|
100
|
+
*
|
|
101
|
+
* @param current - Packages registered now, e.g. `["shadcn"]`.
|
|
102
|
+
* @param useShadcn - The answer; `undefined` keeps `current`.
|
|
103
|
+
* @returns The packages to save, or `undefined` when nothing changes.
|
|
104
|
+
*/
|
|
105
|
+
function registeredPackagesAfter(current, useShadcn) {
|
|
106
|
+
if (useShadcn === undefined || useShadcn === current.includes(SHADCN_SOURCE))
|
|
107
|
+
return undefined;
|
|
108
|
+
return useShadcn ? [...current, SHADCN_SOURCE] : current.filter((name) => name !== SHADCN_SOURCE);
|
|
109
|
+
}
|
|
79
110
|
/**
|
|
80
111
|
* @brief The init answers that keep the current settings.
|
|
81
112
|
*
|
|
82
|
-
* @param settings - The current
|
|
113
|
+
* @param settings - The current ui settings.
|
|
83
114
|
* @returns Answers equal to the current settings.
|
|
84
115
|
*/
|
|
85
116
|
function currentAnswers(settings) {
|
|
@@ -87,16 +118,20 @@ function currentAnswers(settings) {
|
|
|
87
118
|
componentsDir: settings.componentsDir,
|
|
88
119
|
includeDebugFiles: settings.includeDebugFiles,
|
|
89
120
|
includeMetaFiles: settings.includeMetaFiles,
|
|
121
|
+
cssFile: settings.cssFile,
|
|
122
|
+
useShadcn: settings.registeredPackages.includes(SHADCN_SOURCE),
|
|
90
123
|
};
|
|
91
124
|
}
|
|
92
125
|
/**
|
|
93
|
-
* @brief Initializes the
|
|
126
|
+
* @brief Initializes the ui config in this project. The global stylesheet is detected and offered.
|
|
127
|
+
* When the project's `package.json` lists shadcn, shadcn components are offered too: after asking, or
|
|
128
|
+
* without asking when the install dir is preset.
|
|
94
129
|
*
|
|
95
130
|
* @param options - Force flag, install dir and preset answers.
|
|
96
131
|
* @param deps - Test injection.
|
|
97
132
|
*/
|
|
98
133
|
export async function initCommand(options = {}, deps = {}) {
|
|
99
|
-
p.intro(chalk.bold.cyan("
|
|
134
|
+
p.intro(chalk.bold.cyan("g3n-ui init"));
|
|
100
135
|
const projectRoot = (deps.resolveProjectRoot ?? resolveProjectRoot)();
|
|
101
136
|
if (projectRoot === null) {
|
|
102
137
|
console.error(chalk.red("Not inside a git repository — g3n projects are anchored to a repo. Run `git init` first."));
|
|
@@ -105,12 +140,19 @@ export async function initCommand(options = {}, deps = {}) {
|
|
|
105
140
|
}
|
|
106
141
|
const exists = await configExists(projectRoot);
|
|
107
142
|
const config = await loadConfig(projectRoot);
|
|
143
|
+
const shadcnInstalled = readDeclaredDependencies(projectRoot)[SHADCN_SOURCE] !== undefined;
|
|
144
|
+
const detectedCssFile = detectCssFile(projectRoot);
|
|
108
145
|
const preset = options.installDir === undefined
|
|
109
146
|
? null
|
|
110
|
-
: {
|
|
147
|
+
: {
|
|
148
|
+
...currentAnswers(config.ui.settings),
|
|
149
|
+
componentsDir: options.installDir,
|
|
150
|
+
cssFile: config.ui.settings.cssFile ?? detectedCssFile,
|
|
151
|
+
...(shadcnInstalled ? { useShadcn: true } : {}),
|
|
152
|
+
};
|
|
111
153
|
if (exists && !options.force && preset === null) {
|
|
112
154
|
console.log(chalk.bold("Current config:"));
|
|
113
|
-
for (const line of settingsLines(currentAnswers(config.
|
|
155
|
+
for (const line of settingsLines(currentAnswers(config.ui.settings)))
|
|
114
156
|
console.log(line);
|
|
115
157
|
console.log();
|
|
116
158
|
const reconfigure = await runDialogueValue(reconfigureDialogue, {}, options.answers);
|
|
@@ -124,18 +166,18 @@ export async function initCommand(options = {}, deps = {}) {
|
|
|
124
166
|
answers = preset;
|
|
125
167
|
}
|
|
126
168
|
else {
|
|
127
|
-
const record = await runDialogue(initDialogue, { settings: config.
|
|
169
|
+
const record = await runDialogue(initDialogue, { settings: config.ui.settings, shadcnInstalled, detectedCssFile }, options.answers);
|
|
128
170
|
if (typeof record === "symbol") {
|
|
129
171
|
p.outro(chalk.dim("Init cancelled."));
|
|
130
172
|
return;
|
|
131
173
|
}
|
|
132
|
-
|
|
174
|
+
const parsed = UiInitAnswersSchema.parse(record);
|
|
175
|
+
answers = { ...parsed, cssFile: parsed.cssFile?.trim() || undefined };
|
|
133
176
|
}
|
|
134
177
|
// A changed install dir orphans everything the old manifest tracks —
|
|
135
178
|
// confirm, then clear the manifest so stale entries cannot resurrect.
|
|
136
|
-
const oldSettings = config.
|
|
179
|
+
const oldSettings = config.ui.settings;
|
|
137
180
|
if (exists && oldSettings.componentsDir !== answers.componentsDir) {
|
|
138
|
-
await migrateLegacyManifest(projectRoot);
|
|
139
181
|
const manifest = orExit(() => loadInstallManifest(uiManifestPath(projectRoot), ComponentMetaSchema));
|
|
140
182
|
const orphaned = Object.keys(storeEntries(manifest.store)).sort();
|
|
141
183
|
if (orphaned.length > 0) {
|
|
@@ -152,16 +194,20 @@ export async function initCommand(options = {}, deps = {}) {
|
|
|
152
194
|
saveInstallManifest(manifest, ComponentMetaSchema);
|
|
153
195
|
}
|
|
154
196
|
}
|
|
197
|
+
const registeredPackages = registeredPackagesAfter(oldSettings.registeredPackages, answers.useShadcn);
|
|
155
198
|
await saveConfig(projectRoot, {
|
|
156
|
-
|
|
199
|
+
ui: {
|
|
157
200
|
settings: {
|
|
158
201
|
componentsDir: answers.componentsDir,
|
|
159
202
|
includeDebugFiles: answers.includeDebugFiles,
|
|
160
203
|
includeMetaFiles: answers.includeMetaFiles,
|
|
204
|
+
...(answers.cssFile === undefined ? {} : { cssFile: answers.cssFile }),
|
|
205
|
+
...(registeredPackages === undefined ? {} : { registeredPackages }),
|
|
161
206
|
},
|
|
162
207
|
},
|
|
163
208
|
});
|
|
164
209
|
fs.mkdirSync(path.join(projectRoot, ".g3n"), { recursive: true });
|
|
165
|
-
|
|
210
|
+
const saved = { ...answers, useShadcn: answers.useShadcn ?? oldSettings.registeredPackages.includes(SHADCN_SOURCE) };
|
|
211
|
+
p.outro([`Config written to ${c.file(".g3n.config.json")}`, ...settingsLines(saved)].join("\n"));
|
|
166
212
|
}
|
|
167
213
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { ProjectDeps } from "../adapter";
|
|
|
4
4
|
* @brief Options of `lsCommand`, on top of the core list options.
|
|
5
5
|
*
|
|
6
6
|
* @property installed - List what the manifest records instead of what the sources offer.
|
|
7
|
-
* @property source - Only the components of this source, e.g. `
|
|
7
|
+
* @property source - Only the components of this source, e.g. `g3n-ui`.
|
|
8
8
|
*/
|
|
9
9
|
export interface LsOptions extends LSOptions {
|
|
10
10
|
installed?: boolean;
|
package/dist/cli/commands/ls.js
CHANGED
|
@@ -14,7 +14,7 @@ export async function lsCommand(options = {}, deps = {}) {
|
|
|
14
14
|
lsEntries(installed, options);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
-
const registry = await openComponentRegistry(project, fileFlags(project), options.source);
|
|
17
|
+
const registry = await openComponentRegistry(project, fileFlags(project), { only: options.source });
|
|
18
18
|
try {
|
|
19
19
|
lsSourceRegistry(registry, uiSources(project), installed, options);
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAc7G;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAO,GAAc,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC7E,MAAM,OAAO,GAAK,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAc7G;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAO,GAAc,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC7E,MAAM,OAAO,GAAK,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC;QACH,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -43,7 +43,7 @@ export async function manifestCommand(deps = {}) {
|
|
|
43
43
|
process.exit(1);
|
|
44
44
|
}
|
|
45
45
|
console.log();
|
|
46
|
-
console.log(`${sym.search} Scanning ${c.dir(config.
|
|
46
|
+
console.log(`${sym.search} Scanning ${c.dir(config.ui.settings.componentsDir)}...`);
|
|
47
47
|
console.log();
|
|
48
48
|
const diskFiles = await glob("**/*", { cwd: target.installDir, nodir: true, absolute: false });
|
|
49
49
|
const registry = await openComponentRegistry(project, fileFlags(project));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/cli/commands/manifest.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAY7E;;;;;GAKG;AACH,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,YAAoB;IACjE,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;AACvE,CAAC;AAiBD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAI,GAAiB,EAAE;IAC3D,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/cli/commands/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,18 @@ import type { ProjectDeps } from "../adapter";
|
|
|
4
4
|
*
|
|
5
5
|
* @property name - Name to register under; derived from the source when absent.
|
|
6
6
|
* @property ref - Branch or tag a git source is pinned to.
|
|
7
|
+
* @property force - Point a name that is already registered at this source.
|
|
7
8
|
*/
|
|
8
9
|
export interface SourceAddOptions {
|
|
9
10
|
name?: string;
|
|
10
11
|
ref?: string;
|
|
12
|
+
force?: boolean;
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* @brief Registers a git repository, npm package or local folder holding a built
|
|
14
16
|
* `dist/components.json` as a component source, after checking it offers at
|
|
15
|
-
* least one component.
|
|
17
|
+
* least one component. An npm package must be in the project's `package.json`
|
|
18
|
+
* first, so `bun install` decides its version for every teammate.
|
|
16
19
|
*
|
|
17
20
|
* @param input - The source as typed, e.g. `owner/repo`, `npm:@scope/ui` or `./dist`.
|
|
18
21
|
* @param options - Name and ref of the source.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAG,MAAM,CAAC;IACf,GAAG,CAAC,EAAI,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3H;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7G;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhI"}
|
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
// packages/ui/src/cli/commands/source.ts
|
|
2
|
-
import { addSourceEntries, lsSources, removeSourceEntries } from "@g3nomaly/core/cli";
|
|
2
|
+
import { addSourceEntries, c, lineError, lsSources, removeSourceEntries } from "@g3nomaly/core/cli";
|
|
3
|
+
import { parseSourceSpec, readDeclaredDependencies } from "@g3nomaly/core/sources";
|
|
3
4
|
import { openUiProject, uiSourceContext } from "../adapter";
|
|
5
|
+
/**
|
|
6
|
+
* @brief The npm package a source names when the project's `package.json` does not declare it.
|
|
7
|
+
*
|
|
8
|
+
* @param projectRoot - Absolute project root holding the app's `package.json`.
|
|
9
|
+
* @param input - The source as typed.
|
|
10
|
+
* @returns The package name, or `null` when the source is not npm, is declared, or does not parse;
|
|
11
|
+
* `addSourceEntries` reports an input that does not parse.
|
|
12
|
+
*/
|
|
13
|
+
function undeclaredNpmPackage(projectRoot, input) {
|
|
14
|
+
let spec;
|
|
15
|
+
try {
|
|
16
|
+
spec = parseSourceSpec(input);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
if (spec.kind !== "npm")
|
|
22
|
+
return null;
|
|
23
|
+
return readDeclaredDependencies(projectRoot)[spec.package] === undefined ? spec.package : null;
|
|
24
|
+
}
|
|
4
25
|
/**
|
|
5
26
|
* @brief Registers a git repository, npm package or local folder holding a built
|
|
6
27
|
* `dist/components.json` as a component source, after checking it offers at
|
|
7
|
-
* least one component.
|
|
28
|
+
* least one component. An npm package must be in the project's `package.json`
|
|
29
|
+
* first, so `bun install` decides its version for every teammate.
|
|
8
30
|
*
|
|
9
31
|
* @param input - The source as typed, e.g. `owner/repo`, `npm:@scope/ui` or `./dist`.
|
|
10
32
|
* @param options - Name and ref of the source.
|
|
@@ -12,6 +34,11 @@ import { openUiProject, uiSourceContext } from "../adapter";
|
|
|
12
34
|
*/
|
|
13
35
|
export async function sourceAddCommand(input, options = {}, deps = {}) {
|
|
14
36
|
const project = await openUiProject(deps);
|
|
37
|
+
const pkg = undeclaredNpmPackage(project.projectRoot, input);
|
|
38
|
+
if (pkg !== null) {
|
|
39
|
+
console.error(lineError(`${c.key(pkg)} is not in package.json. Add it with ${c.cmd(`bun add ${pkg}`)} first, then register it.`));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
15
42
|
await addSourceEntries([project.target], input, options, uiSourceContext(project));
|
|
16
43
|
}
|
|
17
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgB5D;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,WAAmB,EAAE,KAAa;IAC9D,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,wBAAwB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACjG,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAAO,GAAqB,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC1G,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAO,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAClI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAO,GAAuB,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC5F,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAO,GAAwB,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC/G,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,mBAAmB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @brief Creates a component source from the template this package ships: a package.json, a build
|
|
3
|
+
* script and one example component whose comments explain how a source is written. Refuses to
|
|
4
|
+
* overwrite a file that already exists.
|
|
5
|
+
*
|
|
6
|
+
* @param dir - Folder to create the source in, relative to the working directory; created when missing.
|
|
7
|
+
*/
|
|
8
|
+
export declare function sourceInitCommand(dir?: string): void;
|
|
9
|
+
//# sourceMappingURL=sourceInit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourceInit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sourceInit.ts"],"names":[],"mappings":"AAuCA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAY,GAAG,IAAI,CAuCzD"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// packages/ui/src/cli/commands/sourceInit.ts
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { c, lineError, lineSuccess } from "@g3nomaly/core/cli";
|
|
6
|
+
import { findPackageRoot, readPackageMeta } from "@g3nomaly/core/utils";
|
|
7
|
+
import { UI_COMMAND } from "../adapter";
|
|
8
|
+
const TEMPLATE_DIR = "template";
|
|
9
|
+
const TemplatePackageSchema = z.looseObject({
|
|
10
|
+
name: z.string(),
|
|
11
|
+
devDependencies: z.record(z.string(), z.string()),
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* @brief Every file below a folder, as paths relative to it.
|
|
15
|
+
*
|
|
16
|
+
* @param dir - Absolute folder to list.
|
|
17
|
+
* @returns Relative file paths, e.g. `src/components/example/Example.tsx`.
|
|
18
|
+
*/
|
|
19
|
+
function listFiles(dir) {
|
|
20
|
+
return fs.readdirSync(dir, { recursive: true, withFileTypes: true })
|
|
21
|
+
.filter((entry) => entry.isFile())
|
|
22
|
+
.map((entry) => path.relative(dir, path.join(entry.parentPath, entry.name)))
|
|
23
|
+
.sort();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @brief An npm package name from a folder name: lowercase, with anything npm rejects replaced by `-`.
|
|
27
|
+
*
|
|
28
|
+
* @param folder - Absolute folder the source is created in.
|
|
29
|
+
* @returns The name, e.g. `my-ui` for `/home/me/My UI`.
|
|
30
|
+
*/
|
|
31
|
+
function packageNameFor(folder) {
|
|
32
|
+
const name = path.basename(folder).toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^[._-]+/, "");
|
|
33
|
+
return name === "" ? "my-components" : name;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @brief Creates a component source from the template this package ships: a package.json, a build
|
|
37
|
+
* script and one example component whose comments explain how a source is written. Refuses to
|
|
38
|
+
* overwrite a file that already exists.
|
|
39
|
+
*
|
|
40
|
+
* @param dir - Folder to create the source in, relative to the working directory; created when missing.
|
|
41
|
+
*/
|
|
42
|
+
export function sourceInitCommand(dir = ".") {
|
|
43
|
+
const target = path.resolve(dir);
|
|
44
|
+
const template = path.join(findPackageRoot(import.meta.dir), TEMPLATE_DIR);
|
|
45
|
+
const files = listFiles(template);
|
|
46
|
+
const existing = files.filter((file) => fs.existsSync(path.join(target, file)));
|
|
47
|
+
if (existing.length > 0) {
|
|
48
|
+
console.error(lineError(`${c.dir(target)} already has ${existing.map((f) => c.file(f)).join(", ")}, nothing written`));
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
for (const file of files) {
|
|
52
|
+
fs.mkdirSync(path.dirname(path.join(target, file)), { recursive: true });
|
|
53
|
+
fs.copyFileSync(path.join(template, file), path.join(target, file));
|
|
54
|
+
}
|
|
55
|
+
const manifestPath = path.join(target, "package.json");
|
|
56
|
+
const raw = JSON.parse(fs.readFileSync(manifestPath, "utf8"));
|
|
57
|
+
const parsed = TemplatePackageSchema.parse(raw);
|
|
58
|
+
const name = packageNameFor(target);
|
|
59
|
+
// Spread over the file as read, so its keys keep their order.
|
|
60
|
+
const manifest = {
|
|
61
|
+
...z.record(z.string(), z.unknown()).parse(raw),
|
|
62
|
+
name,
|
|
63
|
+
devDependencies: { ...parsed.devDependencies, "@g3nomaly/ui": `^${readPackageMeta(import.meta.url).version}` },
|
|
64
|
+
};
|
|
65
|
+
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + "\n");
|
|
66
|
+
const spec = /\s/.test(target) ? `"file:${target}"` : `file:${target}`;
|
|
67
|
+
console.log(lineSuccess(`Created the source ${c.key(name)} in ${c.dir(target)}`));
|
|
68
|
+
console.log([
|
|
69
|
+
"",
|
|
70
|
+
"Next steps:",
|
|
71
|
+
` ${c.cmd("bun install && bun run build")} in the source`,
|
|
72
|
+
` ${c.cmd(`bun add ${spec}`)} in an app, or add the source to its workspace`,
|
|
73
|
+
` ${c.cmd(`${UI_COMMAND} source add npm:${name}`)} in an app`,
|
|
74
|
+
"",
|
|
75
|
+
`Start in ${c.file("src/components/example/example.meta.ts")}: its comments explain each part.`,
|
|
76
|
+
].join("\n"));
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=sourceInit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourceInit.js","sourceRoot":"","sources":["../../../src/cli/commands/sourceInit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import type { InstallOptions } from "@g3nomaly/core/cli";
|
|
2
2
|
import type { ProjectDeps } from "../adapter";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* @brief Options of `updateCommand`, on top of the core install options.
|
|
5
|
+
*
|
|
6
|
+
* @property install - Add the npm packages the components need with `bun add`, instead of only reporting them.
|
|
7
|
+
*/
|
|
4
8
|
export interface UpdateOptions extends InstallOptions {
|
|
9
|
+
install?: boolean;
|
|
5
10
|
}
|
|
6
11
|
/**
|
|
7
12
|
* @brief Re-installs installed components from the source each one was installed
|
|
8
13
|
* from; with no names, everything installed. Files the user changed since
|
|
9
|
-
* install are kept unless overwritten.
|
|
14
|
+
* install are kept unless overwritten. npm packages the updated components need
|
|
15
|
+
* and the app lacks are reported afterwards, or added with `install`, and
|
|
16
|
+
* their theme tokens are added to the app's stylesheet.
|
|
10
17
|
*
|
|
11
18
|
* @param names - Installed component keys to update; empty for everything installed.
|
|
12
|
-
* @param options - Force
|
|
19
|
+
* @param options - Force, dry-run and install flags.
|
|
13
20
|
* @param deps - Test injection.
|
|
14
21
|
*/
|
|
15
22
|
export declare function updateCommand(names: string[], options?: UpdateOptions, deps?: ProjectDeps): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvH"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
// packages/ui/src/cli/commands/update.ts
|
|
2
2
|
import { updateFromSources } from "@g3nomaly/core/cli";
|
|
3
|
-
import {
|
|
3
|
+
import { fileFlags, openComponentRegistry, openUiProject, uiInstallContext } from "../adapter";
|
|
4
|
+
import { afterComponentInstall } from "../afterInstall";
|
|
4
5
|
/**
|
|
5
6
|
* @brief Re-installs installed components from the source each one was installed
|
|
6
7
|
* from; with no names, everything installed. Files the user changed since
|
|
7
|
-
* install are kept unless overwritten.
|
|
8
|
+
* install are kept unless overwritten. npm packages the updated components need
|
|
9
|
+
* and the app lacks are reported afterwards, or added with `install`, and
|
|
10
|
+
* their theme tokens are added to the app's stylesheet.
|
|
8
11
|
*
|
|
9
12
|
* @param names - Installed component keys to update; empty for everything installed.
|
|
10
|
-
* @param options - Force
|
|
13
|
+
* @param options - Force, dry-run and install flags.
|
|
11
14
|
* @param deps - Test injection.
|
|
12
15
|
*/
|
|
13
16
|
export async function updateCommand(names, options = {}, deps = {}) {
|
|
14
17
|
const project = await openUiProject(deps);
|
|
15
|
-
|
|
18
|
+
const fetchedByKey = new Map();
|
|
19
|
+
const check = afterComponentInstall(project, fetchedByKey, { install: options.install === true, includeUnsafe: false });
|
|
20
|
+
await updateFromSources([project.target], names, () => openComponentRegistry(project, fileFlags(project), { packLocal: options.dryRun !== true }), options, uiInstallContext(fetchedByKey), check);
|
|
16
21
|
}
|
|
17
22
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe,EAAE,OAAO,GAAkB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACtG,MAAM,OAAO,GAAQ,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC/D,MAAM,KAAK,GAAU,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/H,MAAM,iBAAiB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;AACrM,CAAC"}
|