zard-cli 1.0.0-beta.102 → 1.0.0-beta.104
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/commands/add/component-installer.d.ts +2 -0
- package/commands/add/component-installer.d.ts.map +1 -1
- package/commands/add/component-installer.js +9 -4
- package/commands/add/component-installer.js.map +1 -1
- package/commands/add/component-selector.d.ts +6 -0
- package/commands/add/component-selector.d.ts.map +1 -1
- package/commands/add/component-selector.js +9 -27
- package/commands/add/component-selector.js.map +1 -1
- package/commands/add/dark-mode-setup.d.ts.map +1 -1
- package/commands/add/dark-mode-setup.js +2 -11
- package/commands/add/dark-mode-setup.js.map +1 -1
- package/commands/add/dependency-resolver.d.ts +2 -1
- package/commands/add/dependency-resolver.d.ts.map +1 -1
- package/commands/add/dependency-resolver.js +19 -4
- package/commands/add/dependency-resolver.js.map +1 -1
- package/commands/add/index.d.ts.map +1 -1
- package/commands/add/index.js +116 -86
- package/commands/add/index.js.map +1 -1
- package/commands/add/wizard.d.ts +31 -0
- package/commands/add/wizard.d.ts.map +1 -0
- package/commands/add/wizard.js +289 -0
- package/commands/add/wizard.js.map +1 -0
- package/commands/init/config-prompter.d.ts +49 -3
- package/commands/init/config-prompter.d.ts.map +1 -1
- package/commands/init/config-prompter.js +84 -74
- package/commands/init/config-prompter.js.map +1 -1
- package/commands/init/dependencies.d.ts +1 -8
- package/commands/init/dependencies.d.ts.map +1 -1
- package/commands/init/dependencies.js +47 -18
- package/commands/init/dependencies.js.map +1 -1
- package/commands/init/index.d.ts.map +1 -1
- package/commands/init/index.js +147 -81
- package/commands/init/index.js.map +1 -1
- package/commands/init/project-kind.d.ts +82 -0
- package/commands/init/project-kind.d.ts.map +1 -0
- package/commands/init/project-kind.js +166 -0
- package/commands/init/project-kind.js.map +1 -0
- package/commands/init/steps.d.ts +16 -0
- package/commands/init/steps.d.ts.map +1 -0
- package/commands/init/steps.js +153 -0
- package/commands/init/steps.js.map +1 -0
- package/commands/init/tailwind-setup.d.ts +9 -2
- package/commands/init/tailwind-setup.d.ts.map +1 -1
- package/commands/init/tailwind-setup.js +33 -12
- package/commands/init/tailwind-setup.js.map +1 -1
- package/commands/init/tsconfig-updater.d.ts +8 -1
- package/commands/init/tsconfig-updater.d.ts.map +1 -1
- package/commands/init/tsconfig-updater.js +30 -11
- package/commands/init/tsconfig-updater.js.map +1 -1
- package/commands/init/update-angular-config.d.ts.map +1 -1
- package/commands/init/update-angular-config.js +28 -50
- package/commands/init/update-angular-config.js.map +1 -1
- package/commands/init/vite-setup.d.ts +10 -0
- package/commands/init/vite-setup.d.ts.map +1 -0
- package/commands/init/vite-setup.js +60 -0
- package/commands/init/vite-setup.js.map +1 -0
- package/commands/init/wizard.d.ts +30 -0
- package/commands/init/wizard.d.ts.map +1 -0
- package/commands/init/wizard.js +560 -0
- package/commands/init/wizard.js.map +1 -0
- package/core/icons/families.d.ts +38 -0
- package/core/icons/families.d.ts.map +1 -0
- package/core/icons/families.js +26 -0
- package/core/icons/families.js.map +1 -0
- package/core/icons/icon-map.d.ts +22 -0
- package/core/icons/icon-map.d.ts.map +1 -0
- package/core/icons/icon-map.js +125 -0
- package/core/icons/icon-map.js.map +1 -0
- package/core/icons/index.d.ts +107 -0
- package/core/icons/index.d.ts.map +1 -0
- package/core/icons/index.js +183 -0
- package/core/icons/index.js.map +1 -0
- package/core/registry/registry-data.d.ts.map +1 -1
- package/core/registry/registry-data.js +8 -0
- package/core/registry/registry-data.js.map +1 -1
- package/index.js +5 -3
- package/index.js.map +1 -1
- package/package.json +1 -4
- package/ui/blocks.d.ts +70 -0
- package/ui/blocks.d.ts.map +1 -0
- package/ui/blocks.js +116 -0
- package/ui/blocks.js.map +1 -0
- package/ui/brand.d.ts +14 -0
- package/ui/brand.d.ts.map +1 -0
- package/ui/brand.js +35 -0
- package/ui/brand.js.map +1 -0
- package/ui/engine/animation/index.d.ts +39 -0
- package/ui/engine/animation/index.d.ts.map +1 -0
- package/ui/engine/animation/index.js +103 -0
- package/ui/engine/animation/index.js.map +1 -0
- package/ui/engine/ansi/index.d.ts +52 -0
- package/ui/engine/ansi/index.d.ts.map +1 -0
- package/ui/engine/ansi/index.js +117 -0
- package/ui/engine/ansi/index.js.map +1 -0
- package/ui/engine/components/index.d.ts +211 -0
- package/ui/engine/components/index.d.ts.map +1 -0
- package/ui/engine/components/index.js +109 -0
- package/ui/engine/components/index.js.map +1 -0
- package/ui/engine/cursor/index.d.ts +17 -0
- package/ui/engine/cursor/index.d.ts.map +1 -0
- package/ui/engine/cursor/index.js +41 -0
- package/ui/engine/cursor/index.js.map +1 -0
- package/ui/engine/diff/index.d.ts +27 -0
- package/ui/engine/diff/index.d.ts.map +1 -0
- package/ui/engine/diff/index.js +57 -0
- package/ui/engine/diff/index.js.map +1 -0
- package/ui/engine/events/index.d.ts +24 -0
- package/ui/engine/events/index.d.ts.map +1 -0
- package/ui/engine/events/index.js +60 -0
- package/ui/engine/events/index.js.map +1 -0
- package/ui/engine/focus/index.d.ts +25 -0
- package/ui/engine/focus/index.d.ts.map +1 -0
- package/ui/engine/focus/index.js +77 -0
- package/ui/engine/focus/index.js.map +1 -0
- package/ui/engine/frame/index.d.ts +48 -0
- package/ui/engine/frame/index.d.ts.map +1 -0
- package/ui/engine/frame/index.js +0 -0
- package/ui/engine/frame/index.js.map +1 -0
- package/ui/engine/index.d.ts +28 -0
- package/ui/engine/index.d.ts.map +1 -0
- package/ui/engine/index.js +28 -0
- package/ui/engine/index.js.map +1 -0
- package/ui/engine/input/index.d.ts +36 -0
- package/ui/engine/input/index.d.ts.map +1 -0
- package/ui/engine/input/index.js +224 -0
- package/ui/engine/input/index.js.map +1 -0
- package/ui/engine/layout/index.d.ts +42 -0
- package/ui/engine/layout/index.d.ts.map +1 -0
- package/ui/engine/layout/index.js +241 -0
- package/ui/engine/layout/index.js.map +1 -0
- package/ui/engine/renderer/index.d.ts +43 -0
- package/ui/engine/renderer/index.d.ts.map +1 -0
- package/ui/engine/renderer/index.js +619 -0
- package/ui/engine/renderer/index.js.map +1 -0
- package/ui/engine/scheduler/index.d.ts +22 -0
- package/ui/engine/scheduler/index.d.ts.map +1 -0
- package/ui/engine/scheduler/index.js +77 -0
- package/ui/engine/scheduler/index.js.map +1 -0
- package/ui/engine/screen/index.d.ts +39 -0
- package/ui/engine/screen/index.d.ts.map +1 -0
- package/ui/engine/screen/index.js +255 -0
- package/ui/engine/screen/index.js.map +1 -0
- package/ui/engine/terminal/index.d.ts +84 -0
- package/ui/engine/terminal/index.d.ts.map +1 -0
- package/ui/engine/terminal/index.js +235 -0
- package/ui/engine/terminal/index.js.map +1 -0
- package/ui/engine/testing/index.d.ts +27 -0
- package/ui/engine/testing/index.d.ts.map +1 -0
- package/ui/engine/testing/index.js +63 -0
- package/ui/engine/testing/index.js.map +1 -0
- package/ui/engine/theme/index.d.ts +27 -0
- package/ui/engine/theme/index.d.ts.map +1 -0
- package/ui/engine/theme/index.js +129 -0
- package/ui/engine/theme/index.js.map +1 -0
- package/ui/engine/utils/index.d.ts +12 -0
- package/ui/engine/utils/index.d.ts.map +1 -0
- package/ui/engine/utils/index.js +143 -0
- package/ui/engine/utils/index.js.map +1 -0
- package/ui/gate.d.ts +19 -0
- package/ui/gate.d.ts.map +1 -0
- package/ui/gate.js +36 -0
- package/ui/gate.js.map +1 -0
- package/ui/index.d.ts +18 -0
- package/ui/index.d.ts.map +1 -0
- package/ui/index.js +18 -0
- package/ui/index.js.map +1 -0
- package/ui/log-sink.d.ts +24 -0
- package/ui/log-sink.d.ts.map +1 -0
- package/ui/log-sink.js +35 -0
- package/ui/log-sink.js.map +1 -0
- package/ui/output.d.ts +14 -0
- package/ui/output.d.ts.map +1 -0
- package/ui/output.js +28 -0
- package/ui/output.js.map +1 -0
- package/ui/report.d.ts +30 -0
- package/ui/report.d.ts.map +1 -0
- package/ui/report.js +45 -0
- package/ui/report.js.map +1 -0
- package/ui/runner.d.ts +66 -0
- package/ui/runner.d.ts.map +1 -0
- package/ui/runner.js +135 -0
- package/ui/runner.js.map +1 -0
- package/ui/style.d.ts +24 -0
- package/ui/style.d.ts.map +1 -0
- package/ui/style.js +44 -0
- package/ui/style.js.map +1 -0
- package/ui/testing/fake-tty.d.ts +26 -0
- package/ui/testing/fake-tty.d.ts.map +1 -0
- package/ui/testing/fake-tty.js +61 -0
- package/ui/testing/fake-tty.js.map +1 -0
- package/ui/text-input.d.ts +30 -0
- package/ui/text-input.d.ts.map +1 -0
- package/ui/text-input.js +87 -0
- package/ui/text-input.js.map +1 -0
- package/ui/theme.d.ts +10 -0
- package/ui/theme.d.ts.map +1 -0
- package/ui/theme.js +20 -0
- package/ui/theme.js.map +1 -0
- package/utils/config.d.ts +26 -0
- package/utils/config.d.ts.map +1 -1
- package/utils/config.js +41 -1
- package/utils/config.js.map +1 -1
- package/utils/errors.d.ts +11 -0
- package/utils/errors.d.ts.map +1 -1
- package/utils/errors.js +14 -0
- package/utils/errors.js.map +1 -1
- package/utils/get-project-info.d.ts +29 -0
- package/utils/get-project-info.d.ts.map +1 -1
- package/utils/get-project-info.js +176 -1
- package/utils/get-project-info.js.map +1 -1
- package/utils/icon-catalog.d.ts +33 -0
- package/utils/icon-catalog.d.ts.map +1 -0
- package/utils/icon-catalog.js +62 -0
- package/utils/icon-catalog.js.map +1 -0
- package/utils/logger.d.ts +13 -1
- package/utils/logger.d.ts.map +1 -1
- package/utils/logger.js +95 -15
- package/utils/logger.js.map +1 -1
- package/utils/package-manager.d.ts +42 -1
- package/utils/package-manager.d.ts.map +1 -1
- package/utils/package-manager.js +204 -11
- package/utils/package-manager.js.map +1 -1
- package/utils/registry.d.ts +42 -2
- package/utils/registry.d.ts.map +1 -1
- package/utils/registry.js +51 -9
- package/utils/registry.js.map +1 -1
- package/utils/schema-version.d.ts +20 -0
- package/utils/schema-version.d.ts.map +1 -0
- package/utils/schema-version.js +27 -0
- package/utils/schema-version.js.map +1 -0
- package/utils/source-file.d.ts +40 -0
- package/utils/source-file.d.ts.map +1 -0
- package/utils/source-file.js +104 -0
- package/utils/source-file.js.map +1 -0
|
@@ -1,20 +1,58 @@
|
|
|
1
|
+
import { bundlerFor, isLibraryKind } from '../../commands/init/project-kind.js';
|
|
2
|
+
import { iconPackagesFor } from '../../core/icons/index.js';
|
|
1
3
|
import { getProjectInfo } from '../../utils/get-project-info.js';
|
|
4
|
+
import { iconCatalog } from '../../utils/icon-catalog.js';
|
|
2
5
|
import { logger } from '../../utils/logger.js';
|
|
3
|
-
import {
|
|
6
|
+
import { filterInstalledPackages, installPackagesWithRetry } from '../../utils/package-manager.js';
|
|
4
7
|
export async function installDependencies(cwd, config, projectInfo) {
|
|
5
8
|
const info = projectInfo || (await getProjectInfo(cwd));
|
|
6
9
|
const cdkVersion = getCdkVersion(info.angularVersion);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
// O pacote de ícones sai da família escolhida em `components.json`, e não de
|
|
11
|
+
// uma lista fixa: é o que faz `"icons"` valer alguma coisa no dia em que
|
|
12
|
+
// houver mais de uma família.
|
|
13
|
+
const deps = [
|
|
14
|
+
cdkVersion,
|
|
15
|
+
'class-variance-authority',
|
|
16
|
+
'clsx',
|
|
17
|
+
'tailwind-merge',
|
|
18
|
+
...iconPackagesFor(config.icons, iconCatalog()),
|
|
19
|
+
];
|
|
20
|
+
const devDeps = tailwindPackages(config.projectType);
|
|
11
21
|
if (info.hasTailwind) {
|
|
12
|
-
logger.info('Tailwind CSS is already installed.
|
|
22
|
+
logger.info('Tailwind CSS is already installed. Only the missing pieces will be added.');
|
|
13
23
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
24
|
+
// Cada lote que sobra vazio é uma invocação inteira do gerenciador poupada —
|
|
25
|
+
// o caso comum de um `init` repetido é justamente esse, nada a instalar.
|
|
26
|
+
const [missingDeps, missingDevDeps] = await Promise.all([
|
|
27
|
+
filterInstalledPackages(deps, cwd),
|
|
28
|
+
filterInstalledPackages(devDeps, cwd),
|
|
29
|
+
]);
|
|
30
|
+
if (!missingDeps.length && !missingDevDeps.length) {
|
|
31
|
+
logger.info('All dependencies are already installed.');
|
|
32
|
+
return;
|
|
17
33
|
}
|
|
34
|
+
await installPackagesWithRetry(missingDeps, cwd, config.packageManager, false);
|
|
35
|
+
await installPackagesWithRetry(missingDevDeps, cwd, config.packageManager, true);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* O que o Tailwind precisa para rodar naquele tipo de projeto.
|
|
39
|
+
*
|
|
40
|
+
* A lista é sempre a completa e o filtro de instalados decide o que sobra:
|
|
41
|
+
* checar só a presença do `tailwindcss` deixava passar o caso de quem já o
|
|
42
|
+
* tinha instalado mas sem o adaptador do bundler, e aí o build não gerava
|
|
43
|
+
* utilitário nenhum.
|
|
44
|
+
*
|
|
45
|
+
* Numa biblioteca não há bundler a configurar — quem compila o CSS é a
|
|
46
|
+
* aplicação que a consome —, mas os pacotes ficam porque o tema que o init
|
|
47
|
+
* escreve ali os declara.
|
|
48
|
+
*/
|
|
49
|
+
function tailwindPackages(kind) {
|
|
50
|
+
const shared = ['tailwindcss', 'tailwindcss-animate'];
|
|
51
|
+
if (isLibraryKind(kind))
|
|
52
|
+
return shared;
|
|
53
|
+
return bundlerFor(kind) === 'vite'
|
|
54
|
+
? [...shared, '@tailwindcss/vite']
|
|
55
|
+
: [...shared, '@tailwindcss/postcss', 'postcss'];
|
|
18
56
|
}
|
|
19
57
|
function getCdkVersion(angularVersion) {
|
|
20
58
|
if (!angularVersion) {
|
|
@@ -23,13 +61,4 @@ function getCdkVersion(angularVersion) {
|
|
|
23
61
|
const majorVersion = Number.parseInt(angularVersion.split('.')[0]);
|
|
24
62
|
return `@angular/cdk@^${majorVersion}`;
|
|
25
63
|
}
|
|
26
|
-
async function installWithRetry(packages, cwd, packageManager, isDev) {
|
|
27
|
-
try {
|
|
28
|
-
await installPackages(packages, cwd, packageManager, isDev);
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
logger.warn('Installation failed, retrying with --legacy-peer-deps...');
|
|
32
|
-
await installPackages(packages, cwd, packageManager, isDev, true);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
64
|
//# sourceMappingURL=dependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAoB,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAElG,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,MAAc,EAAE,WAAyB;IAC9F,MAAM,IAAI,GAAG,WAAW,IAAI,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtD,6EAA6E;IAC7E,yEAAyE;IACzE,8BAA8B;IAC9B,MAAM,IAAI,GAAG;QACX,UAAU;QACV,0BAA0B;QAC1B,MAAM;QACN,gBAAgB;QAChB,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;KAChD,CAAC;IACF,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;IAED,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtD,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC;QAClC,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,MAAM,wBAAwB,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC/E,MAAM,wBAAwB,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,gBAAgB,CAAC,IAA2B;IACnD,MAAM,MAAM,GAAG,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAEtD,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAEvC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM;QAChC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,mBAAmB,CAAC;QAClC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,aAAa,CAAC,cAA8B;IACnD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,OAAO,iBAAiB,YAAY,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,IAAI,SAkEb,CAAC"}
|
package/commands/init/index.js
CHANGED
|
@@ -1,53 +1,88 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { resolveConfigPaths } from '../../utils/config.js';
|
|
1
|
+
import { buildConfig, defaultAnswers, inspectCssFile } from '../../commands/init/config-prompter.js';
|
|
2
|
+
import { candidateProjects, detectProjectKind, isLibraryKind, PROJECT_KINDS, } from '../../commands/init/project-kind.js';
|
|
3
|
+
import { buildInitSteps } from '../../commands/init/steps.js';
|
|
4
|
+
import { runInitWizard } from '../../commands/init/wizard.js';
|
|
5
|
+
import { isInteractive, printReport, WizardCancelledError } from '../../ui/index.js';
|
|
7
6
|
import { CliError } from '../../utils/errors.js';
|
|
8
7
|
import { getProjectInfo } from '../../utils/get-project-info.js';
|
|
8
|
+
import { loadIconCatalog } from '../../utils/icon-catalog.js';
|
|
9
9
|
import { logger, spinner } from '../../utils/logger.js';
|
|
10
|
-
import { detectPackageManager } from '../../utils/package-manager.js';
|
|
11
|
-
import
|
|
10
|
+
import { detectPackageManager, suggestedRunner } from '../../utils/package-manager.js';
|
|
11
|
+
import { getRegistryUrl } from '../../utils/registry.js';
|
|
12
12
|
import { Command } from 'commander';
|
|
13
13
|
import { existsSync } from 'node:fs';
|
|
14
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
15
14
|
import * as path from 'node:path';
|
|
16
|
-
import prompts from 'prompts';
|
|
17
|
-
import { updateAngularConfig } from './update-angular-config.js';
|
|
18
15
|
export const init = new Command()
|
|
19
16
|
.name('init')
|
|
20
17
|
.description('initialize your project and install dependencies')
|
|
21
18
|
.option('-y, --yes', 'skip confirmation prompt.', false)
|
|
22
19
|
.option('-c, --cwd <cwd>', 'the working directory. defaults to the current directory.', process.cwd())
|
|
20
|
+
.option('-t, --type <type>', `the project type: ${PROJECT_KINDS.map(kind => kind.value).join(', ')}.`)
|
|
21
|
+
.option('-p, --project <name>', 'the workspace project to configure. defaults to the first compatible one.')
|
|
23
22
|
.action(async (options) => {
|
|
24
23
|
const cwd = path.resolve(options.cwd);
|
|
25
24
|
validateWorkingDirectory(cwd);
|
|
26
25
|
const projectInfo = await getProjectInfo(cwd);
|
|
27
26
|
validateAngularProject(projectInfo);
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
const kind = resolveKind(options.type);
|
|
28
|
+
const projectRoot = resolveProjectRoot(options.project, kind ?? detectProjectKind(projectInfo), projectInfo);
|
|
29
|
+
const isReInitializing = existsSync(path.resolve(cwd, 'components.json'));
|
|
30
|
+
const packageManager = await detectPackageManager(cwd);
|
|
31
|
+
// Antes de qualquer etapa: é o catálogo que diz qual pacote de ícones
|
|
32
|
+
// instalar, e ele vem do registry para não depender da versão da CLI.
|
|
33
|
+
await loadIconCatalog(getRegistryUrl());
|
|
34
|
+
const buildSteps = (config) => buildInitSteps(cwd, config, projectInfo, isReInitializing);
|
|
35
|
+
if (!isInteractive()) {
|
|
36
|
+
logHeadlessReason();
|
|
37
|
+
await runHeadless({
|
|
38
|
+
cwd,
|
|
39
|
+
projectInfo,
|
|
40
|
+
packageManager,
|
|
41
|
+
isReInitializing,
|
|
42
|
+
buildSteps,
|
|
43
|
+
yes: options.yes,
|
|
44
|
+
kind,
|
|
45
|
+
projectRoot,
|
|
46
|
+
});
|
|
47
|
+
return;
|
|
36
48
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
49
|
+
try {
|
|
50
|
+
const { config, logs } = await runInitWizard({
|
|
51
|
+
cwd,
|
|
52
|
+
projectInfo,
|
|
53
|
+
packageManager,
|
|
54
|
+
isReInitializing,
|
|
55
|
+
skipConfirmation: options.yes,
|
|
56
|
+
buildSteps,
|
|
57
|
+
presetKind: kind,
|
|
58
|
+
presetProjectRoot: projectRoot,
|
|
59
|
+
});
|
|
60
|
+
reportSuccess(config, buildSteps(config), logs);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (error instanceof WizardCancelledError) {
|
|
64
|
+
printReport({
|
|
65
|
+
status: 'cancelled',
|
|
66
|
+
headline: error.message,
|
|
67
|
+
notes: ['Nothing was changed in your project.'],
|
|
68
|
+
});
|
|
45
69
|
process.exit(0);
|
|
46
70
|
}
|
|
71
|
+
throw error;
|
|
47
72
|
}
|
|
48
|
-
await runInitializationSteps(cwd, config, projectInfo, isReInitializing);
|
|
49
|
-
displaySuccessMessage(config);
|
|
50
73
|
});
|
|
74
|
+
/**
|
|
75
|
+
* Por que a tela cheia não foi montada.
|
|
76
|
+
*
|
|
77
|
+
* A CLI sair em modo texto é indistinguível, para quem está olhando, de a
|
|
78
|
+
* interface não existir — foi assim que a degradação no macOS e no Linux passou
|
|
79
|
+
* despercebida até virar relato de que "não apareceu". Com `--debug`, a resposta
|
|
80
|
+
* vem do próprio comando.
|
|
81
|
+
*/
|
|
82
|
+
function logHeadlessReason() {
|
|
83
|
+
logger.debug(`No terminal to draw on (stdin TTY: ${Boolean(process.stdin.isTTY)}, ` +
|
|
84
|
+
`stdout TTY: ${Boolean(process.stdout.isTTY)}, controlling terminal: unreachable) — running headless.`);
|
|
85
|
+
}
|
|
51
86
|
function validateWorkingDirectory(cwd) {
|
|
52
87
|
if (!existsSync(cwd)) {
|
|
53
88
|
throw new CliError(`The path ${cwd} does not exist. Please try again.`, 'INVALID_CWD');
|
|
@@ -58,62 +93,93 @@ function validateAngularProject(projectInfo) {
|
|
|
58
93
|
throw new CliError('This project does not appear to be an Angular project.', 'NOT_ANGULAR');
|
|
59
94
|
}
|
|
60
95
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
96
|
+
/**
|
|
97
|
+
* O tipo pedido em `--type`, quando houver.
|
|
98
|
+
*
|
|
99
|
+
* É a resposta à primeira pergunta do wizard dada de antemão — o que torna o
|
|
100
|
+
* init utilizável em CI, onde ninguém pode escolher no menu.
|
|
101
|
+
*/
|
|
102
|
+
function resolveKind(value) {
|
|
103
|
+
if (!value)
|
|
104
|
+
return undefined;
|
|
105
|
+
const kind = PROJECT_KINDS.find(option => option.value === value);
|
|
106
|
+
if (!kind) {
|
|
107
|
+
throw new CliError(`Unknown project type "${value}". Expected one of: ${PROJECT_KINDS.map(option => option.value).join(', ')}.`, 'UNKNOWN_PROJECT_TYPE');
|
|
108
|
+
}
|
|
109
|
+
return kind.value;
|
|
70
110
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
111
|
+
/** A raiz do projeto pedido em `--project`, procurado entre os compatíveis. */
|
|
112
|
+
function resolveProjectRoot(name, kind, projectInfo) {
|
|
113
|
+
if (!name)
|
|
114
|
+
return undefined;
|
|
115
|
+
const candidates = candidateProjects(kind, projectInfo);
|
|
116
|
+
const project = candidates.find(candidate => candidate.name === name);
|
|
117
|
+
if (!project) {
|
|
118
|
+
const available = candidates.map(candidate => candidate.name).join(', ') || 'none';
|
|
119
|
+
throw new CliError(`Project "${name}" is not a ${kind} project in this workspace. Available: ${available}.`, 'UNKNOWN_PROJECT');
|
|
120
|
+
}
|
|
121
|
+
return project.root;
|
|
79
122
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (!
|
|
88
|
-
|
|
89
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Caminho sem UI — CI, pipes e terminais não interativos.
|
|
125
|
+
*
|
|
126
|
+
* Aqui ninguém pode responder nada, então os defaults valem e `--yes` é
|
|
127
|
+
* obrigatório: sem ele a CLI se recusa a sobrescrever o CSS global do projeto.
|
|
128
|
+
*/
|
|
129
|
+
async function runHeadless(options) {
|
|
130
|
+
if (!options.yes) {
|
|
131
|
+
throw new CliError('Running without an interactive terminal requires --yes, since init overwrites your global CSS.', 'NOT_INTERACTIVE');
|
|
132
|
+
}
|
|
133
|
+
const kind = options.kind ?? detectProjectKind(options.projectInfo);
|
|
134
|
+
const answers = defaultAnswers(options.projectInfo, kind, options.projectRoot);
|
|
135
|
+
const cssState = await inspectCssFile(options.cwd, answers.globalCss);
|
|
136
|
+
// Numa biblioteca o CSS de tema é criado pelo init, então não existir é o
|
|
137
|
+
// esperado; numa aplicação, o arquivo tem que estar lá e ligado ao build.
|
|
138
|
+
if (cssState === 'missing' && !isLibraryKind(answers.kind)) {
|
|
139
|
+
throw new CliError(`CSS file not found at: ${answers.globalCss}. Run init in an interactive terminal to choose another path.`, 'CSS_NOT_FOUND');
|
|
140
|
+
}
|
|
141
|
+
const config = buildConfig(answers, options.packageManager);
|
|
142
|
+
const steps = options.buildSteps(config);
|
|
143
|
+
logger.info(options.isReInitializing ? 'Re-initializing zard/ui...' : 'Initializing zard/ui...');
|
|
144
|
+
for (const step of steps) {
|
|
145
|
+
const stepSpinner = spinner(`${step.label} — ${step.note}`).start();
|
|
146
|
+
try {
|
|
147
|
+
await step.run();
|
|
148
|
+
stepSpinner.succeed(step.label);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
stepSpinner.fail(`${step.label}: ${error instanceof Error ? error.message : String(error)}`);
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
90
154
|
}
|
|
91
|
-
|
|
92
|
-
await applyThemeToStyles(cwd, config);
|
|
93
|
-
initSpinner.text = 'Updating TypeScript config...';
|
|
94
|
-
await updateTsConfig(cwd, config);
|
|
95
|
-
initSpinner.text = 'Installing core dependencies...';
|
|
96
|
-
await installCoreDependencies(cwd, config);
|
|
97
|
-
initSpinner.succeed('Project initialized');
|
|
155
|
+
reportSuccess(config, steps, []);
|
|
98
156
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
157
|
+
function reportSuccess(config, steps, logs) {
|
|
158
|
+
printReport({
|
|
159
|
+
status: 'success',
|
|
160
|
+
headline: 'zard/ui has been initialized successfully!',
|
|
161
|
+
items: steps.map(step => `${step.label} — ${step.note}`),
|
|
162
|
+
notes: nextStepsFor(config),
|
|
163
|
+
commands: [{ command: `${suggestedRunner(config.packageManager)} zard-cli add`, argument: '[component]' }],
|
|
164
|
+
logs,
|
|
165
|
+
});
|
|
105
166
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
167
|
+
/**
|
|
168
|
+
* O que ainda falta fazer à mão.
|
|
169
|
+
*
|
|
170
|
+
* Numa biblioteca o init não tem onde registrar `provideZard()` nem como
|
|
171
|
+
* importar os tokens — as duas coisas pertencem ao app que consome a lib, e
|
|
172
|
+
* sem esse aviso o usuário só descobre quando os componentes não renderizam.
|
|
173
|
+
*/
|
|
174
|
+
function nextStepsFor(config) {
|
|
175
|
+
if (!isLibraryKind(config.projectType)) {
|
|
176
|
+
return ['You can now add components using:'];
|
|
177
|
+
}
|
|
178
|
+
return [
|
|
179
|
+
'The consuming app still needs to register provideZard() in its app.config.ts',
|
|
180
|
+
`and import the theme tokens from this library's ${path.basename(config.tailwind.css)}.`,
|
|
181
|
+
'',
|
|
182
|
+
'You can now add components using:',
|
|
183
|
+
];
|
|
118
184
|
}
|
|
119
185
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Que tipo de projeto o `init` está configurando.
|
|
3
|
+
*
|
|
4
|
+
* Quem responde é o usuário, na primeira pergunta do wizard — a CLI não decide
|
|
5
|
+
* por ele. O que o workspace revela entra depois, para preencher os caminhos
|
|
6
|
+
* sugeridos do tipo escolhido; a detecção só vira decisão no caminho headless,
|
|
7
|
+
* onde não há ninguém para perguntar.
|
|
8
|
+
*
|
|
9
|
+
* As diferenças entre os tipos não são cosméticas: uma biblioteca não tem
|
|
10
|
+
* `app.config.ts` onde registrar providers nem CSS global pré-existente, o Nx
|
|
11
|
+
* guarda os paths do TypeScript noutro arquivo, e o Analog troca o build do
|
|
12
|
+
* Angular por Vite — e com ele a forma de configurar o Tailwind. Concentrar
|
|
13
|
+
* essas diferenças aqui evita que cada etapa precise redescobri-las.
|
|
14
|
+
*/
|
|
15
|
+
import type { ProjectInfo, WorkspaceProject } from '../../utils/get-project-info.js';
|
|
16
|
+
export type ProjectKind = 'angular' | 'angular-library' | 'nx' | 'nx-library' | 'analog';
|
|
17
|
+
export interface ProjectKindOption {
|
|
18
|
+
readonly value: ProjectKind;
|
|
19
|
+
readonly label: string;
|
|
20
|
+
readonly detail: string;
|
|
21
|
+
/** A cor do ecossistema, para o menu dizer de relance a que mundo o tipo pertence. */
|
|
22
|
+
readonly color: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A ordem é a do menu: cada ecossistema com a aplicação antes da biblioteca,
|
|
26
|
+
* do mais comum ao mais raro. Angular abre a lista porque é o default.
|
|
27
|
+
*/
|
|
28
|
+
export declare const PROJECT_KINDS: readonly ProjectKindOption[];
|
|
29
|
+
export declare function isLibraryKind(kind: ProjectKind): boolean;
|
|
30
|
+
/** Onde os paths do TypeScript precisam ser escritos para o projeto enxergá-los. */
|
|
31
|
+
export declare function tsconfigFileFor(kind: ProjectKind, projectInfo: ProjectInfo): string;
|
|
32
|
+
/** Se o Tailwind entra pelo PostCSS do Angular ou pelo plugin do Vite. */
|
|
33
|
+
export declare function bundlerFor(kind: ProjectKind): 'angular' | 'vite';
|
|
34
|
+
/**
|
|
35
|
+
* Os projetos do workspace que podem receber a instalação.
|
|
36
|
+
*
|
|
37
|
+
* Escolhido o tipo, só faz sentido oferecer o que combina com ele: pedir para
|
|
38
|
+
* instalar numa aplicação quem escolheu biblioteca seria oferecer um alvo que
|
|
39
|
+
* as etapas seguintes não sabem configurar.
|
|
40
|
+
*/
|
|
41
|
+
export declare function candidateProjects(kind: ProjectKind, projectInfo: ProjectInfo): WorkspaceProject[];
|
|
42
|
+
/** Raiz padrão quando o workspace não declara nenhum projeto compatível. */
|
|
43
|
+
export declare function fallbackRootFor(kind: ProjectKind): string;
|
|
44
|
+
/**
|
|
45
|
+
* O tipo que o caminho headless assume.
|
|
46
|
+
*
|
|
47
|
+
* Sem terminal interativo ninguém responde à primeira pergunta, então aqui — e
|
|
48
|
+
* só aqui — o workspace decide: o gerenciador dá o mundo (Nx ou Angular), o
|
|
49
|
+
* Analog se anuncia pelas próprias dependências, e a ausência de qualquer
|
|
50
|
+
* aplicação é o que sugere que o alvo é uma biblioteca.
|
|
51
|
+
*/
|
|
52
|
+
export declare function detectProjectKind(projectInfo: ProjectInfo): ProjectKind;
|
|
53
|
+
/**
|
|
54
|
+
* Onde o código da biblioteca vive.
|
|
55
|
+
*
|
|
56
|
+
* `src/lib` é a convenção tanto do `ng generate library` quanto do
|
|
57
|
+
* `nx g @nx/angular:library`: `src/` guarda o ponto de entrada público, e tudo
|
|
58
|
+
* que ele exporta fica em `src/lib`.
|
|
59
|
+
*/
|
|
60
|
+
export declare function libraryBaseUrl(libraryRoot: string): string;
|
|
61
|
+
/** O CSS de tema que a biblioteca passa a expor para quem a consome. */
|
|
62
|
+
export declare function libraryStylesPath(libraryRoot: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* A raiz do projeto, deduzida do `baseUrl`.
|
|
65
|
+
*
|
|
66
|
+
* Os dois layouts terminam dois níveis abaixo da raiz — `<root>/src/app` numa
|
|
67
|
+
* aplicação, `<root>/src/lib` numa biblioteca —, então subir dois níveis
|
|
68
|
+
* devolve o diretório onde vivem o `project.json`, o `ng-package.json` e o
|
|
69
|
+
* `.postcssrc.json` daquele projeto. Um app único na raiz devolve `.`.
|
|
70
|
+
*/
|
|
71
|
+
export declare function projectRootOf(baseUrl: string): string;
|
|
72
|
+
/** O diretório de fontes do projeto — onde `index.html` e `main.ts` ficam. */
|
|
73
|
+
export declare function sourceRootOf(baseUrl: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* Onde procurar o `index.html` do projeto.
|
|
76
|
+
*
|
|
77
|
+
* No Analog ele é a página de entrada do Vite e fica na raiz, e não em `src/`
|
|
78
|
+
* como no build do Angular — sugerir o caminho errado fazia o `add dark-mode`
|
|
79
|
+
* falhar logo depois de perguntar.
|
|
80
|
+
*/
|
|
81
|
+
export declare function indexHtmlFor(kind: ProjectKind, baseUrl: string): string;
|
|
82
|
+
//# sourceMappingURL=project-kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-kind.d.ts","sourceRoot":"","sources":["../../../src/commands/init/project-kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGpF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,iBAAiB,GAAG,IAAI,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEzF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAYD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,iBAAiB,EA+BrD,CAAC;AAqBF,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAExD;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAOnF;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,gBAAgB,EAAE,CAIjG;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CASvE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOvE"}
|