Skip to content

Commit 9ae1478

Browse files
philnashdkundel
authored andcommitted
feat(twilio-run): adds json output to twilio-run deploy
1 parent da33cfb commit 9ae1478

File tree

6 files changed

+29
-6
lines changed

6 files changed

+29
-6
lines changed

packages/runtime-handler/src/dev-runtime/server.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ServerlessFunctionSignature } from '@twilio-labs/serverless-runtime-types/types';
22
import bodyParser from 'body-parser';
3-
import EventEmitter from 'events';
3+
import { EventEmitter } from 'events';
44
import express, {
55
Express,
66
NextFunction,

packages/twilio-run/src/commands/deploy.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ export async function handler(
115115

116116
checkConfigForCredentials(config);
117117

118-
printConfigInfo(config);
118+
printConfigInfo(config, config.outputFormat);
119119

120120
const spinner = getOraSpinner('Deploying Function').start();
121121
try {
@@ -126,7 +126,7 @@ export async function handler(
126126
const result = await client.deployLocalProject(config);
127127
spinner.text = 'Serverless project successfully deployed\n';
128128
spinner.succeed();
129-
printDeployedResources(config, result);
129+
printDeployedResources(config, result, config.outputFormat);
130130
const { serviceSid, buildSid } = result;
131131
await saveLatestDeploymentData(
132132
config.cwd,
@@ -156,6 +156,7 @@ export const cliInfo: CliInfo = {
156156
'assets-folder',
157157
'functions-folder',
158158
'runtime',
159+
'output-format',
159160
]),
160161
production: {
161162
...ALL_FLAGS['production'],

packages/twilio-run/src/commands/shared.ts

+2
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ export type ExternalCliOptions = {
1111
version: string;
1212
};
1313
};
14+
15+
export type OutputFormat = string | undefined;

packages/twilio-run/src/config/deploy.ts

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { getUserAgentExtensions } from './utils/userAgentExtensions';
2323
export type DeployLocalProjectConfig = ApiDeployLocalProjectConfig & {
2424
username: string;
2525
password: string;
26+
outputFormat?: string;
2627
};
2728

2829
export type ConfigurableDeployCliFlags = Pick<
@@ -39,6 +40,7 @@ export type ConfigurableDeployCliFlags = Pick<
3940
| 'assetsFolder'
4041
| 'functionsFolder'
4142
| 'runtime'
43+
| 'outputFormat'
4244
>;
4345
export type DeployCliFlags = Arguments<
4446
ConfigurableDeployCliFlags & {
@@ -112,6 +114,7 @@ export async function getConfigFromFlags(
112114
}
113115

114116
const { region, edge, runtime } = flags;
117+
const outputFormat = flags.outputFormat || externalCliOptions?.outputFormat;
115118

116119
return {
117120
cwd,
@@ -133,5 +136,6 @@ export async function getConfigFromFlags(
133136
edge,
134137
runtime,
135138
userAgentExtensions: getUserAgentExtensions('deploy', externalCliOptions),
139+
outputFormat,
136140
};
137141
}

packages/twilio-run/src/printers/deploy.ts

+15-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ import columnify from 'columnify';
88
import { stripIndent } from 'common-tags';
99
import terminalLink from 'terminal-link';
1010
import { MergeExclusive } from 'type-fest';
11+
import { OutputFormat } from '../commands/shared';
1112
import { DeployLocalProjectConfig } from '../config/deploy';
1213
import { logger } from '../utils/logger';
13-
import { writeOutput } from '../utils/output';
14+
import { writeJSONOutput, writeOutput } from '../utils/output';
1415
import {
1516
getTwilioConsoleDeploymentUrl,
1617
printObjectWithoutHeaders,
@@ -186,7 +187,13 @@ function prettyPrintDeployedResources(
186187
}
187188
}
188189

189-
export function printConfigInfo(config: DeployLocalProjectConfig) {
190+
export function printConfigInfo(
191+
config: DeployLocalProjectConfig,
192+
outputFormat: OutputFormat
193+
) {
194+
if (outputFormat === 'json') {
195+
return;
196+
}
190197
if (shouldPrettyPrint) {
191198
prettyPrintConfigInfo(config);
192199
} else {
@@ -196,8 +203,13 @@ export function printConfigInfo(config: DeployLocalProjectConfig) {
196203

197204
export function printDeployedResources(
198205
config: DeployLocalProjectConfig,
199-
result: DeployResult
206+
result: DeployResult,
207+
outputFormat: OutputFormat
200208
) {
209+
if (outputFormat === 'json') {
210+
writeJSONOutput(result);
211+
return;
212+
}
201213
if (shouldPrettyPrint) {
202214
prettyPrintDeployedResources(config, result);
203215
} else {
+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
export function writeOutput(...args: any[]) {
22
console.log(...args);
33
}
4+
5+
export function writeJSONOutput(...args: any[]) {
6+
writeOutput(JSON.stringify(args, null, '\t'));
7+
}

0 commit comments

Comments
 (0)