agnosticui-cli 2.0.0-alpha.2 → 2.0.0-alpha.21
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 +124 -1170
- package/dist/cli.js +70 -28
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +25 -34
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/context.d.ts +3 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +243 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +145 -110
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +4 -4
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/playbook.d.ts +3 -0
- package/dist/commands/playbook.d.ts.map +1 -0
- package/dist/commands/playbook.js +189 -0
- package/dist/commands/playbook.js.map +1 -0
- package/dist/commands/remove.js +2 -2
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/storybook.d.ts +3 -0
- package/dist/commands/storybook.d.ts.map +1 -0
- package/dist/commands/storybook.js +144 -0
- package/dist/commands/storybook.js.map +1 -0
- package/dist/commands/sync.d.ts +1 -4
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +41 -33
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/view.d.ts +3 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +109 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/types/index.d.ts +24 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/npm.d.ts +13 -0
- package/dist/utils/npm.d.ts.map +1 -0
- package/dist/utils/npm.js +62 -0
- package/dist/utils/npm.js.map +1 -0
- package/dist/utils/stories.d.ts +11 -0
- package/dist/utils/stories.d.ts.map +1 -0
- package/dist/utils/stories.js +661 -0
- package/dist/utils/stories.js.map +1 -0
- package/dist/utils/viewer.d.ts +4 -0
- package/dist/utils/viewer.d.ts.map +1 -0
- package/dist/utils/viewer.js +1067 -0
- package/dist/utils/viewer.js.map +1 -0
- package/package.json +7 -5
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ag playbook command - Install a playbook into the local project
|
|
3
|
+
*/
|
|
4
|
+
import * as p from '@clack/prompts';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
|
+
import { logger } from '../utils/logger.js';
|
|
9
|
+
import pc from 'picocolors';
|
|
10
|
+
const MANIFEST_URL = 'https://raw.githubusercontent.com/AgnosticUI/agnosticui/master/v2/playbooks-manifest.json';
|
|
11
|
+
const DEFAULT_DEST = 'src/playbooks';
|
|
12
|
+
function applyReplacements(text, replacements) {
|
|
13
|
+
if (!replacements)
|
|
14
|
+
return text;
|
|
15
|
+
for (const [from, to] of Object.entries(replacements)) {
|
|
16
|
+
text = text.split(from).join(to);
|
|
17
|
+
}
|
|
18
|
+
return text;
|
|
19
|
+
}
|
|
20
|
+
async function fetchManifest() {
|
|
21
|
+
const res = await fetch(MANIFEST_URL);
|
|
22
|
+
if (!res.ok) {
|
|
23
|
+
throw new Error(`Failed to fetch playbooks manifest (HTTP ${res.status})`);
|
|
24
|
+
}
|
|
25
|
+
return res.json();
|
|
26
|
+
}
|
|
27
|
+
async function fetchText(url) {
|
|
28
|
+
const res = await fetch(url);
|
|
29
|
+
if (!res.ok)
|
|
30
|
+
return null;
|
|
31
|
+
return res.text();
|
|
32
|
+
}
|
|
33
|
+
async function fetchBinary(url) {
|
|
34
|
+
const res = await fetch(url);
|
|
35
|
+
if (!res.ok)
|
|
36
|
+
return null;
|
|
37
|
+
const ab = await res.arrayBuffer();
|
|
38
|
+
return Buffer.from(ab);
|
|
39
|
+
}
|
|
40
|
+
function isBinary(filePath) {
|
|
41
|
+
return /\.(jpg|jpeg|png|gif|webp|ico|svg|woff|woff2|ttf|eot|pdf)$/i.test(filePath);
|
|
42
|
+
}
|
|
43
|
+
export async function playbook(slug, options = {}) {
|
|
44
|
+
console.log('');
|
|
45
|
+
p.intro(pc.bold(pc.cyan('AgnosticUI Playbooks')));
|
|
46
|
+
const spinner = p.spinner();
|
|
47
|
+
spinner.start('Fetching playbooks manifest...');
|
|
48
|
+
let manifest;
|
|
49
|
+
try {
|
|
50
|
+
manifest = await fetchManifest();
|
|
51
|
+
spinner.stop(pc.green('✓') + ' Manifest loaded');
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
spinner.stop(pc.red('✖') + ' Failed to load manifest');
|
|
55
|
+
logger.error(`${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
56
|
+
logger.info('Check your internet connection and try again.');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const { playbooks, githubRawBase } = manifest;
|
|
60
|
+
// --list or no slug: show available playbooks
|
|
61
|
+
if (options.list || !slug) {
|
|
62
|
+
console.log('');
|
|
63
|
+
logger.box('Available Playbooks:', [
|
|
64
|
+
...Object.entries(playbooks).map(([key, entry]) => {
|
|
65
|
+
const frameworks = Object.keys(entry.frameworks).join(', ');
|
|
66
|
+
return ` ${pc.cyan(key.padEnd(20))} ${pc.dim(entry.title)} ${pc.dim('[' + frameworks + ']')}`;
|
|
67
|
+
}),
|
|
68
|
+
'',
|
|
69
|
+
pc.dim('Install with: npx agnosticui-cli playbook <slug> --framework <react|vue|lit>'),
|
|
70
|
+
]);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Validate slug
|
|
74
|
+
const playbookEntry = playbooks[slug];
|
|
75
|
+
if (!playbookEntry) {
|
|
76
|
+
logger.error(`Unknown playbook: "${slug}"`);
|
|
77
|
+
logger.info('Run ' + pc.cyan('npx agnosticui-cli playbook --list') + ' to see available playbooks.');
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
// Resolve framework
|
|
81
|
+
let framework = options.framework;
|
|
82
|
+
const availableFrameworks = Object.keys(playbookEntry.frameworks);
|
|
83
|
+
if (!framework) {
|
|
84
|
+
const choice = await p.select({
|
|
85
|
+
message: 'Which framework?',
|
|
86
|
+
options: availableFrameworks.map(fw => ({ value: fw, label: fw })),
|
|
87
|
+
});
|
|
88
|
+
if (p.isCancel(choice)) {
|
|
89
|
+
p.cancel('Operation cancelled.');
|
|
90
|
+
process.exit(0);
|
|
91
|
+
}
|
|
92
|
+
framework = choice;
|
|
93
|
+
}
|
|
94
|
+
if (!availableFrameworks.includes(framework)) {
|
|
95
|
+
logger.error(`Framework "${framework}" is not available for playbook "${slug}".`);
|
|
96
|
+
logger.info(`Available: ${availableFrameworks.join(', ')}`);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
const fwEntry = playbookEntry.frameworks[framework];
|
|
100
|
+
const basePath = playbookEntry.basePath || slug;
|
|
101
|
+
const destRoot = path.resolve(process.cwd(), options.path || path.join(DEFAULT_DEST, slug));
|
|
102
|
+
// Warn if destination exists
|
|
103
|
+
if (existsSync(destRoot) && !options.force) {
|
|
104
|
+
const overwrite = await p.confirm({
|
|
105
|
+
message: `${pc.yellow(destRoot)} already exists. Overwrite?`,
|
|
106
|
+
initialValue: false,
|
|
107
|
+
});
|
|
108
|
+
if (p.isCancel(overwrite) || !overwrite) {
|
|
109
|
+
p.cancel('Operation cancelled.');
|
|
110
|
+
process.exit(0);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const fileBaseUrl = `${githubRawBase}/${basePath}/${fwEntry.dir}`;
|
|
114
|
+
const totalFiles = fwEntry.files.length + Object.keys(playbookEntry.externalFiles || {}).length;
|
|
115
|
+
spinner.start(`Installing ${pc.cyan(playbookEntry.title)} (${framework}) — ${totalFiles} file(s)...`);
|
|
116
|
+
let written = 0;
|
|
117
|
+
let failed = 0;
|
|
118
|
+
// Fetch and write playbook files
|
|
119
|
+
for (const file of fwEntry.files) {
|
|
120
|
+
const url = `${fileBaseUrl}/${file}`;
|
|
121
|
+
const dest = path.join(destRoot, file);
|
|
122
|
+
try {
|
|
123
|
+
await mkdir(path.dirname(dest), { recursive: true });
|
|
124
|
+
if (isBinary(file)) {
|
|
125
|
+
const data = await fetchBinary(url);
|
|
126
|
+
if (data) {
|
|
127
|
+
await writeFile(dest, data);
|
|
128
|
+
written++;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
failed++;
|
|
132
|
+
logger.warn(` Skipped (not found): ${file}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
let text = await fetchText(url);
|
|
137
|
+
if (text !== null) {
|
|
138
|
+
text = applyReplacements(text, playbookEntry.contentReplacements);
|
|
139
|
+
await writeFile(dest, text, 'utf-8');
|
|
140
|
+
written++;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
failed++;
|
|
144
|
+
logger.warn(` Skipped (not found): ${file}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
failed++;
|
|
150
|
+
logger.warn(` Failed: ${file} — ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
151
|
+
}
|
|
152
|
+
spinner.message(`Installing ${pc.cyan(playbookEntry.title)} (${framework}) — ${written}/${totalFiles} written...`);
|
|
153
|
+
}
|
|
154
|
+
// Fetch external files (e.g. skin-switcher helpers)
|
|
155
|
+
for (const [destRelPath, srcUrl] of Object.entries(playbookEntry.externalFiles || {})) {
|
|
156
|
+
const dest = path.join(destRoot, destRelPath);
|
|
157
|
+
try {
|
|
158
|
+
await mkdir(path.dirname(dest), { recursive: true });
|
|
159
|
+
let text = await fetchText(srcUrl);
|
|
160
|
+
if (text !== null) {
|
|
161
|
+
text = applyReplacements(text, playbookEntry.contentReplacements);
|
|
162
|
+
await writeFile(dest, text, 'utf-8');
|
|
163
|
+
written++;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
failed++;
|
|
167
|
+
logger.warn(` Skipped external (not found): ${destRelPath}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
failed++;
|
|
172
|
+
logger.warn(` Failed external: ${destRelPath} — ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
173
|
+
}
|
|
174
|
+
spinner.message(`Installing ${pc.cyan(playbookEntry.title)} (${framework}) — ${written}/${totalFiles} written...`);
|
|
175
|
+
}
|
|
176
|
+
spinner.stop(pc.green('✓') + ` Installed ${written} file(s)${failed > 0 ? pc.yellow(` (${failed} skipped)`) : ''}`);
|
|
177
|
+
logger.newline();
|
|
178
|
+
logger.box(`Playbook installed: ${playbookEntry.title} (${framework})`, [
|
|
179
|
+
pc.dim('Location: ') + pc.cyan(path.relative(process.cwd(), destRoot)),
|
|
180
|
+
'',
|
|
181
|
+
pc.dim('The playbook is a self-contained Vite project. To run it:'),
|
|
182
|
+
' ' + logger.command(`cd ${path.relative(process.cwd(), destRoot)}`),
|
|
183
|
+
' ' + logger.command('npm install'),
|
|
184
|
+
' ' + logger.command('npm run dev'),
|
|
185
|
+
'',
|
|
186
|
+
pc.dim('Or use the files as a reference and copy what you need into your project.'),
|
|
187
|
+
]);
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=playbook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playbook.js","sourceRoot":"","sources":["../../src/commands/playbook.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/remove.js
CHANGED
|
@@ -14,7 +14,7 @@ export async function remove(componentNames, options = {}) {
|
|
|
14
14
|
const config = await loadConfig();
|
|
15
15
|
if (!config) {
|
|
16
16
|
logger.error('AgnosticUI is not initialized in this project.');
|
|
17
|
-
logger.info('Run ' + pc.cyan('npx
|
|
17
|
+
logger.info('Run ' + pc.cyan('npx agnosticui-cli init') + ' to get started.');
|
|
18
18
|
process.exit(1);
|
|
19
19
|
}
|
|
20
20
|
const componentsPath = path.resolve(config.paths.components);
|
|
@@ -23,7 +23,7 @@ export async function remove(componentNames, options = {}) {
|
|
|
23
23
|
const notAdded = normalizedNames.filter(name => !hasComponent(config, name));
|
|
24
24
|
if (notAdded.length > 0) {
|
|
25
25
|
logger.error(`Component(s) not found: ${notAdded.join(', ')}`);
|
|
26
|
-
logger.info('Run ' + pc.cyan('npx
|
|
26
|
+
logger.info('Run ' + pc.cyan('npx agnosticui-cli list') + ' to see installed components.');
|
|
27
27
|
// Filter out not added components
|
|
28
28
|
const toRemove = normalizedNames.filter(name => hasComponent(config, name));
|
|
29
29
|
if (toRemove.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,yBAAyB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,cAAwB,EAAE,UAAyB,EAAE;IAChF,cAAc;IACd,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/commands/storybook.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiJ7E"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ag storybook command - Set up Storybook for installed components
|
|
3
|
+
*/
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
7
|
+
import { execSync } from 'node:child_process';
|
|
8
|
+
import * as p from '@clack/prompts';
|
|
9
|
+
import pc from 'picocolors';
|
|
10
|
+
import { loadConfig } from '../utils/config.js';
|
|
11
|
+
import { logger } from '../utils/logger.js';
|
|
12
|
+
import { ensureDir } from '../utils/files.js';
|
|
13
|
+
import { generateStorybookMain, generateStorybookPreview, generateReactStory } from '../utils/stories.js';
|
|
14
|
+
export async function storybook(options = {}) {
|
|
15
|
+
const skipInstall = options.skipInstall ?? false;
|
|
16
|
+
p.intro(pc.bold(pc.cyan('AgnosticUI Storybook Setup')));
|
|
17
|
+
// Require initialized project
|
|
18
|
+
const config = await loadConfig();
|
|
19
|
+
if (!config) {
|
|
20
|
+
logger.error('AgnosticUI is not initialized in this project.');
|
|
21
|
+
logger.info('Run ' + pc.cyan('npx agnosticui-cli init') + ' to get started.');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
const cwd = process.cwd();
|
|
25
|
+
const storybookConfigDir = path.join(cwd, '.storybook');
|
|
26
|
+
const mainTsPath = path.join(storybookConfigDir, 'main.ts');
|
|
27
|
+
const previewTsPath = path.join(storybookConfigDir, 'preview.ts');
|
|
28
|
+
const componentsAbsPath = path.resolve(cwd, config.paths.components);
|
|
29
|
+
const alreadyConfigured = existsSync(mainTsPath);
|
|
30
|
+
if (alreadyConfigured) {
|
|
31
|
+
logger.info('Storybook already configured (.storybook/main.ts exists). Skipping install and config steps.');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// Install packages
|
|
35
|
+
if (skipInstall) {
|
|
36
|
+
logger.info('Skipping npm install (--skip-install flag set).');
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
let installCmd;
|
|
40
|
+
if (config.framework === 'react') {
|
|
41
|
+
installCmd = 'npm install --save-dev storybook@^10 @storybook/react-vite@^10 @storybook/addon-docs@^10 @storybook/addon-a11y@^10';
|
|
42
|
+
}
|
|
43
|
+
else if (config.framework === 'vue') {
|
|
44
|
+
installCmd = 'npm install --save-dev storybook@^10 @storybook/vue3-vite@^10 @storybook/addon-docs@^10 @storybook/addon-a11y@^10';
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
installCmd = 'npm install --save-dev storybook@^10 @storybook/web-components-vite@^10 @storybook/addon-docs@^10 @storybook/addon-a11y@^10';
|
|
48
|
+
}
|
|
49
|
+
const installSpinner = p.spinner();
|
|
50
|
+
installSpinner.start('Installing Storybook packages...');
|
|
51
|
+
try {
|
|
52
|
+
execSync(installCmd, { cwd, stdio: 'pipe' });
|
|
53
|
+
installSpinner.stop(pc.green('✓') + ' Storybook packages installed');
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
installSpinner.stop(pc.red('✖') + ' Failed to install Storybook packages');
|
|
57
|
+
logger.error(`npm install failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
58
|
+
logger.info('Try running with ' + pc.cyan('--skip-install') + ' if packages are already installed.');
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Write .storybook/main.ts
|
|
63
|
+
await ensureDir(storybookConfigDir);
|
|
64
|
+
const mainContent = generateStorybookMain(config.framework);
|
|
65
|
+
await writeFile(mainTsPath, mainContent, 'utf-8');
|
|
66
|
+
logger.info(pc.green('✓') + ' Written .storybook/main.ts');
|
|
67
|
+
// Write .storybook/preview.ts
|
|
68
|
+
// Compute relative path from .storybook/ to the components styles directory
|
|
69
|
+
// e.g. components at src/components/ag -> ../src/components/ag
|
|
70
|
+
const componentsRelFromStorybook = path.relative(storybookConfigDir, componentsAbsPath);
|
|
71
|
+
// Normalize to forward slashes for use in import strings
|
|
72
|
+
const componentsRelForImport = componentsRelFromStorybook.split(path.sep).join('/');
|
|
73
|
+
const previewContent = generateStorybookPreview(config.framework, componentsRelForImport);
|
|
74
|
+
await writeFile(previewTsPath, previewContent, 'utf-8');
|
|
75
|
+
logger.info(pc.green('✓') + ' Written .storybook/preview.ts');
|
|
76
|
+
// Add storybook script to package.json
|
|
77
|
+
const pkgJsonPath = path.join(cwd, 'package.json');
|
|
78
|
+
if (existsSync(pkgJsonPath)) {
|
|
79
|
+
try {
|
|
80
|
+
const pkgRaw = await readFile(pkgJsonPath, 'utf-8');
|
|
81
|
+
const pkg = JSON.parse(pkgRaw);
|
|
82
|
+
if (!pkg.scripts) {
|
|
83
|
+
pkg.scripts = {};
|
|
84
|
+
}
|
|
85
|
+
if (!pkg.scripts.storybook) {
|
|
86
|
+
pkg.scripts.storybook = 'storybook dev -p 6006';
|
|
87
|
+
await writeFile(pkgJsonPath, JSON.stringify(pkg, null, 2) + '\n', 'utf-8');
|
|
88
|
+
logger.info(pc.green('✓') + ' Added "storybook" script to package.json');
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
logger.info('package.json already has a "storybook" script. Leaving it unchanged.');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
logger.warn(`Could not update package.json: ${err instanceof Error ? err.message : String(err)}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Generate per-component story files (React only for now)
|
|
100
|
+
const installedComponentNames = Object.keys(config.components);
|
|
101
|
+
if (config.framework !== 'react') {
|
|
102
|
+
logger.info(pc.dim(`Per-component story generation is coming soon for ${config.framework}. ` +
|
|
103
|
+
'You can run Storybook now and add story files manually.'));
|
|
104
|
+
logger.newline();
|
|
105
|
+
logger.box('Storybook ready', [
|
|
106
|
+
pc.dim(`Framework: ${config.framework}`),
|
|
107
|
+
'',
|
|
108
|
+
pc.green('Run: npm run storybook'),
|
|
109
|
+
]);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (installedComponentNames.length === 0) {
|
|
113
|
+
logger.warn('No components installed yet.');
|
|
114
|
+
logger.info('Run ' + pc.cyan('npx agnosticui-cli add button') + ' to add components first.');
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const genSpinner = p.spinner();
|
|
118
|
+
genSpinner.start(`Generating story files for ${installedComponentNames.length} component(s)...`);
|
|
119
|
+
let generated = 0;
|
|
120
|
+
let skipped = 0;
|
|
121
|
+
for (const name of installedComponentNames) {
|
|
122
|
+
const storyPath = path.join(componentsAbsPath, name, 'react', `${name}.stories.tsx`);
|
|
123
|
+
if (existsSync(storyPath)) {
|
|
124
|
+
skipped++;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const content = generateReactStory(name);
|
|
128
|
+
await writeFile(storyPath, content, 'utf-8');
|
|
129
|
+
generated++;
|
|
130
|
+
}
|
|
131
|
+
genSpinner.stop(pc.green('✓') +
|
|
132
|
+
` Stories generated: ${generated} written, ${skipped} skipped (already exist)`);
|
|
133
|
+
logger.newline();
|
|
134
|
+
logger.box('Storybook ready', [
|
|
135
|
+
pc.dim(`Framework: ${config.framework}`),
|
|
136
|
+
pc.dim(`Components: ${installedComponentNames.length}`),
|
|
137
|
+
pc.dim(`Stories: ${generated} generated, ${skipped} skipped`),
|
|
138
|
+
'',
|
|
139
|
+
pc.green('Run: npm run storybook'),
|
|
140
|
+
'',
|
|
141
|
+
pc.dim('Storybook will start on http://localhost:6006'),
|
|
142
|
+
]);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=storybook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../src/commands/storybook.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/sync.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2JnE"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ag sync command - Update reference library from tarball
|
|
2
|
+
* ag sync command - Update reference library from NPM or a local tarball
|
|
3
3
|
*/
|
|
4
4
|
import * as p from '@clack/prompts';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
-
import { existsSync } from 'node:fs';
|
|
7
6
|
import { logger } from '../utils/logger.js';
|
|
8
7
|
import { loadConfig, saveConfig } from '../utils/config.js';
|
|
9
8
|
import { extractTarball, ensureDir, pathExists } from '../utils/files.js';
|
|
9
|
+
import { determineTarballPath, cleanupTempDownload } from '../utils/npm.js';
|
|
10
10
|
import pc from 'picocolors';
|
|
11
11
|
const DEFAULT_REFERENCE_PATH = './agnosticui';
|
|
12
12
|
export async function sync(options = {}) {
|
|
@@ -16,51 +16,57 @@ export async function sync(options = {}) {
|
|
|
16
16
|
const config = await loadConfig();
|
|
17
17
|
if (!config) {
|
|
18
18
|
logger.error('AgnosticUI is not initialized in this project.');
|
|
19
|
-
logger.info('Run ' + pc.cyan('npx
|
|
19
|
+
logger.info('Run ' + pc.cyan('npx agnosticui-cli init') + ' to initialize first.');
|
|
20
20
|
process.exit(1);
|
|
21
21
|
}
|
|
22
|
-
//
|
|
23
|
-
let tarballPath = options.tarball;
|
|
22
|
+
// Resolve tarball path: explicit --tarball > NPM download
|
|
23
|
+
let tarballPath = options.tarball ?? null;
|
|
24
24
|
if (!tarballPath) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
logger.
|
|
25
|
+
const version = options.tag ?? 'alpha';
|
|
26
|
+
tarballPath = await determineTarballPath(version);
|
|
27
|
+
if (!tarballPath) {
|
|
28
|
+
logger.error('Could not find AgnosticUI tarball.');
|
|
29
|
+
logger.info('Specify a version: ' + pc.cyan(`npx agnosticui-cli sync --version ${version}`));
|
|
30
|
+
logger.info('Or a local tarball: ' + pc.cyan('npx agnosticui-cli sync --tarball /path/to/tarball.tgz'));
|
|
29
31
|
process.exit(1);
|
|
30
32
|
}
|
|
31
|
-
tarballPath = config.tarball.source;
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
34
|
+
else {
|
|
35
|
+
// Explicit --tarball: resolve to absolute path and verify it exists
|
|
36
|
+
tarballPath = path.resolve(tarballPath);
|
|
37
|
+
logger.newline();
|
|
38
|
+
logger.info('Using tarball at:');
|
|
39
|
+
console.log(' ' + pc.dim(tarballPath));
|
|
40
|
+
logger.newline();
|
|
41
|
+
if (!pathExists(tarballPath)) {
|
|
42
|
+
logger.error('Tarball not found at specified path!');
|
|
43
|
+
logger.info('Run without --tarball to download the latest from NPM:');
|
|
44
|
+
logger.info(' ' + pc.cyan('npx agnosticui-cli sync'));
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
45
47
|
}
|
|
46
|
-
// Read version from tarball (extract to temp dir first
|
|
48
|
+
// Read version from tarball (extract to temp dir first)
|
|
47
49
|
let tarballVersion = 'unknown';
|
|
48
50
|
const tempExtractPath = path.join(DEFAULT_REFERENCE_PATH, '.temp-sync');
|
|
49
51
|
try {
|
|
50
52
|
await ensureDir(tempExtractPath);
|
|
51
53
|
await extractTarball(tarballPath, tempExtractPath);
|
|
54
|
+
const { readFile } = await import('node:fs/promises');
|
|
52
55
|
const versionJsonPath = path.join(tempExtractPath, 'version.json');
|
|
56
|
+
const packageJsonPath = path.join(tempExtractPath, 'package.json');
|
|
53
57
|
if (pathExists(versionJsonPath)) {
|
|
54
|
-
const { readFile } = await import('node:fs/promises');
|
|
55
58
|
const versionData = JSON.parse(await readFile(versionJsonPath, 'utf-8'));
|
|
56
59
|
tarballVersion = versionData.version || tarballVersion;
|
|
57
60
|
}
|
|
61
|
+
else if (pathExists(packageJsonPath)) {
|
|
62
|
+
const packageData = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
|
|
63
|
+
tarballVersion = packageData.version || tarballVersion;
|
|
64
|
+
}
|
|
58
65
|
// Clean up temp extraction
|
|
59
66
|
const { rm } = await import('node:fs/promises');
|
|
60
67
|
await rm(tempExtractPath, { recursive: true, force: true });
|
|
61
68
|
}
|
|
62
|
-
catch
|
|
63
|
-
// If we can't read version, continue anyway
|
|
69
|
+
catch {
|
|
64
70
|
logger.warn('Could not read version from tarball, continuing...');
|
|
65
71
|
}
|
|
66
72
|
logger.info(pc.green('✓') + ` Found tarball (version ${pc.cyan(tarballVersion)})`);
|
|
@@ -94,8 +100,6 @@ export async function sync(options = {}) {
|
|
|
94
100
|
for (const tokenFile of tokenFiles) {
|
|
95
101
|
const srcFile = path.join(tokensSourcePath, tokenFile);
|
|
96
102
|
const destFile = path.join(stylesPath, tokenFile);
|
|
97
|
-
// console.log(' ' + pc.cyan('✓') + ' srcFile → ' + pc.dim(srcFile));
|
|
98
|
-
// console.log(' ' + pc.cyan('✓') + ' destFile → ' + pc.dim(destFile));
|
|
99
103
|
if (pathExists(srcFile)) {
|
|
100
104
|
const { copyFile } = await import('node:fs/promises');
|
|
101
105
|
await copyFile(srcFile, destFile);
|
|
@@ -110,20 +114,19 @@ export async function sync(options = {}) {
|
|
|
110
114
|
const destDir = path.join(componentsPath, dir);
|
|
111
115
|
if (pathExists(srcDir)) {
|
|
112
116
|
await copyDirectoryFiltered(srcDir, destDir, {
|
|
113
|
-
exclude: ['*.spec.ts', '*.spec.js']
|
|
117
|
+
exclude: ['*.spec.ts', '*.spec.js'],
|
|
114
118
|
});
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
|
-
// Update config with new
|
|
121
|
+
// Update config with new version info
|
|
118
122
|
spinner.message('Updating configuration...');
|
|
119
123
|
config.tarball = {
|
|
120
|
-
source:
|
|
124
|
+
source: options.tarball ? path.resolve(options.tarball) : 'npm',
|
|
121
125
|
version: tarballVersion,
|
|
122
126
|
installed: new Date().toISOString(),
|
|
123
127
|
};
|
|
124
128
|
await saveConfig(config);
|
|
125
129
|
spinner.stop(pc.green('✓') + ' Sync completed successfully!');
|
|
126
|
-
// Success message
|
|
127
130
|
p.outro(pc.green('Reference library updated!'));
|
|
128
131
|
logger.newline();
|
|
129
132
|
logger.info(pc.dim('Updated:'));
|
|
@@ -132,12 +135,17 @@ export async function sync(options = {}) {
|
|
|
132
135
|
console.log(' ' + pc.cyan('✓') + ' Shared infrastructure → ' + pc.dim(`${componentsPath}/shared/, ${componentsPath}/utils/, ${componentsPath}/styles/, ${componentsPath}/types/`));
|
|
133
136
|
console.log(' ' + pc.cyan('✓') + ' Config → ' + pc.dim('agnosticui.config.json'));
|
|
134
137
|
logger.newline();
|
|
135
|
-
logger.info(pc.dim('Your components
|
|
138
|
+
logger.info(pc.dim('Your installed components were not modified.'));
|
|
139
|
+
logger.info(pc.dim('To update a component: ') + pc.cyan('npx agnosticui-cli add <component> --force'));
|
|
136
140
|
}
|
|
137
141
|
catch (error) {
|
|
138
142
|
spinner.stop(pc.red('✖') + ' Failed to sync');
|
|
139
143
|
logger.error(`Sync failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
140
144
|
process.exit(1);
|
|
141
145
|
}
|
|
146
|
+
finally {
|
|
147
|
+
// Clean up any NPM temp download
|
|
148
|
+
await cleanupTempDownload();
|
|
149
|
+
}
|
|
142
150
|
}
|
|
143
151
|
//# sourceMappingURL=sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GnE"}
|