@avora-labs/cli 1.1.20
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 +218 -0
- package/bin/avora.mjs +5 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.command.d.ts +3 -0
- package/dist/commands/add.command.d.ts.map +1 -0
- package/dist/commands/add.command.js +83 -0
- package/dist/commands/add.command.js.map +1 -0
- package/dist/commands/config.command.d.ts +3 -0
- package/dist/commands/config.command.d.ts.map +1 -0
- package/dist/commands/config.command.js +71 -0
- package/dist/commands/config.command.js.map +1 -0
- package/dist/commands/generate.command.d.ts +3 -0
- package/dist/commands/generate.command.d.ts.map +1 -0
- package/dist/commands/generate.command.js +258 -0
- package/dist/commands/generate.command.js.map +1 -0
- package/dist/commands/info.command.d.ts +3 -0
- package/dist/commands/info.command.d.ts.map +1 -0
- package/dist/commands/info.command.js +92 -0
- package/dist/commands/info.command.js.map +1 -0
- package/dist/commands/init.command.d.ts +3 -0
- package/dist/commands/init.command.d.ts.map +1 -0
- package/dist/commands/init.command.js +230 -0
- package/dist/commands/init.command.js.map +1 -0
- package/dist/commands/new.command.d.ts +3 -0
- package/dist/commands/new.command.d.ts.map +1 -0
- package/dist/commands/new.command.js +50 -0
- package/dist/commands/new.command.js.map +1 -0
- package/dist/commands/plugin.command.d.ts +3 -0
- package/dist/commands/plugin.command.d.ts.map +1 -0
- package/dist/commands/plugin.command.js +153 -0
- package/dist/commands/plugin.command.js.map +1 -0
- package/dist/commands/remove.command.d.ts +3 -0
- package/dist/commands/remove.command.d.ts.map +1 -0
- package/dist/commands/remove.command.js +89 -0
- package/dist/commands/remove.command.js.map +1 -0
- package/dist/registry/amf-config.d.ts +31 -0
- package/dist/registry/amf-config.d.ts.map +1 -0
- package/dist/registry/amf-config.js +97 -0
- package/dist/registry/amf-config.js.map +1 -0
- package/dist/registry/meta-registry.d.ts +105 -0
- package/dist/registry/meta-registry.d.ts.map +1 -0
- package/dist/registry/meta-registry.js +364 -0
- package/dist/registry/meta-registry.js.map +1 -0
- package/dist/schematics/app/app.schematic.d.ts +3 -0
- package/dist/schematics/app/app.schematic.d.ts.map +1 -0
- package/dist/schematics/app/app.schematic.js +149 -0
- package/dist/schematics/app/app.schematic.js.map +1 -0
- package/dist/schematics/form/form.schematic.d.ts +4 -0
- package/dist/schematics/form/form.schematic.d.ts.map +1 -0
- package/dist/schematics/form/form.schematic.js +100 -0
- package/dist/schematics/form/form.schematic.js.map +1 -0
- package/dist/schematics/page/page.schematic.d.ts +3 -0
- package/dist/schematics/page/page.schematic.d.ts.map +1 -0
- package/dist/schematics/page/page.schematic.js +147 -0
- package/dist/schematics/page/page.schematic.js.map +1 -0
- package/dist/schematics/table/table.schematic.d.ts +3 -0
- package/dist/schematics/table/table.schematic.d.ts.map +1 -0
- package/dist/schematics/table/table.schematic.js +58 -0
- package/dist/schematics/table/table.schematic.js.map +1 -0
- package/dist/types/cli.types.d.ts +104 -0
- package/dist/types/cli.types.d.ts.map +1 -0
- package/dist/types/cli.types.js +3 -0
- package/dist/types/cli.types.js.map +1 -0
- package/dist/utils/credentials.d.ts +19 -0
- package/dist/utils/credentials.d.ts.map +1 -0
- package/dist/utils/credentials.js +99 -0
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/diff.d.ts +11 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +45 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/file-utils.d.ts +11 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +30 -0
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/logger.d.ts +21 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +63 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/prompt.d.ts +8 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +63 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/template-engine.d.ts +9 -0
- package/dist/utils/template-engine.d.ts.map +1 -0
- package/dist/utils/template-engine.js +23 -0
- package/dist/utils/template-engine.js.map +1 -0
- package/dist/utils/transaction.d.ts +37 -0
- package/dist/utils/transaction.d.ts.map +1 -0
- package/dist/utils/transaction.js +94 -0
- package/dist/utils/transaction.js.map +1 -0
- package/package.json +66 -0
- package/templates/app/app.component.ts.ejs +9 -0
- package/templates/app/app.config.ts.ejs +27 -0
- package/templates/app/app.meta.ts.ejs +58 -0
- package/templates/app/app.routes.ts.ejs +9 -0
- package/templates/app/dashboard.page.ts.ejs +61 -0
- package/templates/form/form.meta.ts.ejs +77 -0
- package/templates/page/page.meta.ts.ejs +112 -0
- package/templates/table/table.meta.ts.ejs +78 -0
package/README.md
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# @avora/cli
|
|
2
|
+
|
|
3
|
+
> Official CLI for the **AvoraMetaForge** Angular meta-framework ecosystem.
|
|
4
|
+
|
|
5
|
+
[](https://nodejs.org)
|
|
6
|
+
[](https://www.typescriptlang.org/)
|
|
7
|
+
[](https://nodejs.org/api/esm.html)
|
|
8
|
+
[]()
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
`@avora/cli` is the developer toolchain for the `@avora/meta-forge` Angular library — a meta-driven framework that generates entire pages, forms, tables, and navigation from TypeScript configuration objects (`AppMeta`).
|
|
15
|
+
|
|
16
|
+
The CLI automates the entire authoring lifecycle:
|
|
17
|
+
|
|
18
|
+
- **Scaffold** new AMF applications (`avora new`)
|
|
19
|
+
- **Generate** meta-driven pages, forms, tables, APIs, and nav items with AST-safe patching
|
|
20
|
+
- **Install** private `@avora/*` packages from GitHub Package Registry
|
|
21
|
+
- **Manage** workspace configuration (`avora.json`)
|
|
22
|
+
- **Create** plugin packages for the ecosystem
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# From the GitHub Package Registry (private)
|
|
30
|
+
npm install -g @avora/cli --registry https://npm.pkg.github.com
|
|
31
|
+
|
|
32
|
+
# Or link locally during development
|
|
33
|
+
cd projects/avora-cli
|
|
34
|
+
npm install
|
|
35
|
+
npm run link:cli # builds + npm link → makes `avora` available globally
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Quick Start
|
|
41
|
+
|
|
42
|
+
### New project
|
|
43
|
+
```bash
|
|
44
|
+
avora new my-portal # interactive wizard
|
|
45
|
+
avora new my-portal --layout vertical --auth-type jwt
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Existing Angular workspace
|
|
49
|
+
```bash
|
|
50
|
+
cd my-angular-workspace
|
|
51
|
+
avora init # detects projects, creates avora.json
|
|
52
|
+
avora info # verify workspace diagnostics
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Generate schematics
|
|
56
|
+
```bash
|
|
57
|
+
# Page (with nav + table section)
|
|
58
|
+
avora generate page products \
|
|
59
|
+
--section page-header \
|
|
60
|
+
--section table \
|
|
61
|
+
--guard \
|
|
62
|
+
--nav-group Features \
|
|
63
|
+
--nav-icon package
|
|
64
|
+
|
|
65
|
+
# Form
|
|
66
|
+
avora generate form create-product --layout grid --columns 2
|
|
67
|
+
|
|
68
|
+
# Table
|
|
69
|
+
avora generate table users --columns "name,email,status,createdAt"
|
|
70
|
+
|
|
71
|
+
# API endpoint
|
|
72
|
+
avora generate api list-products --method GET --path /api/products --mock
|
|
73
|
+
|
|
74
|
+
# Nav item only
|
|
75
|
+
avora generate nav-item --label Reports --route /reports --icon bar-chart-2 --group Main
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
All `generate` commands support `--dry-run` to preview changes before writing:
|
|
79
|
+
```bash
|
|
80
|
+
avora generate page reports --section table --dry-run
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Install private packages
|
|
84
|
+
```bash
|
|
85
|
+
avora add @avora/plugin-charts # prompts for GitHub PAT if not set
|
|
86
|
+
# Set token via env var for CI/CD:
|
|
87
|
+
AVORA_REGISTRY_TOKEN=ghp_... avora add @avora/plugin-charts
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Configuration
|
|
91
|
+
```bash
|
|
92
|
+
avora config # list all config
|
|
93
|
+
avora config defaultLayout horizontal
|
|
94
|
+
avora config registry.url https://npm.pkg.github.com
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Workspace info
|
|
98
|
+
```bash
|
|
99
|
+
avora info
|
|
100
|
+
# ┌────────────────────────────────────────────────┐
|
|
101
|
+
# │ AvoraMetaForge Workspace Info │
|
|
102
|
+
# ├────────────────────────────────────────────────┤
|
|
103
|
+
# │ CLI Version: 1.0.0 │
|
|
104
|
+
# │ Pages registered: 12 │
|
|
105
|
+
# │ API endpoints: 8 │
|
|
106
|
+
# │ Navigation items: 11 │
|
|
107
|
+
# └────────────────────────────────────────────────┘
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Commands
|
|
113
|
+
|
|
114
|
+
| Command | Description |
|
|
115
|
+
|---|---|
|
|
116
|
+
| `avora new <name>` | Scaffold a new AMF application |
|
|
117
|
+
| `avora init` | Initialize AMF in an existing Angular workspace |
|
|
118
|
+
| `avora generate\|g page [name]` | Generate a meta-driven page |
|
|
119
|
+
| `avora generate\|g form [name]` | Generate a standalone FormMeta |
|
|
120
|
+
| `avora generate\|g table [name]` | Generate a standalone TableMeta |
|
|
121
|
+
| `avora generate\|g api [id]` | Add an API endpoint to `app.meta.ts` |
|
|
122
|
+
| `avora generate\|g nav-item` | Add a navigation item |
|
|
123
|
+
| `avora add <package>` | Install a private `@avora/*` package |
|
|
124
|
+
| `avora config [key] [value]` | Read/write `avora.json` |
|
|
125
|
+
| `avora plugin create [name]` | Scaffold a new plugin package |
|
|
126
|
+
| `avora plugin list` | List registered plugins |
|
|
127
|
+
| `avora info` | Display workspace diagnostics |
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Architecture
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
src/
|
|
135
|
+
├── cli.ts # Root Commander program
|
|
136
|
+
├── types/cli.types.ts # All interfaces & option types
|
|
137
|
+
├── registry/
|
|
138
|
+
│ ├── meta-registry.ts # ts-morph AST patcher for app.meta.ts
|
|
139
|
+
│ └── amf-config.ts # avora.json read/write + workspace detection
|
|
140
|
+
├── schematics/
|
|
141
|
+
│ ├── app/ # avora new
|
|
142
|
+
│ ├── page/ # avora generate page
|
|
143
|
+
│ ├── form/ # avora generate form
|
|
144
|
+
│ └── table/ # avora generate table
|
|
145
|
+
├── commands/ # One file per command
|
|
146
|
+
└── utils/
|
|
147
|
+
├── transaction.ts # Atomic file writes with rollback
|
|
148
|
+
├── credentials.ts # AES-256-GCM token store (~/.avora/)
|
|
149
|
+
├── diff.ts # Colored unified diff for --dry-run
|
|
150
|
+
├── logger.ts # Angular CLI-style output
|
|
151
|
+
├── prompt.ts # @inquirer/prompts wrappers
|
|
152
|
+
├── template-engine.ts # EJS template renderer
|
|
153
|
+
└── file-utils.ts # Naming convention converters
|
|
154
|
+
templates/
|
|
155
|
+
├── app/ # avora new scaffold templates
|
|
156
|
+
├── page/page.meta.ts.ejs # PageMeta — all section types
|
|
157
|
+
├── form/form.meta.ts.ejs # FormMeta — stepper, grid, actions
|
|
158
|
+
└── table/table.meta.ts.ejs # TableMeta — columns, actions, pagination
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Key design decisions
|
|
162
|
+
|
|
163
|
+
- **Full ESM** — `"type": "module"`, `moduleResolution: NodeNext`, `@inquirer/prompts`
|
|
164
|
+
- **AST patching** — `ts-morph` manipulates `app.meta.ts` instead of regex replace. CRLF-aware, single-quote style, trailing-comma aware.
|
|
165
|
+
- **Atomic writes** — `FileTransaction` snapshots each file before writing; any failure triggers automatic rollback.
|
|
166
|
+
- **Dry-run everywhere** — All generate commands show a colored unified diff before touching any file.
|
|
167
|
+
- **CI-friendly** — Every interactive prompt has a flag equivalent; `AVORA_REGISTRY_TOKEN` env var skips credential prompts.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Development
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
npm install
|
|
175
|
+
npm run build # tsc → dist/
|
|
176
|
+
npm run build:watch # watch mode
|
|
177
|
+
npm run link:cli # build + npm link (makes `avora` global)
|
|
178
|
+
|
|
179
|
+
# Test against the workspace
|
|
180
|
+
npm run test:info
|
|
181
|
+
npm run test:dry-run
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Workspace config (`avora.json`)
|
|
187
|
+
|
|
188
|
+
Created at the workspace root by `avora new` or `avora init`:
|
|
189
|
+
|
|
190
|
+
```json
|
|
191
|
+
{
|
|
192
|
+
"version": "1.0.0",
|
|
193
|
+
"projectType": "application",
|
|
194
|
+
"library": "@avora/meta-forge",
|
|
195
|
+
"libraryVersion": "1.0.0",
|
|
196
|
+
"paths": {
|
|
197
|
+
"metaFile": "src/app/app.meta.ts",
|
|
198
|
+
"pagesDir": "src/app/pages",
|
|
199
|
+
"appConfig": "src/app/app.config.ts",
|
|
200
|
+
"appRoutesFile": "src/app/app.routes.ts"
|
|
201
|
+
},
|
|
202
|
+
"defaultLayout": "vertical",
|
|
203
|
+
"registry": {
|
|
204
|
+
"type": "github",
|
|
205
|
+
"org": "AvoraLabs",
|
|
206
|
+
"scope": "@avora",
|
|
207
|
+
"url": "https://npm.pkg.github.com",
|
|
208
|
+
"privateRepo": true
|
|
209
|
+
},
|
|
210
|
+
"plugins": []
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## License
|
|
217
|
+
|
|
218
|
+
UNLICENSED — Private, AvoraLabs internal tooling.
|
package/bin/avora.mjs
ADDED
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const { version } = require('../package.json');
|
|
6
|
+
import { registerNewCommand } from './commands/new.command.js';
|
|
7
|
+
import { registerInitCommand } from './commands/init.command.js';
|
|
8
|
+
import { registerGenerateCommand } from './commands/generate.command.js';
|
|
9
|
+
import { registerAddCommand } from './commands/add.command.js';
|
|
10
|
+
import { registerConfigCommand } from './commands/config.command.js';
|
|
11
|
+
import { registerPluginCommand } from './commands/plugin.command.js';
|
|
12
|
+
import { registerInfoCommand } from './commands/info.command.js';
|
|
13
|
+
import { registerRemoveCommand } from './commands/remove.command.js';
|
|
14
|
+
const program = new Command();
|
|
15
|
+
// ─── Program metadata ─────────────────────────────────────────────────────────
|
|
16
|
+
program
|
|
17
|
+
.name('avora')
|
|
18
|
+
.description(chalk.bold.cyan('AvoraMetaForge CLI') + '\n' +
|
|
19
|
+
chalk.dim(' Build meta-driven Angular apps with confidence.'))
|
|
20
|
+
.version(version, '-v, --version', 'Output the current CLI version')
|
|
21
|
+
.helpOption('-h, --help', 'Show help')
|
|
22
|
+
.addHelpText('after', `
|
|
23
|
+
${chalk.bold('Examples:')}
|
|
24
|
+
${chalk.cyan('avora new')} my-portal ${chalk.dim('# Scaffold a new AMF app')}
|
|
25
|
+
${chalk.cyan('avora generate page')} products ${chalk.dim('# Generate a page')}
|
|
26
|
+
${chalk.cyan('avora generate page')} products ${chalk.dim('--section table --section page-header')}
|
|
27
|
+
${chalk.cyan('avora generate form')} create-product ${chalk.dim('# Generate a FormMeta')}
|
|
28
|
+
${chalk.cyan('avora generate table')} users ${chalk.dim('--columns "name,email,status"')}
|
|
29
|
+
${chalk.cyan('avora generate api')} list-products ${chalk.dim('--method GET --path /api/products')}
|
|
30
|
+
${chalk.cyan('avora generate nav-item')} ${chalk.dim('--label Products --route /products --icon package')}
|
|
31
|
+
${chalk.cyan('avora del')} invoices ${chalk.dim('# Remove the generated invoices page')}
|
|
32
|
+
${chalk.cyan('avora add')} @avora/plugin-charts ${chalk.dim('# Install private package')}
|
|
33
|
+
${chalk.cyan('avora plugin create')} my-widget ${chalk.dim('# Scaffold a new plugin')}
|
|
34
|
+
${chalk.cyan('avora config')} defaultLayout horizontal ${chalk.dim('# Update avora.json')}
|
|
35
|
+
${chalk.cyan('avora info')} ${chalk.dim('# Workspace diagnostics')}
|
|
36
|
+
|
|
37
|
+
${chalk.bold('Aliases:')}
|
|
38
|
+
${chalk.cyan('g')} → generate (e.g. avora g page products)
|
|
39
|
+
|
|
40
|
+
${chalk.bold('Dry-run:')}
|
|
41
|
+
All generate commands support ${chalk.cyan('--dry-run')} to preview changes before writing.
|
|
42
|
+
`);
|
|
43
|
+
// ─── Register commands ────────────────────────────────────────────────────────
|
|
44
|
+
registerNewCommand(program);
|
|
45
|
+
registerInitCommand(program);
|
|
46
|
+
registerGenerateCommand(program);
|
|
47
|
+
registerAddCommand(program);
|
|
48
|
+
registerConfigCommand(program);
|
|
49
|
+
registerPluginCommand(program);
|
|
50
|
+
registerInfoCommand(program, version);
|
|
51
|
+
registerRemoveCommand(program);
|
|
52
|
+
// ─── Unknown command handler ──────────────────────────────────────────────────
|
|
53
|
+
program.on('command:*', (cmds) => {
|
|
54
|
+
console.error(chalk.red(`\n Unknown command: ${cmds[0]}\n`));
|
|
55
|
+
console.error(` Run ${chalk.cyan('avora --help')} to see all available commands.\n`);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
});
|
|
58
|
+
// ─── Parse ────────────────────────────────────────────────────────────────────
|
|
59
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
60
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
61
|
+
console.error(chalk.red('\n Fatal error: ') + message + '\n');
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.command.d.ts","sourceRoot":"","sources":["../../src/commands/add.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuBzD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import fsExtra from 'fs-extra';
|
|
3
|
+
const { writeFile, pathExists, readFile } = fsExtra;
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { findWorkspaceRoot, loadConfig, saveConfig } from '../registry/amf-config.js';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
import { resolveRegistryToken, setCredential } from '../utils/credentials.js';
|
|
8
|
+
import { password } from '../utils/prompt.js';
|
|
9
|
+
export function registerAddCommand(program) {
|
|
10
|
+
program
|
|
11
|
+
.command('add <package>')
|
|
12
|
+
.description('Install a private @avora-labs/* package from the configured registry')
|
|
13
|
+
.option('--registry <url>', 'Override registry URL')
|
|
14
|
+
.option('--token <token>', 'Auth token (prefer AVORA_REGISTRY_TOKEN env var)')
|
|
15
|
+
.option('--save-token', 'Save token to ~/.avora/credentials', false)
|
|
16
|
+
.option('--dry-run', 'Preview install without running npm')
|
|
17
|
+
.action(async (pkg, opts) => {
|
|
18
|
+
const root = await findWorkspaceRoot();
|
|
19
|
+
if (!root) {
|
|
20
|
+
logger.error('Not inside an AvoraMetaForge workspace.');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
const config = await loadConfig(root);
|
|
24
|
+
try {
|
|
25
|
+
await addPackage(root, config, pkg, opts);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
logger.error('Failed to install package.', err);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async function addPackage(root, config, pkg, opts) {
|
|
34
|
+
const registryUrl = opts['registry'] ??
|
|
35
|
+
config.registry?.url ?? 'https://npm.pkg.github.com';
|
|
36
|
+
const scope = pkg.startsWith('@') ? pkg.split('/')[0] : '@avora';
|
|
37
|
+
// ── Resolve auth token ────────────────────────────────────────────────────
|
|
38
|
+
let token = opts['token'] ?? await resolveRegistryToken(scope);
|
|
39
|
+
if (!token) {
|
|
40
|
+
logger.warning('No registry token found for scope ' + scope);
|
|
41
|
+
logger.info(` Set env var AVORA_REGISTRY_TOKEN, or enter it below.`);
|
|
42
|
+
token = await password({ message: 'GitHub PAT / registry token:' });
|
|
43
|
+
if (opts['saveToken']) {
|
|
44
|
+
await setCredential(`registry-token-${scope}`, token);
|
|
45
|
+
logger.success('Token saved to ~/.avora/credentials');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// ── Ensure .npmrc ─────────────────────────────────────────────────────────
|
|
49
|
+
const npmrcPath = join(root, '.npmrc');
|
|
50
|
+
const npmrcLine = `${scope}:registry=${registryUrl}\n//${registryUrl.replace('https://', '')}/:_authToken=${token}\n`;
|
|
51
|
+
if (!(await pathExists(npmrcPath))) {
|
|
52
|
+
await writeFile(npmrcPath, npmrcLine, 'utf-8');
|
|
53
|
+
logger.create(npmrcPath);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const existing = await readFile(npmrcPath, 'utf-8');
|
|
57
|
+
if (!existing.includes(registryUrl)) {
|
|
58
|
+
await writeFile(npmrcPath, existing + '\n' + npmrcLine, 'utf-8');
|
|
59
|
+
logger.update(npmrcPath, 'registry entry added');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (opts['dryRun']) {
|
|
63
|
+
logger.nl();
|
|
64
|
+
logger.info(`[DRY-RUN] Would run: npm install ${pkg} --registry ${registryUrl}`);
|
|
65
|
+
logger.info('Run without --dry-run to install.');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// ── npm install ───────────────────────────────────────────────────────────
|
|
69
|
+
logger.info(`Installing ${pkg} from ${registryUrl}…`);
|
|
70
|
+
await execa('npm', ['install', pkg, `--registry=${registryUrl}`], { cwd: root, stdio: 'inherit' });
|
|
71
|
+
// ── Auto-register if it's an @avora/plugin-* ─────────────────────────────
|
|
72
|
+
if (pkg.includes('plugin')) {
|
|
73
|
+
if (!(config.plugins ?? []).includes(pkg)) {
|
|
74
|
+
config.plugins = [...(config.plugins ?? []), pkg];
|
|
75
|
+
await saveConfig(root, config);
|
|
76
|
+
logger.update('avora.json', `${pkg} added to plugins`);
|
|
77
|
+
logger.info(` Remember to import and register "${pkg}" in your app.meta.ts plugins[] array.`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
logger.nl();
|
|
81
|
+
logger.success(`${pkg} installed successfully!`);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=add.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.command.js","sourceRoot":"","sources":["../../src/commands/add.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,kBAAkB,EAAI,uBAAuB,CAAC;SACrD,MAAM,CAAC,iBAAiB,EAAK,kDAAkD,CAAC;SAChF,MAAM,CAAC,cAAc,EAAQ,oCAAoC,EAAE,KAAK,CAAC;SACzE,MAAM,CAAC,WAAW,EAAW,qCAAqC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,IAAI,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,IAAY,EACZ,MAAwC,EACxC,GAAW,EACX,IAA6B;IAE7B,MAAM,WAAW,GAAI,IAAI,CAAC,UAAU,CAAY;QAC9C,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,4BAA4B,CAAC;IACvD,MAAM,KAAK,GAAS,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEvE,6EAA6E;IAC7E,IAAI,KAAK,GAAI,IAAI,CAAC,OAAO,CAAY,IAAI,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE3E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,CAAC,oCAAoC,GAAG,KAAK,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACtE,KAAK,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtB,MAAM,aAAa,CAAC,kBAAkB,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,GAAG,KAAK,aAAa,WAAW,OAAO,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,gBAAgB,KAAK,IAAI,CAAC;IAEtH,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,SAAS,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,oCAAoC,GAAG,eAAe,WAAW,EAAE,CAAC,CAAC;QACjF,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,WAAW,GAAG,CAAC,CAAC;IACtD,MAAM,KAAK,CACT,KAAK,EACL,CAAC,SAAS,EAAE,GAAG,EAAE,cAAc,WAAW,EAAE,CAAC,EAC7C,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAChC,CAAC;IAEF,4EAA4E;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,GAAG,mBAAmB,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,sCAAsC,GAAG,wCAAwC,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,CAAC;IACZ,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,0BAA0B,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.command.d.ts","sourceRoot":"","sources":["../../src/commands/config.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqC5D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { findWorkspaceRoot, loadConfig, saveConfig } from '../registry/amf-config.js';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
export function registerConfigCommand(program) {
|
|
4
|
+
program
|
|
5
|
+
.command('config [key] [value]')
|
|
6
|
+
.description('Read or write AvoraMetaForge config.\n' +
|
|
7
|
+
' Keys: defaultLayout, registry.url, app.name, auth.type\n' +
|
|
8
|
+
' Example: avora config defaultLayout horizontal')
|
|
9
|
+
.option('--list', 'List all current config values')
|
|
10
|
+
.action(async (key, value, opts) => {
|
|
11
|
+
const root = await findWorkspaceRoot();
|
|
12
|
+
if (!root) {
|
|
13
|
+
logger.error('Not inside an AvoraMetaForge workspace.');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const config = await loadConfig(root);
|
|
17
|
+
try {
|
|
18
|
+
if (opts['list'] || !key) {
|
|
19
|
+
printConfig(config);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!value) {
|
|
23
|
+
const current = getNestedValue(config, key);
|
|
24
|
+
logger.info(`${key} = ${JSON.stringify(current)}`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
setNestedValue(config, key, coerce(value));
|
|
28
|
+
await saveConfig(root, config);
|
|
29
|
+
logger.success(`${key} set to: ${value}`);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
logger.error('Config operation failed.', err);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
38
|
+
function getNestedValue(obj, key) {
|
|
39
|
+
return key.split('.').reduce((acc, part) => {
|
|
40
|
+
if (acc && typeof acc === 'object')
|
|
41
|
+
return acc[part];
|
|
42
|
+
return undefined;
|
|
43
|
+
}, obj);
|
|
44
|
+
}
|
|
45
|
+
function setNestedValue(obj, key, value) {
|
|
46
|
+
const parts = key.split('.');
|
|
47
|
+
const last = parts.pop();
|
|
48
|
+
const target = parts.reduce((acc, part) => {
|
|
49
|
+
if (!acc[part] || typeof acc[part] !== 'object')
|
|
50
|
+
acc[part] = {};
|
|
51
|
+
return acc[part];
|
|
52
|
+
}, obj);
|
|
53
|
+
target[last] = value;
|
|
54
|
+
}
|
|
55
|
+
/** Coerce string values to appropriate types */
|
|
56
|
+
function coerce(value) {
|
|
57
|
+
if (value === 'true')
|
|
58
|
+
return true;
|
|
59
|
+
if (value === 'false')
|
|
60
|
+
return false;
|
|
61
|
+
if (!isNaN(Number(value)))
|
|
62
|
+
return Number(value);
|
|
63
|
+
return value;
|
|
64
|
+
}
|
|
65
|
+
function printConfig(config) {
|
|
66
|
+
logger.nl();
|
|
67
|
+
logger.header('Current avora.json Config');
|
|
68
|
+
console.log(JSON.stringify(config, null, 2));
|
|
69
|
+
logger.nl();
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=config.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.command.js","sourceRoot":"","sources":["../../src/commands/config.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.command.d.ts","sourceRoot":"","sources":["../../src/commands/generate.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8G9D"}
|