@pikku/cli 0.12.133 → 0.12.134
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 +44 -0
- package/dist/.pikku/addon/index.d.ts +1 -1
- package/dist/.pikku/addon/index.js +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
- package/dist/.pikku/agent/index.d.ts +1 -1
- package/dist/.pikku/agent/index.js +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
- package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
- package/dist/.pikku/auth/index.d.ts +1 -1
- package/dist/.pikku/auth/index.js +1 -1
- package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
- package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
- package/dist/.pikku/channel/index.d.ts +1 -1
- package/dist/.pikku/channel/index.js +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/cli/index.d.ts +1 -1
- package/dist/.pikku/cli/index.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.json +13 -10
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +13 -10
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
- package/dist/.pikku/error/index.d.ts +1 -1
- package/dist/.pikku/error/index.js +1 -1
- package/dist/.pikku/error/pikku-error-types.gen.d.ts +1 -1
- package/dist/.pikku/error/pikku-error-types.gen.js +1 -1
- package/dist/.pikku/function/index.d.ts +1 -1
- package/dist/.pikku/function/index.js +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +3 -3
- package/dist/.pikku/function/pikku-functions.gen.js +1 -1
- package/dist/.pikku/gateway/index.d.ts +1 -1
- package/dist/.pikku/gateway/index.js +1 -1
- package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +1 -1
- package/dist/.pikku/gateway/pikku-gateway-types.gen.js +1 -1
- package/dist/.pikku/http/index.d.ts +1 -1
- package/dist/.pikku/http/index.js +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/mcp/index.d.ts +1 -1
- package/dist/.pikku/mcp/index.js +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- package/dist/.pikku/middleware/index.d.ts +1 -1
- package/dist/.pikku/middleware/index.js +1 -1
- package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +1 -1
- package/dist/.pikku/middleware/pikku-middleware-types.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
- package/dist/.pikku/pikku-services.gen.d.ts +1 -1
- package/dist/.pikku/queue/index.d.ts +1 -1
- package/dist/.pikku/queue/index.js +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
- package/dist/.pikku/scenarios/index.d.ts +1 -1
- package/dist/.pikku/scenarios/index.js +1 -1
- package/dist/.pikku/scenarios/pikku-personas.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
- package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
- package/dist/.pikku/scheduler/index.d.ts +1 -1
- package/dist/.pikku/scheduler/index.js +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +1 -1
- package/dist/.pikku/schemas/schemas/FabricDeployApplyInput.schema.json +1 -1
- package/dist/.pikku/scopes/index.d.ts +1 -1
- package/dist/.pikku/scopes/index.js +1 -1
- package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
- package/dist/.pikku/secrets/index.d.ts +1 -1
- package/dist/.pikku/secrets/index.js +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
- package/dist/.pikku/setup/index.d.ts +1 -1
- package/dist/.pikku/setup/index.js +1 -1
- package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
- package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
- package/dist/.pikku/trigger/index.d.ts +1 -1
- package/dist/.pikku/trigger/index.js +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
- package/dist/.pikku/variables/index.d.ts +1 -1
- package/dist/.pikku/variables/index.js +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
- package/dist/.pikku/workflow/index.d.ts +1 -1
- package/dist/.pikku/workflow/index.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku-bin.mjs +2 -2
- package/dist/src/fabric/fabric-commands.d.ts +3 -3
- package/dist/src/fabric/fabric-commands.js +7 -6
- package/dist/src/fabric/functions/deploy.function.d.ts +14 -5
- package/dist/src/fabric/functions/deploy.function.js +49 -20
- package/dist/src/fabric/lib/stage.js +1 -1
- package/package.json +1 -1
- package/surface.json +1 -1
|
@@ -4,7 +4,7 @@ export declare const FabricDeployInput: z.ZodObject<{
|
|
|
4
4
|
production: z.ZodOptional<z.ZodBoolean>;
|
|
5
5
|
ref: z.ZodOptional<z.ZodString>;
|
|
6
6
|
deploymentId: z.ZodOptional<z.ZodString>;
|
|
7
|
-
|
|
7
|
+
detach: z.ZodOptional<z.ZodBoolean>;
|
|
8
8
|
autoApprove: z.ZodOptional<z.ZodBoolean>;
|
|
9
9
|
allowDestructive: z.ZodOptional<z.ZodBoolean>;
|
|
10
10
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
@@ -15,7 +15,7 @@ export declare const FabricDeployValidatedInput: z.ZodObject<{
|
|
|
15
15
|
production: z.ZodOptional<z.ZodBoolean>;
|
|
16
16
|
ref: z.ZodOptional<z.ZodString>;
|
|
17
17
|
deploymentId: z.ZodOptional<z.ZodString>;
|
|
18
|
-
|
|
18
|
+
detach: z.ZodOptional<z.ZodBoolean>;
|
|
19
19
|
autoApprove: z.ZodOptional<z.ZodBoolean>;
|
|
20
20
|
allowDestructive: z.ZodOptional<z.ZodBoolean>;
|
|
21
21
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
@@ -90,12 +90,21 @@ export declare const FabricDeployApplyOutput: z.ZodObject<{
|
|
|
90
90
|
timeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
91
91
|
}, z.core.$strip>;
|
|
92
92
|
type ApplyOutput = z.infer<typeof FabricDeployApplyOutput>;
|
|
93
|
+
/**
|
|
94
|
+
* The branch to deploy when none was named, read off the checkout.
|
|
95
|
+
*
|
|
96
|
+
* `git rev-parse --abbrev-ref HEAD` answers the literal string `HEAD` on a
|
|
97
|
+
* detached checkout, which is not a branch and would be reported downstream as
|
|
98
|
+
* a branch that does not exist locally. Naming the real problem here is the
|
|
99
|
+
* difference between "check out a branch" and a puzzle.
|
|
100
|
+
*/
|
|
101
|
+
export declare const branchFromHead: (head: string) => string;
|
|
93
102
|
export declare const FabricDeployApply: import("../../../.pikku/function/pikku-function-types.gen.js").PikkuFunctionConfig<{
|
|
94
103
|
branch?: string | undefined;
|
|
95
104
|
production?: boolean | undefined;
|
|
96
105
|
ref?: string | undefined;
|
|
97
106
|
deploymentId?: string | undefined;
|
|
98
|
-
|
|
107
|
+
detach?: boolean | undefined;
|
|
99
108
|
autoApprove?: boolean | undefined;
|
|
100
109
|
allowDestructive?: boolean | undefined;
|
|
101
110
|
timeout?: number | undefined;
|
|
@@ -158,7 +167,7 @@ export declare const FabricDeployApply: import("../../../.pikku/function/pikku-f
|
|
|
158
167
|
production?: boolean | undefined;
|
|
159
168
|
ref?: string | undefined;
|
|
160
169
|
deploymentId?: string | undefined;
|
|
161
|
-
|
|
170
|
+
detach?: boolean | undefined;
|
|
162
171
|
autoApprove?: boolean | undefined;
|
|
163
172
|
allowDestructive?: boolean | undefined;
|
|
164
173
|
timeout?: number | undefined;
|
|
@@ -221,7 +230,7 @@ export declare const FabricDeployApply: import("../../../.pikku/function/pikku-f
|
|
|
221
230
|
production?: boolean | undefined;
|
|
222
231
|
ref?: string | undefined;
|
|
223
232
|
deploymentId?: string | undefined;
|
|
224
|
-
|
|
233
|
+
detach?: boolean | undefined;
|
|
225
234
|
autoApprove?: boolean | undefined;
|
|
226
235
|
allowDestructive?: boolean | undefined;
|
|
227
236
|
timeout?: number | undefined;
|
|
@@ -2,7 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { pikkuSessionlessFunc } from '../../../.pikku/function/index.js';
|
|
3
3
|
import { resolveApiContext } from '../lib/config.js';
|
|
4
4
|
import { getFabricRPC } from '../lib/http.js';
|
|
5
|
-
import { assertNamedBranchDeploySafety, resolveRef } from '../lib/git.js';
|
|
5
|
+
import { assertNamedBranchDeploySafety, currentBranch, resolveRef, } from '../lib/git.js';
|
|
6
6
|
import { promptConfirm } from '../lib/prompt.js';
|
|
7
7
|
import { added, changed, removed, dim, table } from '../lib/output.js';
|
|
8
8
|
import { blockedReason, blockedSummary, missingConfigHints, changesAreEmpty, classifyStatus, describeDeployment, destructiveMigrations, isApprovable, readDeploymentStatus, readWorkers, reconcileDeployedRef, stateLabel, waitForDeployment, } from '../lib/deployment.js';
|
|
@@ -12,7 +12,7 @@ export const FabricDeployInput = z.object({
|
|
|
12
12
|
production: z.boolean().optional(),
|
|
13
13
|
ref: z.string().optional(),
|
|
14
14
|
deploymentId: z.string().optional(),
|
|
15
|
-
|
|
15
|
+
detach: z.boolean().optional(),
|
|
16
16
|
autoApprove: z.boolean().optional(),
|
|
17
17
|
allowDestructive: z.boolean().optional(),
|
|
18
18
|
timeout: z.number().optional(),
|
|
@@ -23,15 +23,15 @@ export const FabricDeployValidatedInput = FabricDeployInput.superRefine((value,
|
|
|
23
23
|
if (value.branch || value.production) {
|
|
24
24
|
ctx.addIssue({
|
|
25
25
|
code: z.ZodIssueCode.custom,
|
|
26
|
-
message: '--deployment-id already names its target — drop
|
|
26
|
+
message: '--deployment-id already names its target — drop the branch/--production.',
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
if (
|
|
31
|
+
if (value.branch && value.production) {
|
|
32
32
|
ctx.addIssue({
|
|
33
33
|
code: z.ZodIssueCode.custom,
|
|
34
|
-
message: 'Pass
|
|
34
|
+
message: 'Pass a branch or --production, not both — --production is always main.',
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
});
|
|
@@ -96,16 +96,25 @@ async function prepDeploy({ branch, production, ref }) {
|
|
|
96
96
|
if (!ctx.projectId) {
|
|
97
97
|
throw new Error('No fabric project linked. Run `pikku fabric link` first.');
|
|
98
98
|
}
|
|
99
|
-
//
|
|
100
|
-
// the
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const targetBranch = production
|
|
99
|
+
// With no target named, deploy the branch that is checked out — the common
|
|
100
|
+
// case, and the one worth not making people type twice. It is only safe to
|
|
101
|
+
// infer because `assertNamedBranchDeploySafety` below refuses any branch that
|
|
102
|
+
// is missing an upstream or out of sync with it, so an inferred target cannot
|
|
103
|
+
// ship something that was never pushed.
|
|
104
|
+
const inferred = !production && !branch;
|
|
105
|
+
const targetBranch = production
|
|
106
|
+
? 'main'
|
|
107
|
+
: (branch ?? branchFromHead(await currentBranch()));
|
|
106
108
|
const safety = await assertNamedBranchDeploySafety(targetBranch);
|
|
107
109
|
const resolved = ref ? ((await resolveRef(ref)) ?? ref) : safety.headSha;
|
|
108
|
-
return {
|
|
110
|
+
return {
|
|
111
|
+
ctx,
|
|
112
|
+
projectId: ctx.projectId,
|
|
113
|
+
targetBranch,
|
|
114
|
+
resolved,
|
|
115
|
+
safety,
|
|
116
|
+
inferred,
|
|
117
|
+
};
|
|
109
118
|
}
|
|
110
119
|
async function prepAttach() {
|
|
111
120
|
const ctx = await resolveApiContext();
|
|
@@ -124,6 +133,20 @@ const EXIT_BY_OUTCOME = {
|
|
|
124
133
|
blocked: 3,
|
|
125
134
|
timeout: 4,
|
|
126
135
|
};
|
|
136
|
+
/**
|
|
137
|
+
* The branch to deploy when none was named, read off the checkout.
|
|
138
|
+
*
|
|
139
|
+
* `git rev-parse --abbrev-ref HEAD` answers the literal string `HEAD` on a
|
|
140
|
+
* detached checkout, which is not a branch and would be reported downstream as
|
|
141
|
+
* a branch that does not exist locally. Naming the real problem here is the
|
|
142
|
+
* difference between "check out a branch" and a puzzle.
|
|
143
|
+
*/
|
|
144
|
+
export const branchFromHead = (head) => {
|
|
145
|
+
if (head === 'HEAD' || head === '') {
|
|
146
|
+
throw new Error('Deployment blocked: HEAD is detached, so there is no current branch to deploy.\nCheck out a branch, or name the target: `pikku fabric deploy apply <branch>`.');
|
|
147
|
+
}
|
|
148
|
+
return head;
|
|
149
|
+
};
|
|
127
150
|
export const FabricDeployApply = pikkuSessionlessFunc({
|
|
128
151
|
description: 'Build + deploy a named branch or production (main), or attach to an existing deployment.',
|
|
129
152
|
input: FabricDeployValidatedInput,
|
|
@@ -137,7 +160,7 @@ export const FabricDeployApply = pikkuSessionlessFunc({
|
|
|
137
160
|
throw new Error('--timeout must be a positive number of seconds.');
|
|
138
161
|
}
|
|
139
162
|
if (input.deploymentId && (input.branch || input.production)) {
|
|
140
|
-
throw new Error('--deployment-id already names its target — drop
|
|
163
|
+
throw new Error('--deployment-id already names its target — drop the branch/--production.');
|
|
141
164
|
}
|
|
142
165
|
const attaching = Boolean(input.deploymentId);
|
|
143
166
|
let projectId;
|
|
@@ -158,11 +181,17 @@ export const FabricDeployApply = pikkuSessionlessFunc({
|
|
|
158
181
|
emit({ event: 'attached', deploymentId, status: current.status });
|
|
159
182
|
}
|
|
160
183
|
else {
|
|
161
|
-
const { ctx, projectId: id, targetBranch, resolved, safety, } = await prepDeploy(input);
|
|
184
|
+
const { ctx, projectId: id, targetBranch, resolved, safety, inferred, } = await prepDeploy(input);
|
|
162
185
|
projectId = id;
|
|
163
186
|
branch = targetBranch;
|
|
164
187
|
ref = resolved;
|
|
165
188
|
rpc = getFabricRPC({ apiUrl: ctx.apiUrl, token: ctx.token });
|
|
189
|
+
// An inferred target is said out loud before anything is built. Under -y
|
|
190
|
+
// there is no confirmation prompt to name it, and a deploy that never
|
|
191
|
+
// told you which branch it picked is the one that ships the wrong branch.
|
|
192
|
+
if (inferred && !input.json) {
|
|
193
|
+
console.log(dim(`Deploying the current branch: ${targetBranch}`));
|
|
194
|
+
}
|
|
166
195
|
if (!input.autoApprove) {
|
|
167
196
|
const target = `${branch} @ ${resolved.slice(0, 8)}`;
|
|
168
197
|
if (!process.stdin.isTTY) {
|
|
@@ -202,7 +231,7 @@ export const FabricDeployApply = pikkuSessionlessFunc({
|
|
|
202
231
|
...(stageId ? { stageId } : {}),
|
|
203
232
|
...(runId ? { runId } : {}),
|
|
204
233
|
};
|
|
205
|
-
if (
|
|
234
|
+
if (input.detach && !attaching) {
|
|
206
235
|
return { ...base, outcome: 'queued' };
|
|
207
236
|
}
|
|
208
237
|
let approvalWithheld;
|
|
@@ -225,7 +254,7 @@ export const FabricDeployApply = pikkuSessionlessFunc({
|
|
|
225
254
|
: '';
|
|
226
255
|
return promptConfirm(`Plan for ${branch ?? deploymentId} is ready to publish (${stateLabel(status.status, status.statusReason)}).${warning} Approve?`);
|
|
227
256
|
};
|
|
228
|
-
if (
|
|
257
|
+
if (input.detach) {
|
|
229
258
|
const status = await readDeploymentStatus(rpc, deploymentId);
|
|
230
259
|
const klass = classifyStatus(status.status);
|
|
231
260
|
const outcome = klass === 'in_flight' ? 'queued' : klass;
|
|
@@ -324,7 +353,7 @@ const missingLines = (label, entries) => {
|
|
|
324
353
|
...entries.map((e) => ` ${e.name}${e.displayName ? dim(` (${e.displayName})`) : ''}${e.docsUrl ? dim(` — ${e.docsUrl}`) : ''}`),
|
|
325
354
|
];
|
|
326
355
|
};
|
|
327
|
-
const reattachHint = (deploymentId) => dim(`Re-attach with \`pikku fabric deploy apply --deployment-id ${deploymentId}
|
|
356
|
+
const reattachHint = (deploymentId) => dim(`Re-attach with \`pikku fabric deploy apply --deployment-id ${deploymentId}\`.`);
|
|
328
357
|
export const renderDeployApply = (_s, result) => {
|
|
329
358
|
const { outcome, branch, ref, deploymentId, status, statusReason, changes, workers, url, elapsedMs, timeoutSeconds, approved, } = result;
|
|
330
359
|
const where = branch ?? 'deployment';
|
|
@@ -363,10 +392,10 @@ export const renderDeployApply = (_s, result) => {
|
|
|
363
392
|
console.log(line);
|
|
364
393
|
if (result.approvalWithheld === 'destructive_migrations') {
|
|
365
394
|
console.log(dim('The plan drops or rewrites data. Nothing was published — review the migrations above, then re-run with `--allow-destructive` to accept them.'));
|
|
366
|
-
console.log(dim(`\`pikku fabric deploy apply --deployment-id ${deploymentId}
|
|
395
|
+
console.log(dim(`\`pikku fabric deploy apply --deployment-id ${deploymentId} -y --allow-destructive\``));
|
|
367
396
|
}
|
|
368
397
|
else if (isApprovable(reason) && !approved) {
|
|
369
|
-
console.log(dim(`Approve it with \`pikku fabric deploy apply --deployment-id ${deploymentId}
|
|
398
|
+
console.log(dim(`Approve it with \`pikku fabric deploy apply --deployment-id ${deploymentId} -y\`.`));
|
|
370
399
|
}
|
|
371
400
|
else if (reason === 'needs_config') {
|
|
372
401
|
for (const hint of missingConfigHints(result.missingSecrets, result.missingVariables)) {
|
|
@@ -23,7 +23,7 @@ export async function resolveStage(rpc, projectId, branch) {
|
|
|
23
23
|
return { stageId: only.stageId, branch: only.branch };
|
|
24
24
|
}
|
|
25
25
|
throw new Error(stages.length === 0
|
|
26
|
-
? 'No stages deployed for this project yet — run `pikku fabric deploy apply
|
|
26
|
+
? 'No stages deployed for this project yet — run `pikku fabric deploy apply <branch>` first.'
|
|
27
27
|
: `--branch is required — this project has ${stages.length} stages: ${known.join(', ')}`);
|
|
28
28
|
}
|
|
29
29
|
const stage = stages.find((s) => s.branch === branch);
|
package/package.json
CHANGED
package/surface.json
CHANGED