@cxtms/cx-schema 1.7.14 → 1.7.16
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/.claude/skills/cx-core/SKILL.md +1 -1
- package/.claude/skills/cx-core/ref-cli-auth.md +7 -7
- package/.claude/skills/cx-core/ref-entity-organization.md +41 -0
- package/.claude/skills/cx-module/SKILL.md +17 -17
- package/.claude/skills/cx-module/ref-components-layout.md +41 -0
- package/.claude/skills/cx-module/ref-components-specialized.md +40 -0
- package/.claude/skills/cx-workflow/SKILL.md +17 -17
- package/dist/cli.js +14 -14
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,7 +10,7 @@ Shared domain reference for CargoXplorer entities. Used by `cx-workflow` and `cx
|
|
|
10
10
|
|
|
11
11
|
## CX Server Authentication & Management
|
|
12
12
|
|
|
13
|
-
For CLI authentication, PAT tokens, org management, and
|
|
13
|
+
For CLI authentication, PAT tokens, org management, and releasing: see [ref-cli-auth.md](ref-cli-auth.md)
|
|
14
14
|
|
|
15
15
|
## GraphQL Querying & Audit History
|
|
16
16
|
|
|
@@ -61,7 +61,7 @@ npx cxtms orgs use <orgId>
|
|
|
61
61
|
npx cxtms orgs use
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
The active org is cached in the session file and used by all server commands. **Always pass `--org <id>` on deploy/undeploy/
|
|
64
|
+
The active org is cached in the session file and used by all server commands. **Always pass `--org <id>` on deploy/undeploy/release/execute/logs commands** to avoid the interactive org picker blocking automation.
|
|
65
65
|
|
|
66
66
|
## Session Resolution
|
|
67
67
|
|
|
@@ -88,7 +88,7 @@ Validates all YAML files first, then pushes modules and workflows to the server.
|
|
|
88
88
|
|
|
89
89
|
## App Manifest Management
|
|
90
90
|
|
|
91
|
-
Server-side app manifest operations — install from git,
|
|
91
|
+
Server-side app manifest operations — install from git, release changes to git, and list installed apps.
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
94
|
# Install/refresh app from its git repository into the CX server
|
|
@@ -103,11 +103,11 @@ npx cxtms app install --branch develop
|
|
|
103
103
|
# Install but skip modules that have unpublished local changes
|
|
104
104
|
npx cxtms app install --skip-changed
|
|
105
105
|
|
|
106
|
-
#
|
|
107
|
-
npx cxtms app
|
|
106
|
+
# Release server changes to git (creates a PR) — message is required
|
|
107
|
+
npx cxtms app release -m "Add new shipping module"
|
|
108
108
|
|
|
109
|
-
# Force
|
|
110
|
-
npx cxtms app
|
|
109
|
+
# Force release all modules and workflows (not just changed ones)
|
|
110
|
+
npx cxtms app release -m "Full republish" --force
|
|
111
111
|
|
|
112
112
|
# List installed app manifests on the server
|
|
113
113
|
npx cxtms app list
|
|
@@ -115,6 +115,6 @@ npx cxtms app list
|
|
|
115
115
|
|
|
116
116
|
**`app install`** reads `repository` and `branch` from `app.yaml`, downloads the repo on the server side, and installs/updates all modules and workflows. Use `--force` to reinstall even if the version hasn't changed. Use `--skip-changed` to preserve modules with unpublished changes.
|
|
117
117
|
|
|
118
|
-
**`app
|
|
118
|
+
**`app release`** takes the current server state and releases it to git by creating a PR. Requires a `-m` message describing the changes (like a git commit message). The server increments the version, creates a release branch, commits all module/workflow YAML files, and opens a pull request to the target branch.
|
|
119
119
|
|
|
120
120
|
**`app list`** shows all installed app manifests with their version, status flags (disabled, unpublished changes, update available), and repository info.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Organization Entity Reference
|
|
2
|
+
|
|
3
|
+
Core tenant entity. Each organization represents a company/tenant in the system.
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
| Field | Type | Notes |
|
|
8
|
+
|-------|------|-------|
|
|
9
|
+
| `organizationId` | `int` | PK |
|
|
10
|
+
| `companyName` | `string` | Required |
|
|
11
|
+
| `addressLine` | `string?` | |
|
|
12
|
+
| `addressLine2` | `string?` | |
|
|
13
|
+
| `cityName` | `string?` | |
|
|
14
|
+
| `countryCode` | `string?` | |
|
|
15
|
+
| `stateCode` | `string?` | |
|
|
16
|
+
| `postalCode` | `string?` | |
|
|
17
|
+
| `phoneNumber` | `string?` | |
|
|
18
|
+
| `faxNumber` | `string?` | |
|
|
19
|
+
| `uniqueId` | `Guid` | Immutable external identifier |
|
|
20
|
+
| `slug` | `string?` | URL-friendly identifier for Public API routes (lowercase, hyphenated) |
|
|
21
|
+
| `isDeleted` | `bool` | Soft delete |
|
|
22
|
+
| `customValues` | `Dictionary?` | jsonb, merged on update |
|
|
23
|
+
| `created` / `lastModified` | `DateTime` | Audit fields (from `AuditableEntity`) |
|
|
24
|
+
| `createdBy` / `lastModifiedBy` | `string` | Audit fields |
|
|
25
|
+
|
|
26
|
+
## Slug
|
|
27
|
+
|
|
28
|
+
Generated by `SlugGenerator`: lowercased, non-alphanumeric stripped, spaces→hyphens, truncated to max length. Numeric suffix appended for uniqueness.
|
|
29
|
+
|
|
30
|
+
Used by `PublicApiOrganizationResolver` to resolve org by slug or GUID in Public API URLs. Cached 1h sliding.
|
|
31
|
+
|
|
32
|
+
## Relationships
|
|
33
|
+
|
|
34
|
+
- `AspNetUserEmployees` — users belonging to this organization
|
|
35
|
+
|
|
36
|
+
## Domain Methods
|
|
37
|
+
|
|
38
|
+
- `ChangeSlug(string?)` — trims and lowercases
|
|
39
|
+
- `ChangeCompanyName(string)`, `ChangeAddressLine(string?)`, etc.
|
|
40
|
+
- `ChangeCustomValues(Dictionary?)` — merges into existing values
|
|
41
|
+
- `DeleteOrganization()` — sets `IsDeleted = true`
|
|
@@ -20,7 +20,7 @@ You are a CargoXplorer module YAML builder. You generate schema-valid YAML for C
|
|
|
20
20
|
- **Feature folder**: `npx cxtms create module <name> --template <template> --feature <feature-name>`
|
|
21
21
|
- **Deploy to server**: `npx cxtms appmodule deploy <file.yaml> --org <id>` — creates or updates module on the CX server
|
|
22
22
|
- **Undeploy from server**: `npx cxtms appmodule undeploy <appModuleId> --org <id>` — removes a module by UUID
|
|
23
|
-
- **Publish all**: `npx cxtms publish [--feature <name>] --org <id>` —
|
|
23
|
+
- **Publish all**: `npx cxtms publish [--feature <name>] --org <id>` — deploy all modules and workflows to the server
|
|
24
24
|
|
|
25
25
|
## Generation Workflow
|
|
26
26
|
|
|
@@ -409,28 +409,28 @@ Reusable select components (e.g., `Countries/Select`, `Ports/Select`) follow thi
|
|
|
409
409
|
|
|
410
410
|
## Server Module Commands
|
|
411
411
|
|
|
412
|
-
Deploy, undeploy, and
|
|
412
|
+
Deploy, undeploy, and release commands are listed in the CLI section at the top of this file. For authentication setup (login, PAT tokens, org management): see [cx-core/ref-cli-auth.md](.claude/skills/cx-core/ref-cli-auth.md)
|
|
413
413
|
|
|
414
|
-
###
|
|
414
|
+
### Releasing App to GitHub
|
|
415
415
|
|
|
416
|
-
Use `app
|
|
416
|
+
Use `app release` to release modified modules and workflows from the CX server to a GitHub repository. This creates a branch and pull request — it does NOT push directly to the target branch.
|
|
417
417
|
|
|
418
418
|
```bash
|
|
419
|
-
#
|
|
420
|
-
npx cxtms app
|
|
419
|
+
# Release all unpublished changes to GitHub (creates a PR) — message is required
|
|
420
|
+
npx cxtms app release -m "Add warehouse locations module"
|
|
421
421
|
|
|
422
|
-
#
|
|
423
|
-
npx cxtms app
|
|
424
|
-
npx cxtms app
|
|
422
|
+
# Release specific modules and/or workflows by YAML file
|
|
423
|
+
npx cxtms app release -m "Fix country module" modules/my-module.yaml
|
|
424
|
+
npx cxtms app release -m "Update billing" modules/a.yaml workflows/b.yaml
|
|
425
425
|
|
|
426
|
-
# Force
|
|
427
|
-
npx cxtms app
|
|
426
|
+
# Force release all modules and workflows (not just unpublished ones)
|
|
427
|
+
npx cxtms app release -m "Full republish" --force
|
|
428
428
|
|
|
429
|
-
#
|
|
430
|
-
npx cxtms app
|
|
429
|
+
# Release with explicit org
|
|
430
|
+
npx cxtms app release -m "Add warehouse locations module" --org 42
|
|
431
431
|
```
|
|
432
432
|
|
|
433
|
-
**What `app
|
|
433
|
+
**What `app release` does:**
|
|
434
434
|
1. Reads `app.yaml` for the `id` (appManifestId), repository, and branch
|
|
435
435
|
2. Increments the app version (patch bump)
|
|
436
436
|
3. Creates a `publish/{app-name}-v{version}-{timestamp}` branch on GitHub
|
|
@@ -438,11 +438,11 @@ npx cxtms app publish -m "Add warehouse locations module" --org 42
|
|
|
438
438
|
5. Creates a pull request from the publish branch to the target branch
|
|
439
439
|
6. Marks published modules and workflows as `hasUnpublishedChanges: false`
|
|
440
440
|
|
|
441
|
-
**This is a
|
|
441
|
+
**This is a release-to-git operation** — it commits the current server-side YAML directly to GitHub via the API. No local git repo is involved. The modules and workflows being released are taken from the CX server database, not from local files. The YAML file arguments only identify *which* items to include by their IDs.
|
|
442
442
|
|
|
443
|
-
**Important:** Modules and workflows must be deployed to the TMS server before they can be
|
|
443
|
+
**Important:** Modules and workflows must be deployed to the TMS server before they can be released. Use `cxtms appmodule deploy` or `cxtms workflow deploy` first, then `cxtms app release` to commit them to GitHub.
|
|
444
444
|
|
|
445
|
-
**Do NOT run `app
|
|
445
|
+
**Do NOT run `app release` automatically.** Only release when the user explicitly requests it. Releasing creates a branch and PR on GitHub, so it should be done once when all changes are ready — not after every deploy.
|
|
446
446
|
|
|
447
447
|
**Prerequisites:**
|
|
448
448
|
- `app.yaml` must exist with a valid `id` field
|
|
@@ -288,6 +288,47 @@ children:
|
|
|
288
288
|
|
|
289
289
|
---
|
|
290
290
|
|
|
291
|
+
## slot
|
|
292
|
+
|
|
293
|
+
Extension point that renders dynamically registered components targeting a named slot. Enables cross-module UI extensions without modifying the original layout.
|
|
294
|
+
|
|
295
|
+
**Props:**
|
|
296
|
+
| Prop | Type | Default | Description |
|
|
297
|
+
|------|------|---------|-------------|
|
|
298
|
+
| `name` | `string` | — | Slot name to match. Supports templates: `TMS/{{entityType}}/Actions` |
|
|
299
|
+
| `itemTag` | `string` | `React.Fragment` | HTML element to wrap each extension (`div`, `li`, etc.) |
|
|
300
|
+
|
|
301
|
+
**Children:** No — extensions are loaded from the database at runtime.
|
|
302
|
+
|
|
303
|
+
Extension components must define `props.targetSlot` matching the slot name, `props.order` for sort order, and a `layout` object.
|
|
304
|
+
|
|
305
|
+
```yaml
|
|
306
|
+
# Define a slot extension point
|
|
307
|
+
component: slot
|
|
308
|
+
props:
|
|
309
|
+
name: "TMS/ShipmentDashboard/Tabs"
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
```yaml
|
|
313
|
+
# Extension component (registered via another module's appComponents)
|
|
314
|
+
name: "TMS/ShipmentDashboard/TrackingTab"
|
|
315
|
+
props:
|
|
316
|
+
targetSlot: "TMS/ShipmentDashboard/Tabs"
|
|
317
|
+
order: 10
|
|
318
|
+
layout:
|
|
319
|
+
component: tab
|
|
320
|
+
props:
|
|
321
|
+
label: { en-US: "Tracking" }
|
|
322
|
+
children:
|
|
323
|
+
- component: layout
|
|
324
|
+
props:
|
|
325
|
+
component: "TMS/Tracking/Panel"
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Naming convention:** `{Module}/{Entity}/{Location}` (e.g., `TMS/OrderDetail/Actions`)
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
291
332
|
## line
|
|
292
333
|
|
|
293
334
|
Simple `<hr>` horizontal divider.
|
|
@@ -341,7 +341,9 @@ CSS Grid-based timeline with swim lanes, drill-down, and virtual scrolling.
|
|
|
341
341
|
| `view` | `day \| week \| month \| year` | `week` | Time view |
|
|
342
342
|
| `startDate` / `endDate` | `string` | — | Date range |
|
|
343
343
|
| `eventSources` | `EventSource[]` | — | Event data sources |
|
|
344
|
+
| `eventSources[].query.name` | `string` | `query1`, `query2`... | Source name, used as key in `summaryComponent` `dataSources` |
|
|
344
345
|
| `eventTemplate` | `ComponentProps` | — | Custom event template |
|
|
346
|
+
| `summaryComponent` | `ComponentProps` | — | Custom component rendered per column in the summary row. Replaces numeric totals when set. |
|
|
345
347
|
| `options.height` | `string \| number` | `600` | Container height |
|
|
346
348
|
| `options.cellHeight` | `number` | `60/100` | Cell height (px) |
|
|
347
349
|
| `options.groupBy` | `string` | — | Field for swim lane grouping |
|
|
@@ -352,6 +354,14 @@ CSS Grid-based timeline with swim lanes, drill-down, and virtual scrolling.
|
|
|
352
354
|
| `options.showWeekends` | `boolean` | `true` | Show weekends |
|
|
353
355
|
| `options.showTotalCount` | `boolean` | `false` | Show event totals |
|
|
354
356
|
|
|
357
|
+
**Summary component variables** (available when `summaryComponent` is set):
|
|
358
|
+
| Variable | Type | Description |
|
|
359
|
+
|----------|------|-------------|
|
|
360
|
+
| `dataSources` | `Record<string, TimelineEvent[]>` | Per-source events filtered to the column, keyed by `query.name` |
|
|
361
|
+
| `column` | `ColumnDefinition` | Column metadata (`id`, `label`, `date`, `startDate`, `endDate`) |
|
|
362
|
+
| `columnIndex` | `number` | Zero-based column index |
|
|
363
|
+
| `totalCount` | `number` | Total event count for the column across all sources |
|
|
364
|
+
|
|
355
365
|
**Events:**
|
|
356
366
|
| Event | Data | Description |
|
|
357
367
|
|-------|------|-------------|
|
|
@@ -397,6 +407,36 @@ props:
|
|
|
397
407
|
props: { date: "{{ date }}", assignee: "{{ row }}" }
|
|
398
408
|
```
|
|
399
409
|
|
|
410
|
+
**Summary component example** (per-source breakdown per column):
|
|
411
|
+
```yaml
|
|
412
|
+
component: timeline-grid
|
|
413
|
+
props:
|
|
414
|
+
view: week
|
|
415
|
+
options: { height: 600, enableNavigation: true }
|
|
416
|
+
eventSources:
|
|
417
|
+
- query:
|
|
418
|
+
name: ups
|
|
419
|
+
command: "query($s:String!,$e:String!){ upsShipments(start:$s,end:$e){ id date title } }"
|
|
420
|
+
variables: { s: "{{ startDate }}", e: "{{ endDate }}" }
|
|
421
|
+
path: upsShipments
|
|
422
|
+
- query:
|
|
423
|
+
name: fedex
|
|
424
|
+
command: "query($s:String!,$e:String!){ fedexShipments(start:$s,end:$e){ id date title } }"
|
|
425
|
+
variables: { s: "{{ startDate }}", e: "{{ endDate }}" }
|
|
426
|
+
path: fedexShipments
|
|
427
|
+
summaryComponent:
|
|
428
|
+
component: layout
|
|
429
|
+
props:
|
|
430
|
+
direction: column
|
|
431
|
+
children:
|
|
432
|
+
- component: text
|
|
433
|
+
props: { value: "UPS: {{ dataSources.ups.length }}" }
|
|
434
|
+
- component: text
|
|
435
|
+
props: { value: "FedEx: {{ dataSources.fedex.length }}" }
|
|
436
|
+
- component: text
|
|
437
|
+
props: { value: "Total: {{ totalCount }}" }
|
|
438
|
+
```
|
|
439
|
+
|
|
400
440
|
---
|
|
401
441
|
|
|
402
442
|
## oauth2
|
|
@@ -21,7 +21,7 @@ You are a CargoXplorer workflow YAML builder. You generate schema-valid YAML for
|
|
|
21
21
|
- **Execute**: `npx cxtms workflow execute <workflowId|file.yaml> --org <id> [--vars '<json>'] [--file varName=path]` — trigger a workflow execution (--file uploads a local file and passes the URL as a variable)
|
|
22
22
|
- **List logs**: `npx cxtms workflow logs <workflowId|file.yaml> --org <id> [--from YYYY-MM-DD] [--to YYYY-MM-DD]` — list executions with log availability
|
|
23
23
|
- **Download log**: `npx cxtms workflow log <executionId> --org <id> [--json] [--console] [--output <file>]` — download execution log
|
|
24
|
-
- **Publish all**: `npx cxtms publish [--feature <name>] --org <id>` —
|
|
24
|
+
- **Publish all**: `npx cxtms publish [--feature <name>] --org <id>` — deploy all modules and workflows to the server
|
|
25
25
|
|
|
26
26
|
## Generation Workflow
|
|
27
27
|
|
|
@@ -320,28 +320,28 @@ Implicit variable: `iteration` (zero-based).
|
|
|
320
320
|
|
|
321
321
|
## Server Workflow Commands
|
|
322
322
|
|
|
323
|
-
Deploy, undeploy, and
|
|
323
|
+
Deploy, undeploy, and release commands are listed in the CLI section at the top of this file. For authentication setup (login, PAT tokens, org management): see [cx-core/ref-cli-auth.md](.claude/skills/cx-core/ref-cli-auth.md)
|
|
324
324
|
|
|
325
|
-
###
|
|
325
|
+
### Releasing App to GitHub
|
|
326
326
|
|
|
327
|
-
Use `app
|
|
327
|
+
Use `app release` to release modified workflows and modules from the CX server to a GitHub repository. This creates a branch and pull request — it does NOT push directly to the target branch.
|
|
328
328
|
|
|
329
329
|
```bash
|
|
330
|
-
#
|
|
331
|
-
npx cxtms app
|
|
330
|
+
# Release all unpublished changes to GitHub (creates a PR) — message is required
|
|
331
|
+
npx cxtms app release -m "Add order notification workflow"
|
|
332
332
|
|
|
333
|
-
#
|
|
334
|
-
npx cxtms app
|
|
335
|
-
npx cxtms app
|
|
333
|
+
# Release specific workflows and/or modules by YAML file
|
|
334
|
+
npx cxtms app release -m "Fix tracking workflow" workflows/my-workflow.yaml
|
|
335
|
+
npx cxtms app release -m "Update shipping" workflows/a.yaml modules/b.yaml
|
|
336
336
|
|
|
337
|
-
# Force
|
|
338
|
-
npx cxtms app
|
|
337
|
+
# Force release all workflows and modules (not just unpublished ones)
|
|
338
|
+
npx cxtms app release -m "Full republish" --force
|
|
339
339
|
|
|
340
|
-
#
|
|
341
|
-
npx cxtms app
|
|
340
|
+
# Release with explicit org
|
|
341
|
+
npx cxtms app release -m "Add order notification workflow" --org 42
|
|
342
342
|
```
|
|
343
343
|
|
|
344
|
-
**What `app
|
|
344
|
+
**What `app release` does:**
|
|
345
345
|
1. Reads `app.yaml` for the `id` (appManifestId), repository, and branch
|
|
346
346
|
2. Increments the app version (patch bump)
|
|
347
347
|
3. Creates a `publish/{app-name}-v{version}-{timestamp}` branch on GitHub
|
|
@@ -349,11 +349,11 @@ npx cxtms app publish -m "Add order notification workflow" --org 42
|
|
|
349
349
|
5. Creates a pull request from the publish branch to the target branch
|
|
350
350
|
6. Marks published workflows and modules as `hasUnpublishedChanges: false`
|
|
351
351
|
|
|
352
|
-
**This is a
|
|
352
|
+
**This is a release-to-git operation** — it commits the current server-side YAML directly to GitHub via the API. No local git repo is involved. The workflows and modules being released are taken from the CX server database, not from local files. The YAML file arguments only identify *which* items to include by their IDs.
|
|
353
353
|
|
|
354
|
-
**Important:** Workflows and modules must be deployed to the TMS server before they can be
|
|
354
|
+
**Important:** Workflows and modules must be deployed to the TMS server before they can be released. Use `cxtms workflow deploy` or `cxtms appmodule deploy` first, then `cxtms app release` to commit them to GitHub.
|
|
355
355
|
|
|
356
|
-
**Do NOT run `app
|
|
356
|
+
**Do NOT run `app release` automatically.** Only release when the user explicitly requests it. Releasing creates a branch and PR on GitHub, so it should be done once when all changes are ready — not after every deploy.
|
|
357
357
|
|
|
358
358
|
**Prerequisites:**
|
|
359
359
|
- `app.yaml` must exist with a valid `id` field
|
package/dist/cli.js
CHANGED
|
@@ -117,7 +117,7 @@ ${chalk_1.default.bold.yellow('COMMANDS:')}
|
|
|
117
117
|
${chalk_1.default.green('appmodule')} Manage app modules on a CX server (deploy, undeploy)
|
|
118
118
|
${chalk_1.default.green('workflow')} Manage workflows on a CX server (deploy, undeploy, execute, logs, log)
|
|
119
119
|
${chalk_1.default.green('publish')} Publish all modules and workflows to a CX server
|
|
120
|
-
${chalk_1.default.green('app')} Manage app manifests (install/upgrade from git,
|
|
120
|
+
${chalk_1.default.green('app')} Manage app manifests (install/upgrade from git, release to git, list)
|
|
121
121
|
${chalk_1.default.green('query')} Run a GraphQL query against the CX server
|
|
122
122
|
${chalk_1.default.green('gql')} Explore GraphQL schema (types, queries, mutations)
|
|
123
123
|
${chalk_1.default.green('schema')} Show JSON schema for a component or task
|
|
@@ -149,7 +149,7 @@ ${chalk_1.default.bold.yellow('OPTIONS:')}
|
|
|
149
149
|
${chalk_1.default.green('--output <file>')} Save workflow log to file (or -o)
|
|
150
150
|
${chalk_1.default.green('--console')} Print workflow log to stdout
|
|
151
151
|
${chalk_1.default.green('--json')} Download JSON log instead of text
|
|
152
|
-
${chalk_1.default.green('-m, --message <msg>')}
|
|
152
|
+
${chalk_1.default.green('-m, --message <msg>')} Release message for app release (required)
|
|
153
153
|
${chalk_1.default.green('-b, --branch <branch>')} Branch override for app install/publish
|
|
154
154
|
${chalk_1.default.green('--force')} Force install (even if same version) or publish all
|
|
155
155
|
${chalk_1.default.green('--skip-changed')} Skip modules with unpublished changes during install
|
|
@@ -311,15 +311,15 @@ ${chalk_1.default.bold.yellow('APP COMMANDS:')}
|
|
|
311
311
|
${chalk_1.default.cyan(`${PROGRAM_NAME} app upgrade`)}
|
|
312
312
|
${chalk_1.default.cyan(`${PROGRAM_NAME} app upgrade --force`)}
|
|
313
313
|
|
|
314
|
-
${chalk_1.default.gray('#
|
|
315
|
-
${chalk_1.default.cyan(`${PROGRAM_NAME} app
|
|
314
|
+
${chalk_1.default.gray('# Release server changes to git (creates a PR) — message is required')}
|
|
315
|
+
${chalk_1.default.cyan(`${PROGRAM_NAME} app release -m "Add new shipping module"`)}
|
|
316
316
|
|
|
317
|
-
${chalk_1.default.gray('#
|
|
318
|
-
${chalk_1.default.cyan(`${PROGRAM_NAME} app
|
|
319
|
-
${chalk_1.default.cyan(`${PROGRAM_NAME} app
|
|
317
|
+
${chalk_1.default.gray('# Release specific workflows and/or modules by YAML file')}
|
|
318
|
+
${chalk_1.default.cyan(`${PROGRAM_NAME} app release -m "Fix order workflow" workflows/my-workflow.yaml`)}
|
|
319
|
+
${chalk_1.default.cyan(`${PROGRAM_NAME} app release -m "Update billing" workflows/a.yaml modules/b.yaml`)}
|
|
320
320
|
|
|
321
|
-
${chalk_1.default.gray('# Force
|
|
322
|
-
${chalk_1.default.cyan(`${PROGRAM_NAME} app
|
|
321
|
+
${chalk_1.default.gray('# Force release all modules and workflows')}
|
|
322
|
+
${chalk_1.default.cyan(`${PROGRAM_NAME} app release -m "Full republish" --force`)}
|
|
323
323
|
|
|
324
324
|
${chalk_1.default.gray('# List installed app manifests on the server')}
|
|
325
325
|
${chalk_1.default.cyan(`${PROGRAM_NAME} app list`)}
|
|
@@ -3030,9 +3030,9 @@ async function runAppPublish(orgOverride, message, branch, force, targetFiles) {
|
|
|
3030
3030
|
const token = session.access_token;
|
|
3031
3031
|
const orgId = await resolveOrgId(domain, token, orgOverride);
|
|
3032
3032
|
if (!message) {
|
|
3033
|
-
console.error(chalk_1.default.red('Error: --message (-m) is required for app
|
|
3033
|
+
console.error(chalk_1.default.red('Error: --message (-m) is required for app release'));
|
|
3034
3034
|
console.error(chalk_1.default.gray('Describe what changed, similar to a git commit message.'));
|
|
3035
|
-
console.error(chalk_1.default.gray(`Example: ${PROGRAM_NAME} app
|
|
3035
|
+
console.error(chalk_1.default.gray(`Example: ${PROGRAM_NAME} app release -m "Add new shipping module"`));
|
|
3036
3036
|
process.exit(2);
|
|
3037
3037
|
}
|
|
3038
3038
|
const appYaml = readAppYaml();
|
|
@@ -3041,7 +3041,7 @@ async function runAppPublish(orgOverride, message, branch, force, targetFiles) {
|
|
|
3041
3041
|
console.error(chalk_1.default.red('Error: app.yaml must have an `id` field'));
|
|
3042
3042
|
process.exit(2);
|
|
3043
3043
|
}
|
|
3044
|
-
console.log(chalk_1.default.bold.cyan('\n App
|
|
3044
|
+
console.log(chalk_1.default.bold.cyan('\n App Release\n'));
|
|
3045
3045
|
console.log(chalk_1.default.gray(` Server: ${new URL(domain).hostname}`));
|
|
3046
3046
|
console.log(chalk_1.default.gray(` Org: ${orgId}`));
|
|
3047
3047
|
console.log(chalk_1.default.gray(` App: ${appYaml.name || appManifestId}`));
|
|
@@ -4606,7 +4606,7 @@ async function main() {
|
|
|
4606
4606
|
if (sub === 'install' || sub === 'upgrade') {
|
|
4607
4607
|
await runAppInstall(options.orgId, options.branch, options.force, options.skipChanged);
|
|
4608
4608
|
}
|
|
4609
|
-
else if (sub === 'publish') {
|
|
4609
|
+
else if (sub === 'release' || sub === 'publish') {
|
|
4610
4610
|
await runAppPublish(options.orgId, options.message, options.branch, options.force, files.slice(1));
|
|
4611
4611
|
}
|
|
4612
4612
|
else if (sub === 'list' || !sub) {
|
|
@@ -4614,7 +4614,7 @@ async function main() {
|
|
|
4614
4614
|
}
|
|
4615
4615
|
else {
|
|
4616
4616
|
console.error(chalk_1.default.red(`Unknown app subcommand: ${sub}`));
|
|
4617
|
-
console.error(chalk_1.default.gray(`Usage: ${PROGRAM_NAME} app <install|upgrade|
|
|
4617
|
+
console.error(chalk_1.default.gray(`Usage: ${PROGRAM_NAME} app <install|upgrade|release|list>`));
|
|
4618
4618
|
process.exit(2);
|
|
4619
4619
|
}
|
|
4620
4620
|
process.exit(0);
|