@sylphx/cli 0.6.0 → 0.7.1
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/CHANGELOG.md +18 -0
- package/dist/main.js +174 -8
- package/dist/main.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @sylphx/cli
|
|
2
2
|
|
|
3
|
+
## 0.7.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`8a38f4b`](https://github.com/SylphxAI/platform/commit/8a38f4bca6dd06eb9947478dcfcdb765cc28ad10)]:
|
|
8
|
+
- @sylphx/sdk@0.10.3
|
|
9
|
+
|
|
10
|
+
## 0.7.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- [#586](https://github.com/SylphxAI/platform/pull/586) [`2e55a61`](https://github.com/SylphxAI/platform/commit/2e55a6194628c5ca3ca78290cbf62610231ccee6) Thanks [@shtse8](https://github.com/shtse8)! - Expose authenticated build detail through the deployments contract, Management SDK, and `sylphx deployments build` so failed builds return structured, redacted diagnostics.
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies []:
|
|
19
|
+
- @sylphx/sdk@0.10.2
|
|
20
|
+
|
|
3
21
|
## 0.6.0
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
package/dist/main.js
CHANGED
|
@@ -15,7 +15,7 @@ var init_package = __esm({
|
|
|
15
15
|
"package.json"() {
|
|
16
16
|
package_default = {
|
|
17
17
|
name: "@sylphx/cli",
|
|
18
|
-
version: "0.
|
|
18
|
+
version: "0.7.1",
|
|
19
19
|
description: "Sylphx Platform CLI \u2014 deploy and manage your applications from the terminal. 63 commands across deployment, logs, env vars, domains, databases, storage, monitoring, self-service (user), admin (users/quotas/audit/invitations/jwt-keys/project-migrate), and more.",
|
|
20
20
|
type: "module",
|
|
21
21
|
homepage: "https://sylphx.com",
|
|
@@ -71,7 +71,7 @@ var init_package = __esm({
|
|
|
71
71
|
"@effect/cli": "0.75.1",
|
|
72
72
|
"@effect/platform": "0.96.0",
|
|
73
73
|
"@effect/platform-bun": "0.89.0",
|
|
74
|
-
"@sylphx/sdk": "0.10.
|
|
74
|
+
"@sylphx/sdk": "0.10.3",
|
|
75
75
|
chalk: "^5.3.0",
|
|
76
76
|
effect: "3.21.0",
|
|
77
77
|
eventsource: "^2.0.2",
|
|
@@ -1596,7 +1596,7 @@ var init_admin_bootstrap2 = __esm({
|
|
|
1596
1596
|
|
|
1597
1597
|
// ../contract/dist/schemas/ids.js
|
|
1598
1598
|
import { Schema as Schema7 } from "effect";
|
|
1599
|
-
var brandedId, OrgId, ProjectId, EnvironmentId, ServiceId, UserId, SessionId, DeploymentId, DomainId, HostnameId, SecretId, DatabaseId, BranchDatabaseId, ResourceId, InvitationId;
|
|
1599
|
+
var brandedId, OrgId, ProjectId, EnvironmentId, ServiceId, UserId, SessionId, DeploymentId, BuildId, DomainId, HostnameId, SecretId, DatabaseId, BranchDatabaseId, ResourceId, InvitationId;
|
|
1600
1600
|
var init_ids = __esm({
|
|
1601
1601
|
"../contract/dist/schemas/ids.js"() {
|
|
1602
1602
|
"use strict";
|
|
@@ -1608,6 +1608,7 @@ var init_ids = __esm({
|
|
|
1608
1608
|
UserId = brandedId("UserId");
|
|
1609
1609
|
SessionId = brandedId("SessionId");
|
|
1610
1610
|
DeploymentId = brandedId("DeploymentId");
|
|
1611
|
+
BuildId = brandedId("BuildId");
|
|
1611
1612
|
DomainId = brandedId("DomainId");
|
|
1612
1613
|
HostnameId = brandedId("HostnameId");
|
|
1613
1614
|
SecretId = brandedId("SecretId");
|
|
@@ -6460,7 +6461,7 @@ var init_databases = __esm({
|
|
|
6460
6461
|
|
|
6461
6462
|
// ../contract/dist/schemas/deployment.js
|
|
6462
6463
|
import { Schema as Schema51 } from "effect";
|
|
6463
|
-
var DeploymentEnvironmentStatus, DeploymentStatus, DeployResult, DeploymentHistoryItem, DeploymentHistoryResult, RollbackResult, ProjectStatusEnvironment, ProjectStatus, DeploymentServiceStatus, DeploymentDetail, TriggerDeploymentInput, RollbackDeploymentInput, DeployServiceStatus, EnvScopedAppEnvInfo, EnvScopedAppDeployments, EnvScopedTriggerDeployResult, EnvScopedRollbackByCommitInput, EnvScopedRollbackByCommitResult, CancelBuildResult, EnvScopedEnvVar, EnvScopedListEnvVarsResult, EnvScopedSetEnvVarInput, EnvScopedSetEnvVarResult, EnvScopedDeleteEnvVarResult, EnvScopedDeploymentView, EnvScopedDeploymentHistory, EnvScopedAppHealthStatus, EnvServiceRollbackInput, EnvServiceRollbackResult, PromoteArtifactInput, PromoteArtifactResult, DeployStatusLiteral, TriggerSourceLiteral, EnvServiceHistoryDeployment, EnvServiceHistoryResult;
|
|
6464
|
+
var DeploymentEnvironmentStatus, DeploymentStatus, DeployResult, DeploymentHistoryItem, DeploymentHistoryResult, RollbackResult, ProjectStatusEnvironment, ProjectStatus, DeploymentServiceStatus, DeploymentDetail, TriggerDeploymentInput, RollbackDeploymentInput, DeployServiceStatus, EnvScopedAppEnvInfo, EnvScopedAppDeployments, EnvScopedTriggerDeployResult, EnvScopedRollbackByCommitInput, EnvScopedRollbackByCommitResult, CancelBuildResult, BuildDetail, EnvScopedEnvVar, EnvScopedListEnvVarsResult, EnvScopedSetEnvVarInput, EnvScopedSetEnvVarResult, EnvScopedDeleteEnvVarResult, EnvScopedDeploymentView, EnvScopedDeploymentHistory, EnvScopedAppHealthStatus, EnvServiceRollbackInput, EnvServiceRollbackResult, PromoteArtifactInput, PromoteArtifactResult, DeployStatusLiteral, TriggerSourceLiteral, EnvServiceHistoryDeployment, EnvServiceHistoryResult;
|
|
6464
6465
|
var init_deployment = __esm({
|
|
6465
6466
|
"../contract/dist/schemas/deployment.js"() {
|
|
6466
6467
|
"use strict";
|
|
@@ -6629,6 +6630,57 @@ var init_deployment = __esm({
|
|
|
6629
6630
|
cancelled: Schema51.Boolean,
|
|
6630
6631
|
buildId: Schema51.String
|
|
6631
6632
|
});
|
|
6633
|
+
BuildDetail = Schema51.Struct({
|
|
6634
|
+
id: BuildId,
|
|
6635
|
+
status: Schema51.String,
|
|
6636
|
+
projectId: ProjectId,
|
|
6637
|
+
envId: EnvironmentId,
|
|
6638
|
+
environment: Schema51.Struct({
|
|
6639
|
+
id: EnvironmentId,
|
|
6640
|
+
name: Schema51.String,
|
|
6641
|
+
type: Schema51.String
|
|
6642
|
+
}),
|
|
6643
|
+
service: Schema51.NullOr(Schema51.Struct({
|
|
6644
|
+
id: ServiceId,
|
|
6645
|
+
name: Schema51.String,
|
|
6646
|
+
slug: Schema51.NullOr(Schema51.String),
|
|
6647
|
+
sourceKind: Schema51.NullOr(Schema51.String),
|
|
6648
|
+
buildContext: Schema51.NullOr(Schema51.String),
|
|
6649
|
+
dockerfilePath: Schema51.NullOr(Schema51.String)
|
|
6650
|
+
})),
|
|
6651
|
+
git: Schema51.Struct({
|
|
6652
|
+
sha: Schema51.String,
|
|
6653
|
+
branch: Schema51.String,
|
|
6654
|
+
commitMessage: Schema51.NullOr(Schema51.String)
|
|
6655
|
+
}),
|
|
6656
|
+
image: Schema51.Struct({
|
|
6657
|
+
digest: Schema51.NullOr(Schema51.String)
|
|
6658
|
+
}),
|
|
6659
|
+
build: Schema51.Struct({
|
|
6660
|
+
actualBuildKind: Schema51.NullOr(Schema51.String),
|
|
6661
|
+
buildpackPlanDigest: Schema51.NullOr(Schema51.String),
|
|
6662
|
+
logsAvailable: Schema51.Boolean
|
|
6663
|
+
}),
|
|
6664
|
+
timing: Schema51.Struct({
|
|
6665
|
+
createdAt: Schema51.String,
|
|
6666
|
+
startedAt: Schema51.NullOr(Schema51.String),
|
|
6667
|
+
finishedAt: Schema51.NullOr(Schema51.String),
|
|
6668
|
+
cancelledAt: Schema51.NullOr(Schema51.String),
|
|
6669
|
+
durationMs: Schema51.NullOr(Schema51.Number)
|
|
6670
|
+
}),
|
|
6671
|
+
diagnostics: Schema51.Struct({
|
|
6672
|
+
failureSummary: Schema51.NullOr(Schema51.String),
|
|
6673
|
+
cancellationReason: Schema51.NullOr(Schema51.String),
|
|
6674
|
+
supersededByBuildId: Schema51.NullOr(BuildId),
|
|
6675
|
+
supersededByGitSha: Schema51.NullOr(Schema51.String)
|
|
6676
|
+
}),
|
|
6677
|
+
deployment: Schema51.NullOr(Schema51.Struct({
|
|
6678
|
+
id: DeploymentId,
|
|
6679
|
+
status: Schema51.String,
|
|
6680
|
+
createdAt: Schema51.String,
|
|
6681
|
+
finishedAt: Schema51.NullOr(Schema51.String)
|
|
6682
|
+
}))
|
|
6683
|
+
});
|
|
6632
6684
|
EnvScopedEnvVar = Schema51.Struct({
|
|
6633
6685
|
key: Schema51.String,
|
|
6634
6686
|
value: Schema51.String
|
|
@@ -6844,6 +6896,14 @@ var init_deployments = __esm({
|
|
|
6844
6896
|
summary: "Cancel an in-flight build job (idempotent)",
|
|
6845
6897
|
tags: ["deployments"]
|
|
6846
6898
|
}),
|
|
6899
|
+
envScopedBuildDetail: defineEndpoint({
|
|
6900
|
+
method: "GET",
|
|
6901
|
+
path: "/deployments/builds/:buildId",
|
|
6902
|
+
params: BuildIdPath,
|
|
6903
|
+
response: BuildDetail,
|
|
6904
|
+
summary: "Build detail and failure summary for an authenticated project member",
|
|
6905
|
+
tags: ["deployments"]
|
|
6906
|
+
}),
|
|
6847
6907
|
envScopedListEnvVars: defineEndpoint({
|
|
6848
6908
|
method: "GET",
|
|
6849
6909
|
path: "/deployments/projects/:envId/env",
|
|
@@ -10762,7 +10822,7 @@ var init_privacy = __esm({
|
|
|
10762
10822
|
|
|
10763
10823
|
// ../contract/dist/schemas/project-manifest.js
|
|
10764
10824
|
import { Schema as Schema83 } from "effect";
|
|
10765
|
-
var Slug2, ManifestEnvName, ManifestRegion, MachineSize, BuildMachineSize, BuildpackName, ServiceType, DeployStrategy, WwwRedirect, ManifestProjectSection, ManifestBuildSection, ManifestDeploySection, ManifestServiceSection, ManifestEnvValue, ManifestDomainSection, PostgresTier, PostgresVersion, SearchTier, ManifestDatabaseEngine, ManifestSearchEngine, ManifestDatabaseResource, ManifestSearchResource, ManifestResourcesSection, ManifestCiSection, ManifestServiceOverride, ManifestEnvironmentOverride, ManifestEnvironmentsMap, SylphxManifest;
|
|
10825
|
+
var Slug2, ManifestEnvName, ManifestRegion, MachineSize, BuildMachineSize, BuildpackName, BuildStrategy, ServiceType, DeployStrategy, WwwRedirect, ManifestProjectSection, ManifestBuildSection, ManifestDeploySection, ManifestServiceBuildSection, ManifestServiceHealthSection, ManifestServiceSection, ManifestMigrationEngine, ManifestMigrationDestructivePolicy, ManifestMigrationsSection, ManifestDatabaseSection, ManifestEnvValue, ManifestDomainSection, PostgresTier, PostgresVersion, SearchTier, ManifestDatabaseEngine, ManifestSearchEngine, ManifestDatabaseResource, ManifestSearchResource, ManifestResourcesSection, ManifestCiSection, ManifestServiceOverride, ManifestEnvironmentOverride, ManifestEnvironmentsMap, SylphxManifest;
|
|
10766
10826
|
var init_project_manifest = __esm({
|
|
10767
10827
|
"../contract/dist/schemas/project-manifest.js"() {
|
|
10768
10828
|
"use strict";
|
|
@@ -10772,6 +10832,7 @@ var init_project_manifest = __esm({
|
|
|
10772
10832
|
MachineSize = Schema83.Literal("nano", "micro", "small", "standard", "large", "xlarge");
|
|
10773
10833
|
BuildMachineSize = Schema83.Literal("standard", "large", "xlarge");
|
|
10774
10834
|
BuildpackName = Schema83.Literal("auto", "ruby", "node", "python", "static", "dockerfile");
|
|
10835
|
+
BuildStrategy = Schema83.Literal("auto", "buildpack", "dockerfile", "nixpacks");
|
|
10775
10836
|
ServiceType = Schema83.Literal("web", "worker", "cron", "function");
|
|
10776
10837
|
DeployStrategy = Schema83.Literal("rolling", "blue-green", "immediate");
|
|
10777
10838
|
WwwRedirect = Schema83.Literal("apex", "www", "none");
|
|
@@ -10796,8 +10857,12 @@ var init_project_manifest = __esm({
|
|
|
10796
10857
|
* package.json / Gemfile / requirements.txt / Dockerfile.
|
|
10797
10858
|
*/
|
|
10798
10859
|
buildpack: Schema83.optional(BuildpackName),
|
|
10860
|
+
/** High-level build strategy alias used by current sylphx.toml files. */
|
|
10861
|
+
strategy: Schema83.optional(BuildStrategy),
|
|
10799
10862
|
/** Override path to Dockerfile (implies buildpack=dockerfile). */
|
|
10800
10863
|
dockerfile: Schema83.optional(Schema83.String),
|
|
10864
|
+
/** Docker build context path. `context` is the product-facing TOML alias. */
|
|
10865
|
+
context: Schema83.optional(Schema83.String),
|
|
10801
10866
|
/** Docker build context path (default: repo root). */
|
|
10802
10867
|
docker_context: Schema83.optional(Schema83.String),
|
|
10803
10868
|
/** Custom build command; overrides buildpack default. */
|
|
@@ -10824,10 +10889,26 @@ var init_project_manifest = __esm({
|
|
|
10824
10889
|
/** Grace period before SIGKILL (seconds). */
|
|
10825
10890
|
graceful_shutdown: Schema83.optional(Schema83.Number.pipe(Schema83.int(), Schema83.between(0, 300)))
|
|
10826
10891
|
});
|
|
10892
|
+
ManifestServiceBuildSection = Schema83.Struct({
|
|
10893
|
+
strategy: Schema83.optional(BuildStrategy),
|
|
10894
|
+
dockerfile: Schema83.optional(Schema83.String),
|
|
10895
|
+
context: Schema83.optional(Schema83.String),
|
|
10896
|
+
docker_context: Schema83.optional(Schema83.String),
|
|
10897
|
+
build_command: Schema83.optional(Schema83.String)
|
|
10898
|
+
});
|
|
10899
|
+
ManifestServiceHealthSection = Schema83.Struct({
|
|
10900
|
+
mode: Schema83.optional(Schema83.Literal("http", "tcp", "command")),
|
|
10901
|
+
path: Schema83.optional(Schema83.String),
|
|
10902
|
+
command: Schema83.optional(Schema83.String)
|
|
10903
|
+
});
|
|
10827
10904
|
ManifestServiceSection = Schema83.Struct({
|
|
10828
10905
|
/** Service name — unique within project. Used as K8s Deployment name. */
|
|
10829
10906
|
name: Slug2,
|
|
10830
10907
|
type: ServiceType,
|
|
10908
|
+
/** Per-service build override. Root [build] remains the default. */
|
|
10909
|
+
build: Schema83.optional(ManifestServiceBuildSection),
|
|
10910
|
+
/** Per-service health contract. Platform owns probe translation. */
|
|
10911
|
+
health: Schema83.optional(ManifestServiceHealthSection),
|
|
10831
10912
|
/** Container start command. */
|
|
10832
10913
|
command: Schema83.optional(Schema83.String),
|
|
10833
10914
|
/** Internal container port; required for `web`. */
|
|
@@ -10866,7 +10947,22 @@ var init_project_manifest = __esm({
|
|
|
10866
10947
|
/** Per-service env var merge — refs entries from top-level [env]. */
|
|
10867
10948
|
env: Schema83.optional(Schema83.Array(Schema83.String)),
|
|
10868
10949
|
/** Per-service resource bindings (by resource name). */
|
|
10869
|
-
resources: Schema83.optional(Schema83.Array(Slug2))
|
|
10950
|
+
resources: Schema83.optional(Schema83.Array(Slug2)),
|
|
10951
|
+
/** Paths whose changes should trigger this service in monorepos. */
|
|
10952
|
+
watch_paths: Schema83.optional(Schema83.Array(Schema83.String))
|
|
10953
|
+
});
|
|
10954
|
+
ManifestMigrationEngine = Schema83.Literal("atlas", "drizzle", "prisma", "alembic", "flyway", "goose", "sqlx", "custom");
|
|
10955
|
+
ManifestMigrationDestructivePolicy = Schema83.Literal("require-approval", "allow");
|
|
10956
|
+
ManifestMigrationsSection = Schema83.Struct({
|
|
10957
|
+
engine: ManifestMigrationEngine,
|
|
10958
|
+
dir: Schema83.optional(Schema83.String),
|
|
10959
|
+
image: Slug2,
|
|
10960
|
+
command: Schema83.String.pipe(Schema83.minLength(1)),
|
|
10961
|
+
timeout: Schema83.optional(Schema83.String),
|
|
10962
|
+
destructive_policy: Schema83.optional(ManifestMigrationDestructivePolicy)
|
|
10963
|
+
});
|
|
10964
|
+
ManifestDatabaseSection = Schema83.Struct({
|
|
10965
|
+
migrations: Schema83.optional(ManifestMigrationsSection)
|
|
10870
10966
|
});
|
|
10871
10967
|
ManifestEnvValue = Schema83.Union(Schema83.Struct({ value: Schema83.String }), Schema83.Struct({ from_secret: Schema83.String }), Schema83.Struct({ from_resource: Schema83.String, attr: Schema83.String }));
|
|
10872
10968
|
ManifestDomainSection = Schema83.Struct({
|
|
@@ -10961,6 +11057,7 @@ var init_project_manifest = __esm({
|
|
|
10961
11057
|
build: Schema83.optional(ManifestBuildSection),
|
|
10962
11058
|
deploy: Schema83.optional(ManifestDeploySection),
|
|
10963
11059
|
services: Schema83.optional(Schema83.Array(ManifestServiceSection)),
|
|
11060
|
+
database: Schema83.optional(ManifestDatabaseSection),
|
|
10964
11061
|
env: Schema83.optional(Schema83.Record({ key: Schema83.String, value: ManifestEnvValue })),
|
|
10965
11062
|
domains: Schema83.optional(Schema83.Array(ManifestDomainSection)),
|
|
10966
11063
|
environments: Schema83.optional(ManifestEnvironmentsMap),
|
|
@@ -14488,6 +14585,7 @@ var deployments_exports = {};
|
|
|
14488
14585
|
__export(deployments_exports, {
|
|
14489
14586
|
cancel: () => cancel,
|
|
14490
14587
|
get: () => get2,
|
|
14588
|
+
getBuild: () => getBuild,
|
|
14491
14589
|
history: () => history2,
|
|
14492
14590
|
rollback: () => rollback,
|
|
14493
14591
|
status: () => status,
|
|
@@ -14508,7 +14606,7 @@ function normalizeHistoryRow(row) {
|
|
|
14508
14606
|
function isHistoryEnvelope(response) {
|
|
14509
14607
|
return !Array.isArray(response);
|
|
14510
14608
|
}
|
|
14511
|
-
var status, get2, trigger2, history2, rollback, cancel;
|
|
14609
|
+
var status, get2, getBuild, trigger2, history2, rollback, cancel;
|
|
14512
14610
|
var init_deployments2 = __esm({
|
|
14513
14611
|
"../management/dist/deployments.js"() {
|
|
14514
14612
|
"use strict";
|
|
@@ -14526,6 +14624,12 @@ var init_deployments2 = __esm({
|
|
|
14526
14624
|
headers: { "x-preferred-org-id": options.orgId }
|
|
14527
14625
|
});
|
|
14528
14626
|
};
|
|
14627
|
+
getBuild = (client, buildId, options = {}) => {
|
|
14628
|
+
const { method, path: path6 } = deploymentsEndpoints.envScopedBuildDetail;
|
|
14629
|
+
return request(client, method, interpolatePath(path6, { buildId }), {
|
|
14630
|
+
headers: { "x-preferred-org-id": options.orgId }
|
|
14631
|
+
});
|
|
14632
|
+
};
|
|
14529
14633
|
trigger2 = (client, projectId, envType, options = {}) => {
|
|
14530
14634
|
const { method, path: path6 } = deploymentsEndpoints.trigger;
|
|
14531
14635
|
return request(client, method, interpolatePath(path6, { id: projectId }), {
|
|
@@ -16838,6 +16942,7 @@ var init_api = __esm({
|
|
|
16838
16942
|
getDeploymentStatus: (projectId, options) => withClient((c2) => deployments_exports.status(c2, projectId, options)),
|
|
16839
16943
|
triggerDeploy: (projectId, envType) => withClient((c2) => deployments_exports.trigger(c2, projectId, envType)),
|
|
16840
16944
|
getDeploymentHistory: (projectId, envType, options) => withClient((c2) => deployments_exports.history(c2, projectId, envType, options)),
|
|
16945
|
+
getBuild: (buildId, options) => withClient((c2) => deployments_exports.getBuild(c2, buildId, options)),
|
|
16841
16946
|
rollback: (projectId, body, options) => withClient(
|
|
16842
16947
|
(c2) => deployments_exports.rollback(
|
|
16843
16948
|
c2,
|
|
@@ -17491,6 +17596,10 @@ var ApiServiceLive = Layer2.succeed(ApiService, {
|
|
|
17491
17596
|
try: () => withAuthedSdk((c2) => deployments_exports.get(c2, deploymentId2, options)),
|
|
17492
17597
|
catch: mapApiError("deployments")
|
|
17493
17598
|
}),
|
|
17599
|
+
getBuild: (buildId, options) => Effect6.tryPromise({
|
|
17600
|
+
try: () => withAuthedSdk((c2) => deployments_exports.getBuild(c2, buildId, options)),
|
|
17601
|
+
catch: mapApiError("deployments")
|
|
17602
|
+
}),
|
|
17494
17603
|
rollback: (projectId, body, options) => Effect6.tryPromise({
|
|
17495
17604
|
try: () => withAuthedSdk((c2) => deployments_exports.rollback(c2, projectId, body, options)),
|
|
17496
17605
|
catch: mapApiError("rollback")
|
|
@@ -21337,6 +21446,11 @@ function renderManifestToml(manifest) {
|
|
|
21337
21446
|
parts.push(...kv(manifest.deploy));
|
|
21338
21447
|
parts.push("");
|
|
21339
21448
|
}
|
|
21449
|
+
if (manifest.database?.migrations) {
|
|
21450
|
+
parts.push("[database.migrations]");
|
|
21451
|
+
parts.push(...kv(manifest.database.migrations));
|
|
21452
|
+
parts.push("");
|
|
21453
|
+
}
|
|
21340
21454
|
if (manifest.services) {
|
|
21341
21455
|
for (const svc of manifest.services) {
|
|
21342
21456
|
parts.push("[[services]]");
|
|
@@ -22975,6 +23089,41 @@ function printDeploymentDetail(d) {
|
|
|
22975
23089
|
yield* Console17.log("");
|
|
22976
23090
|
});
|
|
22977
23091
|
}
|
|
23092
|
+
function buildFailureLine(build) {
|
|
23093
|
+
return build.diagnostics.failureSummary ?? build.diagnostics.cancellationReason ?? "-";
|
|
23094
|
+
}
|
|
23095
|
+
function printBuildDetail(build) {
|
|
23096
|
+
return Effect27.gen(function* () {
|
|
23097
|
+
yield* Console17.log("");
|
|
23098
|
+
yield* Console17.log(chalk_default.bold(` Build ${chalk_default.white(build.id)}`));
|
|
23099
|
+
yield* Console17.log(chalk_default.dim(` ${"\u2500".repeat(56)}`));
|
|
23100
|
+
yield* Console17.log(` Status : ${statusColour3(build.status)}`);
|
|
23101
|
+
yield* Console17.log(` Project : ${chalk_default.white(build.projectId)}`);
|
|
23102
|
+
yield* Console17.log(
|
|
23103
|
+
` Environment : ${chalk_default.white(`${build.environment.name} (${build.environment.type})`)}`
|
|
23104
|
+
);
|
|
23105
|
+
if (build.service) yield* Console17.log(` Service : ${chalk_default.white(build.service.name)}`);
|
|
23106
|
+
yield* Console17.log(` Commit : ${chalk_default.white(build.git.sha)}`);
|
|
23107
|
+
yield* Console17.log(` Branch : ${chalk_default.white(build.git.branch)}`);
|
|
23108
|
+
if (build.git.commitMessage)
|
|
23109
|
+
yield* Console17.log(` Message : ${chalk_default.white(build.git.commitMessage)}`);
|
|
23110
|
+
if (build.image.digest)
|
|
23111
|
+
yield* Console17.log(` Image : ${chalk_default.white(build.image.digest)}`);
|
|
23112
|
+
yield* Console17.log(` Build kind : ${chalk_default.white(build.build.actualBuildKind ?? "unknown")}`);
|
|
23113
|
+
yield* Console17.log(
|
|
23114
|
+
` Started : ${chalk_default.white(build.timing.startedAt ? new Date(build.timing.startedAt).toLocaleString() : "-")}`
|
|
23115
|
+
);
|
|
23116
|
+
yield* Console17.log(
|
|
23117
|
+
` Finished : ${chalk_default.white(build.timing.finishedAt ? new Date(build.timing.finishedAt).toLocaleString() : "-")}`
|
|
23118
|
+
);
|
|
23119
|
+
yield* Console17.log(` Duration : ${chalk_default.white(formatDuration(build.timing.durationMs))}`);
|
|
23120
|
+
yield* Console17.log(` Diagnostics : ${chalk_default.white(buildFailureLine(build))}`);
|
|
23121
|
+
if (build.diagnostics.supersededByBuildId) {
|
|
23122
|
+
yield* Console17.log(` Superseded by: ${chalk_default.white(build.diagnostics.supersededByBuildId)}`);
|
|
23123
|
+
}
|
|
23124
|
+
yield* Console17.log("");
|
|
23125
|
+
});
|
|
23126
|
+
}
|
|
22978
23127
|
function deploymentsListEffect(opts) {
|
|
22979
23128
|
return Effect27.gen(function* () {
|
|
22980
23129
|
yield* requireAuthEffect;
|
|
@@ -23044,6 +23193,18 @@ function deploymentsGetEffect(opts) {
|
|
|
23044
23193
|
yield* makeFormatter(output).print(detail, printDeploymentDetail);
|
|
23045
23194
|
});
|
|
23046
23195
|
}
|
|
23196
|
+
function deploymentsBuildEffect(opts) {
|
|
23197
|
+
return Effect27.gen(function* () {
|
|
23198
|
+
yield* requireAuthEffect;
|
|
23199
|
+
const orgId = yield* resolveOrgScopeEffect("deployments", opts.org);
|
|
23200
|
+
const api2 = yield* ApiService;
|
|
23201
|
+
const output = opts.output ?? "pretty";
|
|
23202
|
+
const isHumanOutput = output === "pretty" || output === "table";
|
|
23203
|
+
const request2 = orgId ? api2.getBuild(opts.id, { orgId }) : api2.getBuild(opts.id);
|
|
23204
|
+
const build = yield* isHumanOutput ? withSpinner(`Fetching build ${chalk_default.bold(opts.id)}...`, request2) : request2;
|
|
23205
|
+
yield* makeFormatter(output).print(build, printBuildDetail);
|
|
23206
|
+
});
|
|
23207
|
+
}
|
|
23047
23208
|
function deploymentsWaitEffect(opts) {
|
|
23048
23209
|
return Effect27.gen(function* () {
|
|
23049
23210
|
yield* requireAuthEffect;
|
|
@@ -23141,6 +23302,11 @@ var getCmd3 = Command17.make(
|
|
|
23141
23302
|
{ id: Args14.text({ name: "id" }), org: orgOption4, output: outputOption },
|
|
23142
23303
|
({ id, org, output }) => deploymentsGetEffect({ id, org: org._tag === "Some" ? org.value : void 0, output })
|
|
23143
23304
|
).pipe(Command17.withDescription("Show details for a single deployment"));
|
|
23305
|
+
var buildCmd = Command17.make(
|
|
23306
|
+
"build",
|
|
23307
|
+
{ id: Args14.text({ name: "id" }), org: orgOption4, output: outputOption },
|
|
23308
|
+
({ id, org, output }) => deploymentsBuildEffect({ id, org: org._tag === "Some" ? org.value : void 0, output })
|
|
23309
|
+
).pipe(Command17.withDescription("Show details for a single build"));
|
|
23144
23310
|
function parseTimeoutMs(raw) {
|
|
23145
23311
|
const m = raw.match(/^\s*(\d+)\s*(ms|s|m|h)?\s*$/i);
|
|
23146
23312
|
if (!m) return WAIT_DEFAULT_TIMEOUT_MS;
|
|
@@ -23177,7 +23343,7 @@ var deploymentsCommand = Command17.make(
|
|
|
23177
23343
|
() => Console17.log("Run `sylphx deployments --help` for usage")
|
|
23178
23344
|
).pipe(
|
|
23179
23345
|
Command17.withDescription("Browse deployment history"),
|
|
23180
|
-
Command17.withSubcommands([listCmd7, getCmd3, waitCmd])
|
|
23346
|
+
Command17.withSubcommands([listCmd7, getCmd3, buildCmd, waitCmd])
|
|
23181
23347
|
);
|
|
23182
23348
|
|
|
23183
23349
|
// src/programs/doctor.ts
|