From ee1495da7bbe32183d1878f85dcb75e1568be4b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ram=C3=ADrez=20Barrientos?= Date: Tue, 2 Apr 2024 19:46:00 -0600 Subject: [PATCH] Adding the builder-add schematics to installe the cli globally --- packages/astro/package.json | 2 +- .../src/builder-add/builder-add.factory.ts | 44 ++++++++++++++----- packages/astro/src/builder-add/schema.json | 2 +- .../builder-generate/component/schema.json | 1 + .../files/__name@classify__.astro.template | 4 +- packages/astro/src/collection.json | 7 +-- 6 files changed, 39 insertions(+), 21 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index 1689324..68ac7af 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@pbuilder/astro", - "version": "1.0.4", + "version": "1.1.1", "description": "A set schematics for astro", "scripts": { "build": "rollup -c --bundleConfigAsCjs", diff --git a/packages/astro/src/builder-add/builder-add.factory.ts b/packages/astro/src/builder-add/builder-add.factory.ts index c5a1145..c560e21 100644 --- a/packages/astro/src/builder-add/builder-add.factory.ts +++ b/packages/astro/src/builder-add/builder-add.factory.ts @@ -1,21 +1,41 @@ -import { Rule, SchematicContext, Tree, noop } from '@angular-devkit/schematics'; -import { NodeDependencyType, addPackageJsonDependency, installDependencies } from '../utils'; +import { Rule, noop } from '@angular-devkit/schematics'; +import { Spinner, logger, spawnAsync } from '../utils'; -export function addFactory({ installCli, packageManager }: { installCli: boolean; packageManager: string }): Rule { +export function addFactory({ + installCli, + packageManager, +}: { + installCli: boolean | string; + packageManager: string; +}): Rule { return () => { - return installCli ? installCliDev(packageManager) : noop(); + const shouldInstallCli = installCli === 'false' ? false : !!installCli; + return shouldInstallCli ? installCliDev(packageManager) : noop(); }; } function installCliDev(packageManager: string): Rule { - return (tree: Tree, context: SchematicContext) => { - addPackageJsonDependency(tree, { - type: NodeDependencyType.Dev, - name: '@pbuilder/astro-cli', - version: '1.0.0', - overwrite: true, - }); + return async () => { + const packageManagerCommands = { + npm: 'install', + yarn: 'add', + pnpm: 'add', + cnpm: 'install', + bun: 'add', + }; - return installDependencies(context, packageManager); + try { + await spawnAsync( + packageManager, + [packageManagerCommands[packageManager], `--save-dev --save-exact @pbuilder/astro-cli -g`], + { + cwd: process.cwd(), + stdio: 'inherit', + shell: true, + }, + ); + } catch (e) { + logger.error(e.message); + } }; } diff --git a/packages/astro/src/builder-add/schema.json b/packages/astro/src/builder-add/schema.json index ad6941d..ee45d29 100644 --- a/packages/astro/src/builder-add/schema.json +++ b/packages/astro/src/builder-add/schema.json @@ -7,7 +7,7 @@ "installCli": { "type": "string", "description": "Install the astro cli into the project", - "x-prompt": "Would you like to install the pastro CLI instead to use the generic schematic CLI?", + "x-prompt": "Would you like to install the pastro CLI globally?", "default": false, "aliases": [ "ic" diff --git a/packages/astro/src/builder-generate/component/schema.json b/packages/astro/src/builder-generate/component/schema.json index 53a4bc4..d8a3d5f 100644 --- a/packages/astro/src/builder-generate/component/schema.json +++ b/packages/astro/src/builder-generate/component/schema.json @@ -3,6 +3,7 @@ "$id": "EmptyFolder", "title": "Add a component", "type": "object", + "additionalProperties": false, "properties": { "name": { "type": "string", diff --git a/packages/astro/src/builder-generate/page/files/__name@classify__.astro.template b/packages/astro/src/builder-generate/page/files/__name@classify__.astro.template index a7815a0..7f77b9f 100644 --- a/packages/astro/src/builder-generate/page/files/__name@classify__.astro.template +++ b/packages/astro/src/builder-generate/page/files/__name@classify__.astro.template @@ -1,6 +1,6 @@ <% if(layoutName) { %>--- import <%= layoutName %> from '<%= relativeLayoutPath %>'; --- - -<% } else { %>--- +<<%= layoutName %>> +><% } else { %>--- ---<% }%> \ No newline at end of file diff --git a/packages/astro/src/collection.json b/packages/astro/src/collection.json index ae236c1..5e67903 100644 --- a/packages/astro/src/collection.json +++ b/packages/astro/src/collection.json @@ -4,10 +4,7 @@ "builder-add": { "description": "Builder add for astro collection", "factory": "./builder-add/builder-add.factory#addFactory", - "schema": "./builder-add/schema.json", - "aliases": [ - "p" - ] + "schema": "./builder-add/schema.json" }, "layout": { "description": "Allows to create astro layout", @@ -30,7 +27,7 @@ "factory": "./builder-generate/page/page.factory#pageFactory", "schema": "./builder-generate/page/schema.json", "aliases": [ - "p" + "pg" ] } }