@forgecart/cli 1.1.0 → 2.1.0
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/dist/bin/forgecart.d.ts +2 -0
- package/dist/bin/forgecart.js +4 -0
- package/dist/bin/forgecart.js.map +1 -0
- package/dist/src/cli.d.ts +14 -1
- package/dist/src/cli.js +30 -15
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/init.d.ts +39 -2
- package/dist/src/commands/init.js +173 -301
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/placeholders.d.ts +19 -0
- package/dist/src/commands/placeholders.js +109 -0
- package/dist/src/commands/placeholders.js.map +1 -0
- package/dist/src/output.d.ts +11 -0
- package/dist/src/output.js +16 -0
- package/dist/src/output.js.map +1 -0
- package/package.json +21 -11
- package/templates/storefront/.env.example +12 -0
- package/templates/storefront/.forgecartignore +2 -0
- package/templates/storefront/Procfile +1 -0
- package/templates/storefront/README.md +87 -0
- package/templates/storefront/next.config.js +14 -0
- package/templates/storefront/package.json +25 -0
- package/templates/storefront/postcss.config.js +6 -0
- package/templates/storefront/src/app/cart/page.tsx +88 -0
- package/templates/storefront/src/app/globals.css +13 -0
- package/templates/storefront/src/app/layout.tsx +32 -0
- package/templates/storefront/src/app/page.tsx +49 -0
- package/templates/storefront/src/app/products/[slug]/not-found.tsx +20 -0
- package/templates/storefront/src/app/products/[slug]/page.tsx +61 -0
- package/templates/storefront/src/app/products/page.tsx +27 -0
- package/templates/storefront/src/components/Header.tsx +47 -0
- package/templates/storefront/src/components/ProductCard.tsx +40 -0
- package/templates/storefront/src/components/ProductPurchase.tsx +91 -0
- package/templates/storefront/src/lib/cart-actions.ts +148 -0
- package/templates/storefront/src/lib/cart-context.tsx +88 -0
- package/templates/storefront/src/lib/forgecart.ts +187 -0
- package/{dist/templates/storefront-additions → templates/storefront}/tailwind.config.js +1 -1
- package/templates/storefront/tsconfig.json +23 -0
- package/LICENSE +0 -21
- package/README.md +0 -179
- package/bin/forgecart.js +0 -3
- package/dist/package.json +0 -50
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/commands/delete.d.ts +0 -3
- package/dist/src/commands/delete.d.ts.map +0 -1
- package/dist/src/commands/delete.js +0 -60
- package/dist/src/commands/delete.js.map +0 -1
- package/dist/src/commands/deploy.d.ts +0 -3
- package/dist/src/commands/deploy.d.ts.map +0 -1
- package/dist/src/commands/deploy.js +0 -243
- package/dist/src/commands/deploy.js.map +0 -1
- package/dist/src/commands/env.d.ts +0 -3
- package/dist/src/commands/env.d.ts.map +0 -1
- package/dist/src/commands/env.js +0 -158
- package/dist/src/commands/env.js.map +0 -1
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/list.d.ts +0 -3
- package/dist/src/commands/list.d.ts.map +0 -1
- package/dist/src/commands/list.js +0 -65
- package/dist/src/commands/list.js.map +0 -1
- package/dist/src/commands/login.d.ts +0 -3
- package/dist/src/commands/login.d.ts.map +0 -1
- package/dist/src/commands/login.js +0 -120
- package/dist/src/commands/login.js.map +0 -1
- package/dist/src/commands/logs.d.ts +0 -3
- package/dist/src/commands/logs.d.ts.map +0 -1
- package/dist/src/commands/logs.js +0 -88
- package/dist/src/commands/logs.js.map +0 -1
- package/dist/src/commands/scale.d.ts +0 -3
- package/dist/src/commands/scale.d.ts.map +0 -1
- package/dist/src/commands/scale.js +0 -49
- package/dist/src/commands/scale.js.map +0 -1
- package/dist/src/commands/status.d.ts +0 -3
- package/dist/src/commands/status.d.ts.map +0 -1
- package/dist/src/commands/status.js +0 -90
- package/dist/src/commands/status.js.map +0 -1
- package/dist/src/commands/whoami.d.ts +0 -3
- package/dist/src/commands/whoami.d.ts.map +0 -1
- package/dist/src/commands/whoami.js +0 -59
- package/dist/src/commands/whoami.js.map +0 -1
- package/dist/src/index.d.ts +0 -3
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -5
- package/dist/src/index.js.map +0 -1
- package/dist/src/lib/api-client.d.ts +0 -34
- package/dist/src/lib/api-client.d.ts.map +0 -1
- package/dist/src/lib/api-client.js +0 -141
- package/dist/src/lib/api-client.js.map +0 -1
- package/dist/src/lib/archive.d.ts +0 -9
- package/dist/src/lib/archive.d.ts.map +0 -1
- package/dist/src/lib/archive.js +0 -118
- package/dist/src/lib/archive.js.map +0 -1
- package/dist/src/lib/config-updater.d.ts +0 -10
- package/dist/src/lib/config-updater.d.ts.map +0 -1
- package/dist/src/lib/config-updater.js +0 -34
- package/dist/src/lib/config-updater.js.map +0 -1
- package/dist/src/lib/config.d.ts +0 -53
- package/dist/src/lib/config.d.ts.map +0 -1
- package/dist/src/lib/config.js +0 -162
- package/dist/src/lib/config.js.map +0 -1
- package/dist/src/lib/env-sync.d.ts +0 -44
- package/dist/src/lib/env-sync.d.ts.map +0 -1
- package/dist/src/lib/env-sync.js +0 -207
- package/dist/src/lib/env-sync.js.map +0 -1
- package/dist/src/lib/logger.d.ts +0 -15
- package/dist/src/lib/logger.d.ts.map +0 -1
- package/dist/src/lib/logger.js +0 -54
- package/dist/src/lib/logger.js.map +0 -1
- package/dist/src/lib/nx-generator.d.ts +0 -22
- package/dist/src/lib/nx-generator.d.ts.map +0 -1
- package/dist/src/lib/nx-generator.js +0 -345
- package/dist/src/lib/nx-generator.js.map +0 -1
- package/dist/src/lib/standalone.d.ts +0 -28
- package/dist/src/lib/standalone.d.ts.map +0 -1
- package/dist/src/lib/standalone.js +0 -107
- package/dist/src/lib/standalone.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -80
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -14
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/utils/spinner.d.ts +0 -16
- package/dist/src/utils/spinner.d.ts.map +0 -1
- package/dist/src/utils/spinner.js +0 -88
- package/dist/src/utils/spinner.js.map +0 -1
- package/dist/src/utils/validation.d.ts +0 -12
- package/dist/src/utils/validation.d.ts.map +0 -1
- package/dist/src/utils/validation.js +0 -82
- package/dist/src/utils/validation.js.map +0 -1
- package/dist/templates/application-additions/.forgecartignore +0 -37
- package/dist/templates/application-additions/Procfile +0 -1
- package/dist/templates/application-additions/src/app/app.module.ts +0 -16
- package/dist/templates/application-additions/src/services/forgecart.service.ts +0 -62
- package/dist/templates/application-additions/src/services/index.ts +0 -2
- package/dist/templates/application-additions/src/services/product-event-listener.service.ts +0 -150
- package/dist/templates/application-e2e-additions/src/support/global-setup.ts +0 -16
- package/dist/templates/application-e2e-additions/src/support/test-setup.ts +0 -9
- package/dist/templates/storefront-additions/.forgecartignore +0 -64
- package/dist/templates/storefront-additions/Procfile +0 -1
- package/dist/templates/storefront-additions/package.json +0 -11
- package/dist/templates/storefront-additions/postcss.config.js +0 -5
- package/dist/templates/storefront-additions/src/app/cart/page.tsx +0 -77
- package/dist/templates/storefront-additions/src/app/global.css +0 -1
- package/dist/templates/storefront-additions/src/app/layout.tsx +0 -25
- package/dist/templates/storefront-additions/src/app/page.tsx +0 -43
- package/dist/templates/storefront-additions/src/components/AddToCartButton.tsx +0 -29
- package/dist/templates/storefront-additions/src/components/CartItem.tsx +0 -82
- package/dist/templates/storefront-additions/src/components/Header.tsx +0 -42
- package/dist/templates/storefront-additions/src/components/ProductCard.tsx +0 -57
- package/dist/templates/storefront-additions/src/components/QuantitySelector.tsx +0 -35
- package/dist/templates/storefront-additions/src/context/CartContext.tsx +0 -158
- package/dist/templates/storefront-additions/src/lib/forgecart.ts +0 -22
- package/dist/templates/storefront-e2e-additions/playwright.config.ts +0 -26
- package/dist/templates/storefront-e2e-additions/src/example.spec.ts +0 -11
- package/dist/templates/workspace/.nxignore +0 -2
- package/templates/application-additions/.forgecartignore +0 -37
- package/templates/application-additions/Procfile +0 -1
- package/templates/application-additions/src/app/app.module.ts +0 -16
- package/templates/application-additions/src/services/forgecart.service.ts +0 -62
- package/templates/application-additions/src/services/index.ts +0 -2
- package/templates/application-additions/src/services/product-event-listener.service.ts +0 -150
- package/templates/application-e2e-additions/src/support/global-setup.ts +0 -16
- package/templates/application-e2e-additions/src/support/test-setup.ts +0 -9
- package/templates/storefront-additions/.forgecartignore +0 -64
- package/templates/storefront-additions/Procfile +0 -1
- package/templates/storefront-additions/package.json +0 -11
- package/templates/storefront-additions/postcss.config.js +0 -5
- package/templates/storefront-additions/src/app/cart/page.tsx +0 -77
- package/templates/storefront-additions/src/app/global.css +0 -1
- package/templates/storefront-additions/src/app/layout.tsx +0 -25
- package/templates/storefront-additions/src/app/page.tsx +0 -43
- package/templates/storefront-additions/src/components/AddToCartButton.tsx +0 -29
- package/templates/storefront-additions/src/components/CartItem.tsx +0 -82
- package/templates/storefront-additions/src/components/Header.tsx +0 -42
- package/templates/storefront-additions/src/components/ProductCard.tsx +0 -57
- package/templates/storefront-additions/src/components/QuantitySelector.tsx +0 -35
- package/templates/storefront-additions/src/context/CartContext.tsx +0 -158
- package/templates/storefront-additions/src/lib/forgecart.ts +0 -22
- package/templates/storefront-additions/tailwind.config.js +0 -8
- package/templates/storefront-e2e-additions/playwright.config.ts +0 -26
- package/templates/storefront-e2e-additions/src/example.spec.ts +0 -11
- package/templates/workspace/.nxignore +0 -2
package/README.md
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
# @forgecart/cli
|
|
2
|
-
|
|
3
|
-
CLI tool for deploying applications to ForgeCart's PaaS platform.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install -g @forgecart/cli
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Quick Start
|
|
12
|
-
|
|
13
|
-
1. **Create a new project:**
|
|
14
|
-
```bash
|
|
15
|
-
forgecart init my-store
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
2. **Deploy:**
|
|
19
|
-
```bash
|
|
20
|
-
cd my-store
|
|
21
|
-
forgecart deploy
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Commands
|
|
25
|
-
|
|
26
|
-
### `forgecart init [name]`
|
|
27
|
-
|
|
28
|
-
Create a new ForgeCart project.
|
|
29
|
-
|
|
30
|
-
Options:
|
|
31
|
-
- `-t, --token <token>` - ForgeCart channel token
|
|
32
|
-
- `-a, --application` - Include NestJS backend application
|
|
33
|
-
- `--api-url <url>` - ForgeCart API URL (default: https://api.forgecart.com)
|
|
34
|
-
|
|
35
|
-
### `forgecart init:application`
|
|
36
|
-
|
|
37
|
-
Add a NestJS backend application to an existing project.
|
|
38
|
-
|
|
39
|
-
### `forgecart deploy`
|
|
40
|
-
|
|
41
|
-
Deploy the current application.
|
|
42
|
-
|
|
43
|
-
Options:
|
|
44
|
-
- `--skip-build` - Skip the build step
|
|
45
|
-
|
|
46
|
-
### `forgecart list`
|
|
47
|
-
|
|
48
|
-
List all deployments for the current channel.
|
|
49
|
-
|
|
50
|
-
### `forgecart status [type]`
|
|
51
|
-
|
|
52
|
-
Show detailed deployment status.
|
|
53
|
-
|
|
54
|
-
Arguments:
|
|
55
|
-
- `type` - Deployment type: `storefront` or `application`
|
|
56
|
-
|
|
57
|
-
### `forgecart logs [type]`
|
|
58
|
-
|
|
59
|
-
View deployment logs.
|
|
60
|
-
|
|
61
|
-
Arguments:
|
|
62
|
-
- `type` - Deployment type (default: `storefront`)
|
|
63
|
-
|
|
64
|
-
Options:
|
|
65
|
-
- `-f, --follow` - Follow log output
|
|
66
|
-
- `-n, --lines <number>` - Number of lines to show (default: 100)
|
|
67
|
-
|
|
68
|
-
### `forgecart delete <type>`
|
|
69
|
-
|
|
70
|
-
Delete a deployment.
|
|
71
|
-
|
|
72
|
-
Arguments:
|
|
73
|
-
- `type` - Deployment type: `storefront` or `application`
|
|
74
|
-
|
|
75
|
-
Options:
|
|
76
|
-
- `-f, --force` - Skip confirmation prompt
|
|
77
|
-
|
|
78
|
-
### `forgecart scale <type> <instances>`
|
|
79
|
-
|
|
80
|
-
Scale a deployment.
|
|
81
|
-
|
|
82
|
-
Arguments:
|
|
83
|
-
- `type` - Deployment type: `storefront` or `application`
|
|
84
|
-
- `instances` - Number of instances (0-10)
|
|
85
|
-
|
|
86
|
-
### `forgecart env`
|
|
87
|
-
|
|
88
|
-
Manage environment variables.
|
|
89
|
-
|
|
90
|
-
Subcommands:
|
|
91
|
-
- `forgecart env get <type>` - Get environment variables
|
|
92
|
-
- `forgecart env set <type> <key> <value>` - Set an environment variable
|
|
93
|
-
- `forgecart env unset <type> <key>` - Remove an environment variable
|
|
94
|
-
|
|
95
|
-
### `forgecart whoami`
|
|
96
|
-
|
|
97
|
-
Show current channel information.
|
|
98
|
-
|
|
99
|
-
## Project Structure
|
|
100
|
-
|
|
101
|
-
After running `forgecart init`, your project will have the following structure:
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
my-store/
|
|
105
|
-
├── .forgecart/
|
|
106
|
-
│ └── config.json # ForgeCart configuration
|
|
107
|
-
├── nx.json # NX workspace configuration
|
|
108
|
-
├── package.json # Root package.json
|
|
109
|
-
├── tsconfig.base.json # TypeScript configuration
|
|
110
|
-
├── apps/
|
|
111
|
-
│ ├── storefront/ # Next.js frontend (required)
|
|
112
|
-
│ │ ├── src/
|
|
113
|
-
│ │ │ ├── lib/
|
|
114
|
-
│ │ │ │ └── forgecart.ts # SDK client
|
|
115
|
-
│ │ │ └── app/
|
|
116
|
-
│ │ │ └── products/
|
|
117
|
-
│ │ │ └── page.tsx # Example products page
|
|
118
|
-
│ │ ├── Procfile # Deployment configuration
|
|
119
|
-
│ │ └── .forgecartignore # Files to exclude from deploy
|
|
120
|
-
│ └── application/ # NestJS backend (optional)
|
|
121
|
-
│ ├── src/
|
|
122
|
-
│ │ └── services/
|
|
123
|
-
│ │ └── price-fetcher.service.ts # SDK example
|
|
124
|
-
│ ├── Procfile # Deployment configuration
|
|
125
|
-
│ └── .forgecartignore # Files to exclude from deploy
|
|
126
|
-
└── libs/ # Shared libraries (optional)
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## Configuration
|
|
130
|
-
|
|
131
|
-
The CLI stores configuration in `.forgecart/config.json`:
|
|
132
|
-
|
|
133
|
-
```json
|
|
134
|
-
{
|
|
135
|
-
"version": "1.0",
|
|
136
|
-
"channelToken": "your-channel-token",
|
|
137
|
-
"apiUrl": "https://api.forgecart.com",
|
|
138
|
-
"hasApplication": false,
|
|
139
|
-
"storefrontPath": "apps/storefront",
|
|
140
|
-
"applicationPath": "apps/application"
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## Environment Variables
|
|
145
|
-
|
|
146
|
-
Set environment variables for your deployments:
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
# Set SDK credentials
|
|
150
|
-
forgecart env set storefront FORGECART_CHANNEL_TOKEN your-token
|
|
151
|
-
forgecart env set storefront FORGECART_API_URL https://api.forgecart.com
|
|
152
|
-
|
|
153
|
-
# View all environment variables
|
|
154
|
-
forgecart env get storefront
|
|
155
|
-
|
|
156
|
-
# Remove an environment variable
|
|
157
|
-
forgecart env unset storefront MY_VAR
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## Deployment Workflow
|
|
161
|
-
|
|
162
|
-
1. Make changes to your code
|
|
163
|
-
2. Run `forgecart deploy` from your project root or app directory
|
|
164
|
-
3. The CLI will:
|
|
165
|
-
- Build your application using NX
|
|
166
|
-
- Create a deployment archive
|
|
167
|
-
- Upload and deploy to ForgeCart
|
|
168
|
-
- Wait for the deployment to be ready
|
|
169
|
-
4. View your live application at the provided URL
|
|
170
|
-
|
|
171
|
-
## Requirements
|
|
172
|
-
|
|
173
|
-
- Node.js >= 18.0.0
|
|
174
|
-
- npm or yarn
|
|
175
|
-
- A ForgeCart account with a valid channel token
|
|
176
|
-
|
|
177
|
-
## License
|
|
178
|
-
|
|
179
|
-
MIT
|
package/bin/forgecart.js
DELETED
package/dist/package.json
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@forgecart/cli",
|
|
3
|
-
"version": "1.1.0",
|
|
4
|
-
"type": "module",
|
|
5
|
-
"description": "CLI tool for deploying applications to ForgeCart",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"bin": {
|
|
8
|
-
"forgecart": "./bin/forgecart.js"
|
|
9
|
-
},
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"@forgecart/sdk": "workspace:*",
|
|
12
|
-
"@nestjs/common": "11.1.6",
|
|
13
|
-
"archiver": "7.0.1",
|
|
14
|
-
"axios": "1.12.2",
|
|
15
|
-
"chalk": "5.6.2",
|
|
16
|
-
"change-case-all": "2.1.0",
|
|
17
|
-
"cli-table3": "0.6.5",
|
|
18
|
-
"commander": "12.1.0",
|
|
19
|
-
"form-data": "4.0.4",
|
|
20
|
-
"graphql": "16.11.0",
|
|
21
|
-
"graphql-request": "6.1.0",
|
|
22
|
-
"inquirer": "9.3.8",
|
|
23
|
-
"open": "10.2.0",
|
|
24
|
-
"ora": "8.2.0",
|
|
25
|
-
"rxjs": "7.8.2",
|
|
26
|
-
"shiki": "3.20.0",
|
|
27
|
-
"ws": "8.18.3",
|
|
28
|
-
"@jest/globals": "30.1.2",
|
|
29
|
-
"tslib": "2.4.1"
|
|
30
|
-
},
|
|
31
|
-
"files": [
|
|
32
|
-
"dist",
|
|
33
|
-
"bin",
|
|
34
|
-
"templates"
|
|
35
|
-
],
|
|
36
|
-
"engines": {
|
|
37
|
-
"node": ">=18.0.0"
|
|
38
|
-
},
|
|
39
|
-
"keywords": [
|
|
40
|
-
"forgecart",
|
|
41
|
-
"cli",
|
|
42
|
-
"deploy",
|
|
43
|
-
"paas",
|
|
44
|
-
"nodejs"
|
|
45
|
-
],
|
|
46
|
-
"author": "ForgeCart",
|
|
47
|
-
"license": "MIT",
|
|
48
|
-
"types": "./src/index.d.ts",
|
|
49
|
-
"module": "./src/index.js"
|
|
50
|
-
}
|
package/dist/src/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBnC,wBAAgB,aAAa,IAAI,OAAO,CAsBvC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import inquirer from 'inquirer';
|
|
3
|
-
import logger from '../lib/logger.js';
|
|
4
|
-
import { requireConfig, requireAuth } from '../lib/config.js';
|
|
5
|
-
import { ForgecartApiClient } from '../lib/api-client.js';
|
|
6
|
-
import { DeploymentType } from '../types/index.js';
|
|
7
|
-
import { withSpinner } from '../utils/spinner.js';
|
|
8
|
-
export function createDeleteCommand() {
|
|
9
|
-
const cmd = new Command('delete')
|
|
10
|
-
.description('Delete a deployment')
|
|
11
|
-
.argument('<type>', 'Deployment type (storefront or application)')
|
|
12
|
-
.option('-f, --force', 'Skip confirmation prompt')
|
|
13
|
-
.action(async (type, options) => {
|
|
14
|
-
await deleteDeployment(type, options);
|
|
15
|
-
});
|
|
16
|
-
return cmd;
|
|
17
|
-
}
|
|
18
|
-
async function deleteDeployment(type, options) {
|
|
19
|
-
// Validate type
|
|
20
|
-
if (type !== DeploymentType.STOREFRONT &&
|
|
21
|
-
type !== DeploymentType.APPLICATION) {
|
|
22
|
-
logger.error('Invalid deployment type. Use "storefront" or "application".');
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
// Check authentication first
|
|
26
|
-
const authToken = requireAuth();
|
|
27
|
-
const config = requireConfig();
|
|
28
|
-
const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, authToken);
|
|
29
|
-
// Check if deployment exists
|
|
30
|
-
const deployment = await apiClient.getDeployment(type);
|
|
31
|
-
if (!deployment) {
|
|
32
|
-
logger.error(`No ${type} deployment found`);
|
|
33
|
-
process.exit(1);
|
|
34
|
-
}
|
|
35
|
-
// Confirm deletion
|
|
36
|
-
if (!options.force) {
|
|
37
|
-
const { confirm } = await inquirer.prompt([
|
|
38
|
-
{
|
|
39
|
-
type: 'confirm',
|
|
40
|
-
name: 'confirm',
|
|
41
|
-
message: `Are you sure you want to delete the ${type} deployment? This action cannot be undone.`,
|
|
42
|
-
default: false,
|
|
43
|
-
},
|
|
44
|
-
]);
|
|
45
|
-
if (!confirm) {
|
|
46
|
-
logger.info('Deletion cancelled');
|
|
47
|
-
apiClient.dispose();
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Delete deployment
|
|
52
|
-
await withSpinner(`Deleting ${type} deployment...`, `${type} deployment deleted`, `Failed to delete ${type} deployment`, async () => {
|
|
53
|
-
const success = await apiClient.deleteDeployment(type);
|
|
54
|
-
if (!success) {
|
|
55
|
-
throw new Error('Deletion failed');
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
apiClient.dispose();
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=delete.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,MAAM,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;SAC9B,WAAW,CAAC,qBAAqB,CAAC;SAClC,QAAQ,CAAC,QAAQ,EAAE,6CAA6C,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA4B,EAAE,EAAE;QAC3D,MAAM,gBAAgB,CAAC,IAAsB,EAAE,OAAO,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,IAAoB,EACpB,OAA4B;IAE5B,gBAAgB;IAChB,IACE,IAAI,KAAK,cAAc,CAAC,UAAU;QAClC,IAAI,KAAK,cAAc,CAAC,WAAW,EACnC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAG,WAAW,EAAE,CAAA;IAE/B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,GAAG,IAAI,kBAAkB,CACtC,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,YAAY,EACnB,SAAS,CACV,CAAA;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAA;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,uCAAuC,IAAI,4CAA4C;gBAChG,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YACjC,SAAS,CAAC,OAAO,EAAE,CAAA;YACnB,OAAM;QACR,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,CACf,YAAY,IAAI,gBAAgB,EAChC,GAAG,IAAI,qBAAqB,EAC5B,oBAAoB,IAAI,aAAa,EACrC,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,CACF,CAAA;IAED,SAAS,CAAC,OAAO,EAAE,CAAA;AACrB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBnC,wBAAgB,mBAAmB,IAAI,OAAO,CAS7C"}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
import * as path from 'path';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
import { Command } from 'commander';
|
|
4
|
-
import logger from '../lib/logger.js';
|
|
5
|
-
import { requireConfig, getProjectRoot, requireAuth } from '../lib/config.js';
|
|
6
|
-
import { ForgecartApiClient } from '../lib/api-client.js';
|
|
7
|
-
import { createArchive, getIgnoreFileForType } from '../lib/archive.js';
|
|
8
|
-
import { runNxBuild, runNxBuildMany } from '../lib/nx-generator.js';
|
|
9
|
-
import { prepareStandaloneDeployment, prepareApplicationDeployment, } from '../lib/standalone.js';
|
|
10
|
-
import { getCurrentAppDir } from '../utils/validation.js';
|
|
11
|
-
import { withSpinner, withSpinnerAndLogs } from '../utils/spinner.js';
|
|
12
|
-
import { DeploymentType } from '../types/index.js';
|
|
13
|
-
import { parseEnvFile } from '../lib/env-sync.js';
|
|
14
|
-
export function createDeployCommand() {
|
|
15
|
-
const cmd = new Command('deploy')
|
|
16
|
-
.description('Deploy the current application')
|
|
17
|
-
.option('--skip-build', 'Skip the build step')
|
|
18
|
-
.action(async (options) => {
|
|
19
|
-
await deploy(options);
|
|
20
|
-
});
|
|
21
|
-
return cmd;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Gets all deployable applications based on config.
|
|
25
|
-
*/
|
|
26
|
-
function getDeployableApps(projectRoot, config) {
|
|
27
|
-
const apps = [];
|
|
28
|
-
// Storefront is always deployable if path is configured
|
|
29
|
-
const storefrontPath = path.join(projectRoot, config.storefrontPath || 'apps/storefront');
|
|
30
|
-
apps.push({ type: DeploymentType.STOREFRONT, appDir: storefrontPath });
|
|
31
|
-
// Application is deployable if hasApplication is true in config
|
|
32
|
-
if (config.hasApplication) {
|
|
33
|
-
const applicationPath = path.join(projectRoot, config.applicationPath || 'apps/application');
|
|
34
|
-
apps.push({ type: DeploymentType.APPLICATION, appDir: applicationPath });
|
|
35
|
-
}
|
|
36
|
-
return apps;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Deploys a single application.
|
|
40
|
-
*/
|
|
41
|
-
async function deploySingleApp(apiClient, deployType, appDir, projectRoot, skipBuild) {
|
|
42
|
-
const prefix = `[${deployType}]`;
|
|
43
|
-
// Read env vars from .env file (used for both create and deploy)
|
|
44
|
-
const envFilePath = path.join(appDir, '.env');
|
|
45
|
-
let envVars;
|
|
46
|
-
let envVarsMap;
|
|
47
|
-
if (fs.existsSync(envFilePath)) {
|
|
48
|
-
const parsed = parseEnvFile(envFilePath);
|
|
49
|
-
if (parsed.length > 0) {
|
|
50
|
-
envVars = parsed;
|
|
51
|
-
envVarsMap = Object.fromEntries(parsed.map((v) => [v.key, v.value]));
|
|
52
|
-
logger.info(`${prefix} Found ${parsed.length} env vars in .env`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// Check/create deployment (with env vars for first deploy)
|
|
56
|
-
let deployment = await withSpinner(`${prefix} Checking deployment status...`, `${prefix} Deployment ready`, `${prefix} Failed to check deployment`, async () => {
|
|
57
|
-
let dep = await apiClient.getDeployment(deployType);
|
|
58
|
-
if (!dep) {
|
|
59
|
-
logger.info(`${prefix} Creating new deployment...`);
|
|
60
|
-
dep = await apiClient.createDeployment(deployType, envVars);
|
|
61
|
-
}
|
|
62
|
-
return dep;
|
|
63
|
-
});
|
|
64
|
-
// Clean up old .deploy directory if exists (legacy cleanup)
|
|
65
|
-
const oldDeployDir = path.join(appDir, '.deploy');
|
|
66
|
-
if (fs.existsSync(oldDeployDir)) {
|
|
67
|
-
fs.rmSync(oldDeployDir, { recursive: true });
|
|
68
|
-
}
|
|
69
|
-
// Build the app
|
|
70
|
-
if (!skipBuild) {
|
|
71
|
-
await withSpinner(`${prefix} Building...`, `${prefix} Build completed`, `${prefix} Build failed`, async () => {
|
|
72
|
-
const success = await runNxBuild(deployType, projectRoot);
|
|
73
|
-
if (!success) {
|
|
74
|
-
throw new Error('Build failed');
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
logger.info(`${prefix} Skipping build step`);
|
|
80
|
-
}
|
|
81
|
-
// Prepare deployment based on type
|
|
82
|
-
let archiveSourceDir = appDir;
|
|
83
|
-
let includeEnvFile = false;
|
|
84
|
-
if (deployType === DeploymentType.STOREFRONT) {
|
|
85
|
-
await withSpinner(`${prefix} Preparing standalone deployment...`, `${prefix} Standalone prepared`, `${prefix} Failed to prepare standalone`, async () => {
|
|
86
|
-
await prepareStandaloneDeployment(appDir);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
else if (deployType === DeploymentType.APPLICATION) {
|
|
90
|
-
archiveSourceDir = await withSpinner(`${prefix} Preparing application deployment...`, `${prefix} Application prepared`, `${prefix} Failed to prepare application`, async () => {
|
|
91
|
-
return prepareApplicationDeployment(appDir, projectRoot);
|
|
92
|
-
});
|
|
93
|
-
// Do not include .env file in archive - use CLI env sync instead
|
|
94
|
-
includeEnvFile = false;
|
|
95
|
-
}
|
|
96
|
-
// Create archive
|
|
97
|
-
const zipBuffer = await withSpinner(`${prefix} Creating deployment archive...`, `${prefix} Archive created`, `${prefix} Failed to create archive`, async () => {
|
|
98
|
-
const ignoreFile = getIgnoreFileForType();
|
|
99
|
-
return createArchive({
|
|
100
|
-
sourceDir: archiveSourceDir,
|
|
101
|
-
ignoreFile,
|
|
102
|
-
includeEnvFile,
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
logger.info(`${prefix} Archive size: ${(zipBuffer.length / 1024 / 1024).toFixed(2)} MB`);
|
|
106
|
-
// Upload and deploy (with env vars for subsequent deploys)
|
|
107
|
-
deployment = await withSpinner(`${prefix} Uploading and deploying...`, `${prefix} Deployment successful`, `${prefix} Deployment failed`, async () => {
|
|
108
|
-
return apiClient.uploadAndDeploy(deployType, zipBuffer, envVarsMap);
|
|
109
|
-
});
|
|
110
|
-
// Subscribe to deployment logs (backend auto-detects staging vs runtime)
|
|
111
|
-
const logSubscription = apiClient.subscribeToDeploymentLogs(deployType);
|
|
112
|
-
// Wait for deployment to be ready with log streaming
|
|
113
|
-
await withSpinnerAndLogs(`${prefix} Waiting for deployment to be ready...`, `${prefix} Deployment is live`, `${prefix} Deployment check failed`, async () => {
|
|
114
|
-
let attempts = 0;
|
|
115
|
-
const maxAttempts = 60; // 5 minutes max
|
|
116
|
-
while (attempts < maxAttempts) {
|
|
117
|
-
const status = await apiClient.refreshDeploymentStatus(deployType);
|
|
118
|
-
if (status?.status === 'RUNNING') {
|
|
119
|
-
deployment = status;
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
if (status?.status === 'ERROR') {
|
|
123
|
-
throw new Error(status.errorMessage || 'Deployment failed');
|
|
124
|
-
}
|
|
125
|
-
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
126
|
-
attempts++;
|
|
127
|
-
}
|
|
128
|
-
throw new Error('Deployment timed out');
|
|
129
|
-
}, logSubscription);
|
|
130
|
-
return deployment;
|
|
131
|
-
}
|
|
132
|
-
async function deploy(options) {
|
|
133
|
-
logger.title('ForgeCart Deployment');
|
|
134
|
-
// Check authentication first
|
|
135
|
-
const authToken = requireAuth();
|
|
136
|
-
// Get config and validate
|
|
137
|
-
const config = requireConfig();
|
|
138
|
-
const projectRoot = getProjectRoot();
|
|
139
|
-
// Initialize API client
|
|
140
|
-
const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, authToken);
|
|
141
|
-
// Validate token
|
|
142
|
-
await withSpinner('Validating channel token...', 'Channel token validated', 'Invalid channel token', async () => {
|
|
143
|
-
const isValid = await apiClient.validateChannelToken();
|
|
144
|
-
if (!isValid) {
|
|
145
|
-
throw new Error('Invalid channel token');
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
// Check if we're in a specific app directory
|
|
149
|
-
const currentApp = getCurrentAppDir(projectRoot);
|
|
150
|
-
if (currentApp) {
|
|
151
|
-
// Deploy single app from its directory
|
|
152
|
-
const appDir = path.join(projectRoot, `apps/${currentApp.type}`);
|
|
153
|
-
logger.info(`Detected ${currentApp.type} application`);
|
|
154
|
-
const deployment = await deploySingleApp(apiClient, currentApp.type, appDir, projectRoot, options.skipBuild ?? false);
|
|
155
|
-
// Success message
|
|
156
|
-
logger.newline();
|
|
157
|
-
logger.box(`Deployment successful!
|
|
158
|
-
|
|
159
|
-
Type: ${deployment.type}
|
|
160
|
-
Status: ${deployment.status}
|
|
161
|
-
URL: ${deployment.url}
|
|
162
|
-
|
|
163
|
-
View logs with:
|
|
164
|
-
forgecart logs ${deployment.type}`);
|
|
165
|
-
apiClient.dispose();
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
// In project root - find all deployable apps
|
|
169
|
-
const apps = getDeployableApps(projectRoot, config);
|
|
170
|
-
if (apps.length === 0) {
|
|
171
|
-
logger.error('No deployable applications found. Please run from apps/storefront or apps/application directory.');
|
|
172
|
-
process.exit(1);
|
|
173
|
-
}
|
|
174
|
-
if (apps.length === 1) {
|
|
175
|
-
// Single app found - deploy it
|
|
176
|
-
const app = apps[0];
|
|
177
|
-
logger.info(`Deploying ${app.type}`);
|
|
178
|
-
const deployment = await deploySingleApp(apiClient, app.type, app.appDir, projectRoot, options.skipBuild ?? false);
|
|
179
|
-
// Success message
|
|
180
|
-
logger.newline();
|
|
181
|
-
logger.box(`Deployment successful!
|
|
182
|
-
|
|
183
|
-
Type: ${deployment.type}
|
|
184
|
-
Status: ${deployment.status}
|
|
185
|
-
URL: ${deployment.url}
|
|
186
|
-
|
|
187
|
-
View logs with:
|
|
188
|
-
forgecart logs ${deployment.type}`);
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
// Multiple apps found
|
|
192
|
-
logger.info(`Found ${apps.length} applications to deploy: ${apps.map((a) => a.type).join(', ')}`);
|
|
193
|
-
logger.newline();
|
|
194
|
-
// Clean up ALL staging directories before any builds start
|
|
195
|
-
for (const app of apps) {
|
|
196
|
-
const oldDeployDir = path.join(app.appDir, '.deploy');
|
|
197
|
-
if (fs.existsSync(oldDeployDir)) {
|
|
198
|
-
fs.rmSync(oldDeployDir, { recursive: true });
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
// Only delete the staging subdirectory, not the entire .forgecart (which contains config.json)
|
|
202
|
-
const stagingDir = path.join(projectRoot, '.forgecart', 'application-deploy');
|
|
203
|
-
if (fs.existsSync(stagingDir)) {
|
|
204
|
-
fs.rmSync(stagingDir, { recursive: true });
|
|
205
|
-
}
|
|
206
|
-
// Build all apps at once using nx run-many
|
|
207
|
-
if (!options.skipBuild) {
|
|
208
|
-
await withSpinner('Building all applications...', 'All builds completed', 'Build failed', async () => {
|
|
209
|
-
const success = await runNxBuildMany(apps.map((a) => a.type), projectRoot);
|
|
210
|
-
if (!success) {
|
|
211
|
-
throw new Error('Build failed');
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
// Deploy apps SEQUENTIALLY (application first, then storefront)
|
|
216
|
-
const orderedApps = [...apps].sort((a) => a.type === DeploymentType.APPLICATION ? -1 : 1);
|
|
217
|
-
const results = [];
|
|
218
|
-
for (const app of orderedApps) {
|
|
219
|
-
logger.info(`Deploying ${app.type}...`);
|
|
220
|
-
const deployment = await deploySingleApp(apiClient, app.type, app.appDir, projectRoot, true // skipBuild - already built above
|
|
221
|
-
);
|
|
222
|
-
results.push(deployment);
|
|
223
|
-
logger.newline();
|
|
224
|
-
}
|
|
225
|
-
// Success message for all deployments
|
|
226
|
-
logger.newline();
|
|
227
|
-
const summaryLines = results
|
|
228
|
-
.map((dep) => `${dep.type}:
|
|
229
|
-
Status: ${dep.status}
|
|
230
|
-
URL: ${dep.url}`)
|
|
231
|
-
.join('\n\n');
|
|
232
|
-
logger.box(`All deployments successful!
|
|
233
|
-
|
|
234
|
-
${summaryLines}
|
|
235
|
-
|
|
236
|
-
View logs with:
|
|
237
|
-
forgecart logs storefront
|
|
238
|
-
forgecart logs application`);
|
|
239
|
-
}
|
|
240
|
-
// Dispose API client to close any open connections
|
|
241
|
-
apiClient.dispose();
|
|
242
|
-
}
|
|
243
|
-
//# sourceMappingURL=deploy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,wBAAgB,gBAAgB,IAAI,OAAO,CAkC1C"}
|