@remotion/cloudrun 4.1.0-alpha10
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/.turbo/turbo-build.log +13 -0
- package/LICENSE.md +41 -0
- package/dist/admin/bundle-installer.d.ts +1 -0
- package/dist/admin/bundle-installer.js +32 -0
- package/dist/admin/bundle-renderLogic.d.ts +1 -0
- package/dist/admin/bundle-renderLogic.js +39 -0
- package/dist/api/check-if-service-exists.d.ts +18 -0
- package/dist/api/check-if-service-exists.js +49 -0
- package/dist/api/create-bucket.d.ts +13 -0
- package/dist/api/create-bucket.js +18 -0
- package/dist/api/delete-service.d.ts +12 -0
- package/dist/api/delete-service.js +19 -0
- package/dist/api/delete-site.d.ts +13 -0
- package/dist/api/delete-site.js +30 -0
- package/dist/api/deploy-service.d.ts +28 -0
- package/dist/api/deploy-service.js +90 -0
- package/dist/api/deploy-site.d.ts +35 -0
- package/dist/api/deploy-site.js +78 -0
- package/dist/api/download-file.d.ts +13 -0
- package/dist/api/download-file.js +30 -0
- package/dist/api/get-buckets.d.ts +10 -0
- package/dist/api/get-buckets.js +23 -0
- package/dist/api/get-or-create-bucket.d.ts +17 -0
- package/dist/api/get-or-create-bucket.js +42 -0
- package/dist/api/get-regions.d.ts +7 -0
- package/dist/api/get-regions.js +13 -0
- package/dist/api/get-service-info.d.ts +23 -0
- package/dist/api/get-service-info.js +34 -0
- package/dist/api/get-services.d.ts +14 -0
- package/dist/api/get-services.js +49 -0
- package/dist/api/get-sites.d.ts +23 -0
- package/dist/api/get-sites.js +49 -0
- package/dist/api/helpers/IService.d.ts +2 -0
- package/dist/api/helpers/IService.js +2 -0
- package/dist/api/helpers/construct-service-deploy-request.d.ts +32 -0
- package/dist/api/helpers/construct-service-deploy-request.js +36 -0
- package/dist/api/helpers/extract-mem-from-url.d.ts +1 -0
- package/dist/api/helpers/extract-mem-from-url.js +9 -0
- package/dist/api/helpers/extract-time-from-url.d.ts +1 -0
- package/dist/api/helpers/extract-time-from-url.js +13 -0
- package/dist/api/helpers/get-auth-client-for-url.d.ts +1 -0
- package/dist/api/helpers/get-auth-client-for-url.js +15 -0
- package/dist/api/helpers/get-cloud-logging-client.d.ts +1 -0
- package/dist/api/helpers/get-cloud-logging-client.js +15 -0
- package/dist/api/helpers/get-cloud-run-client.d.ts +2 -0
- package/dist/api/helpers/get-cloud-run-client.js +15 -0
- package/dist/api/helpers/get-cloud-storage-client.d.ts +2 -0
- package/dist/api/helpers/get-cloud-storage-client.js +14 -0
- package/dist/api/helpers/get-cloudrun-endpoint.d.ts +14 -0
- package/dist/api/helpers/get-cloudrun-endpoint.js +36 -0
- package/dist/api/helpers/get-resource-manager-client.d.ts +2 -0
- package/dist/api/helpers/get-resource-manager-client.js +15 -0
- package/dist/api/helpers/parse-service-name.d.ts +8 -0
- package/dist/api/helpers/parse-service-name.js +24 -0
- package/dist/api/iam-validation/testPermissions.d.ts +20 -0
- package/dist/api/iam-validation/testPermissions.js +48 -0
- package/dist/api/render-media-on-cloudrun.d.ts +78 -0
- package/dist/api/render-media-on-cloudrun.js +144 -0
- package/dist/api/render-still-on-cloudrun.d.ts +49 -0
- package/dist/api/render-still-on-cloudrun.js +76 -0
- package/dist/api/speculate-service-name.d.ts +13 -0
- package/dist/api/speculate-service-name.js +20 -0
- package/dist/api/test/service-names.test.d.ts +1 -0
- package/dist/api/test/service-names.test.js +28 -0
- package/dist/api/upload-dir.d.ts +18 -0
- package/dist/api/upload-dir.js +81 -0
- package/dist/cli/args.d.ts +19 -0
- package/dist/cli/args.js +11 -0
- package/dist/cli/commands/permissions.d.ts +2 -0
- package/dist/cli/commands/permissions.js +23 -0
- package/dist/cli/commands/regions.d.ts +2 -0
- package/dist/cli/commands/regions.js +10 -0
- package/dist/cli/commands/render/helpers/renderArgsCheck.d.ts +9 -0
- package/dist/cli/commands/render/helpers/renderArgsCheck.js +75 -0
- package/dist/cli/commands/render/index.d.ts +2 -0
- package/dist/cli/commands/render/index.js +228 -0
- package/dist/cli/commands/services/deploy.d.ts +2 -0
- package/dist/cli/commands/services/deploy.js +129 -0
- package/dist/cli/commands/services/index.d.ts +5 -0
- package/dist/cli/commands/services/index.js +64 -0
- package/dist/cli/commands/services/ls.d.ts +2 -0
- package/dist/cli/commands/services/ls.js +40 -0
- package/dist/cli/commands/services/rm.d.ts +2 -0
- package/dist/cli/commands/services/rm.js +63 -0
- package/dist/cli/commands/services/rmall.d.ts +2 -0
- package/dist/cli/commands/services/rmall.js +52 -0
- package/dist/cli/commands/sites/create.d.ts +2 -0
- package/dist/cli/commands/sites/create.js +138 -0
- package/dist/cli/commands/sites/index.d.ts +4 -0
- package/dist/cli/commands/sites/index.js +60 -0
- package/dist/cli/commands/sites/ls.d.ts +2 -0
- package/dist/cli/commands/sites/ls.js +40 -0
- package/dist/cli/commands/sites/rm.d.ts +2 -0
- package/dist/cli/commands/sites/rm.js +59 -0
- package/dist/cli/commands/sites/rmall.d.ts +2 -0
- package/dist/cli/commands/sites/rmall.js +38 -0
- package/dist/cli/commands/still.d.ts +2 -0
- package/dist/cli/commands/still.js +129 -0
- package/dist/cli/get-gcp-region.d.ts +2 -0
- package/dist/cli/get-gcp-region.js +19 -0
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.js +38 -0
- package/dist/cli/helpers/confirm.d.ts +4 -0
- package/dist/cli/helpers/confirm.js +12 -0
- package/dist/cli/helpers/date-string.d.ts +1 -0
- package/dist/cli/helpers/date-string.js +9 -0
- package/dist/cli/helpers/progress-bar.d.ts +23 -0
- package/dist/cli/helpers/progress-bar.js +81 -0
- package/dist/cli/helpers/quit.d.ts +1 -0
- package/dist/cli/helpers/quit.js +7 -0
- package/dist/cli/helpers/yes-or-no.d.ts +4 -0
- package/dist/cli/helpers/yes-or-no.js +44 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +56 -0
- package/dist/cli/log.d.ts +26 -0
- package/dist/cli/log.js +5 -0
- package/dist/defaults.d.ts +1 -0
- package/dist/defaults.js +17 -0
- package/dist/functions/helpers/get-composition-from-body.d.ts +2 -0
- package/dist/functions/helpers/get-composition-from-body.js +27 -0
- package/dist/functions/helpers/io.d.ts +11 -0
- package/dist/functions/helpers/io.js +17 -0
- package/dist/functions/helpers/payloads.d.ts +300 -0
- package/dist/functions/helpers/payloads.js +104 -0
- package/dist/functions/index.d.ts +3 -0
- package/dist/functions/index.js +39 -0
- package/dist/functions/render-media-single-thread.d.ts +3 -0
- package/dist/functions/render-media-single-thread.js +103 -0
- package/dist/functions/render-still-single-thread.d.ts +3 -0
- package/dist/functions/render-still-single-thread.js +82 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +31 -0
- package/dist/internals.d.ts +3 -0
- package/dist/internals.js +7 -0
- package/dist/pricing/gcp-regions.d.ts +5 -0
- package/dist/pricing/gcp-regions.js +77 -0
- package/dist/regions.d.ts +2 -0
- package/dist/regions.js +5 -0
- package/dist/shared/bundle-site.d.ts +2 -0
- package/dist/shared/bundle-site.js +5 -0
- package/dist/shared/constants.d.ts +13 -0
- package/dist/shared/constants.js +18 -0
- package/dist/shared/convert-to-serve-url.d.ts +4 -0
- package/dist/shared/convert-to-serve-url.js +14 -0
- package/dist/shared/docs-url.d.ts +1 -0
- package/dist/shared/docs-url.js +4 -0
- package/dist/shared/generate-service-name.d.ts +5 -0
- package/dist/shared/generate-service-name.js +20 -0
- package/dist/shared/get-etag.d.ts +1 -0
- package/dist/shared/get-etag.js +24 -0
- package/dist/shared/get-storage-operations.d.ts +10 -0
- package/dist/shared/get-storage-operations.js +36 -0
- package/dist/shared/make-storage-key.d.ts +1 -0
- package/dist/shared/make-storage-key.js +11 -0
- package/dist/shared/make-storage-url.d.ts +4 -0
- package/dist/shared/make-storage-url.js +7 -0
- package/dist/shared/random-hash.d.ts +3 -0
- package/dist/shared/random-hash.js +14 -0
- package/dist/shared/read-dir.d.ts +9 -0
- package/dist/shared/read-dir.js +57 -0
- package/dist/shared/sa-permissions.json +64 -0
- package/dist/shared/service-version-string.d.ts +1 -0
- package/dist/shared/service-version-string.js +8 -0
- package/dist/shared/validate-bucketname.d.ts +8 -0
- package/dist/shared/validate-bucketname.js +35 -0
- package/dist/shared/validate-cloudrun-url.d.ts +1 -0
- package/dist/shared/validate-cloudrun-url.js +10 -0
- package/dist/shared/validate-gcp-codec.d.ts +4 -0
- package/dist/shared/validate-gcp-codec.js +29 -0
- package/dist/shared/validate-gcp-region.d.ts +2 -0
- package/dist/shared/validate-gcp-region.js +10 -0
- package/dist/shared/validate-image-remotion-version.d.ts +1 -0
- package/dist/shared/validate-image-remotion-version.js +26 -0
- package/dist/shared/validate-privacy.d.ts +2 -0
- package/dist/shared/validate-privacy.js +12 -0
- package/dist/shared/validate-project-id.d.ts +1 -0
- package/dist/shared/validate-project-id.js +17 -0
- package/dist/shared/validate-region.d.ts +1 -0
- package/dist/shared/validate-region.js +15 -0
- package/dist/shared/validate-retries.d.ts +1 -0
- package/dist/shared/validate-retries.js +21 -0
- package/dist/shared/validate-serveurl.d.ts +1 -0
- package/dist/shared/validate-serveurl.js +30 -0
- package/dist/shared/validate-service-name.d.ts +1 -0
- package/dist/shared/validate-service-name.js +9 -0
- package/dist/shared/validate-site-name.d.ts +1 -0
- package/dist/shared/validate-site-name.js +17 -0
- package/package.json +57 -0
- package/readme.md +3 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderArgsCheck = void 0;
|
|
4
|
+
const get_or_create_bucket_1 = require("../../../../api/get-or-create-bucket");
|
|
5
|
+
const get_service_info_1 = require("../../../../api/get-service-info");
|
|
6
|
+
const get_services_1 = require("../../../../api/get-services");
|
|
7
|
+
const constants_1 = require("../../../../shared/constants");
|
|
8
|
+
const convert_to_serve_url_1 = require("../../../../shared/convert-to-serve-url");
|
|
9
|
+
const validate_privacy_1 = require("../../../../shared/validate-privacy");
|
|
10
|
+
const args_1 = require("../../../args");
|
|
11
|
+
const get_gcp_region_1 = require("../../../get-gcp-region");
|
|
12
|
+
const quit_1 = require("../../../helpers/quit");
|
|
13
|
+
const log_1 = require("../../../log");
|
|
14
|
+
const services_1 = require("../../services");
|
|
15
|
+
const deploy_1 = require("../../services/deploy");
|
|
16
|
+
const renderArgsCheck = async (subcommand, args) => {
|
|
17
|
+
var _a, _b, _c, _d;
|
|
18
|
+
let region = (0, get_gcp_region_1.getGcpRegion)();
|
|
19
|
+
let remotionBucket;
|
|
20
|
+
let serveUrl = args[0];
|
|
21
|
+
if (!serveUrl) {
|
|
22
|
+
log_1.Log.error('No serve URL passed.');
|
|
23
|
+
log_1.Log.info('Pass an additional argument specifying a URL where your Remotion project is hosted.');
|
|
24
|
+
log_1.Log.info();
|
|
25
|
+
log_1.Log.info(`${constants_1.BINARY_NAME} ${subcommand} <serve-url> <composition-id> [output-location]`);
|
|
26
|
+
(0, quit_1.quit)(1);
|
|
27
|
+
}
|
|
28
|
+
if (!serveUrl.startsWith('https://') && !serveUrl.startsWith('http://')) {
|
|
29
|
+
const siteName = serveUrl;
|
|
30
|
+
log_1.Log.verbose('Remotion site-name passed, constructing serve url...');
|
|
31
|
+
region = region !== null && region !== void 0 ? region : (0, get_gcp_region_1.getGcpRegion)();
|
|
32
|
+
remotionBucket = (await (0, get_or_create_bucket_1.getOrCreateBucket)({ region })).bucketName;
|
|
33
|
+
serveUrl = (0, convert_to_serve_url_1.convertToServeUrl)({
|
|
34
|
+
urlOrId: siteName,
|
|
35
|
+
bucketName: remotionBucket,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const outName = args_1.parsedCloudrunCli['out-name'];
|
|
39
|
+
const downloadName = (_a = args[2]) !== null && _a !== void 0 ? _a : null;
|
|
40
|
+
const privacy = (_b = args_1.parsedCloudrunCli.privacy) !== null && _b !== void 0 ? _b : constants_1.DEFAULT_OUTPUT_PRIVACY;
|
|
41
|
+
(0, validate_privacy_1.validatePrivacy)(privacy);
|
|
42
|
+
const forceBucketName = (_d = (_c = args_1.parsedCloudrunCli['force-bucket-name']) !== null && _c !== void 0 ? _c : remotionBucket) !== null && _d !== void 0 ? _d : (await (0, get_or_create_bucket_1.getOrCreateBucket)({ region })).bucketName;
|
|
43
|
+
let cloudRunUrl = args_1.parsedCloudrunCli['cloud-run-url'];
|
|
44
|
+
let serviceName = args_1.parsedCloudrunCli['service-name'];
|
|
45
|
+
if (cloudRunUrl && serviceName) {
|
|
46
|
+
log_1.Log.error('Both a Cloud Run URL and a Service Name was provided. Specify only one.');
|
|
47
|
+
(0, quit_1.quit)(1);
|
|
48
|
+
}
|
|
49
|
+
if (!cloudRunUrl && !serviceName) {
|
|
50
|
+
const services = await (0, get_services_1.getServices)({ region, compatibleOnly: true });
|
|
51
|
+
if (services.length === 0) {
|
|
52
|
+
// TODO: Log if there is an incompatible service
|
|
53
|
+
log_1.Log.error('No compatible services found. Please create a service first:');
|
|
54
|
+
log_1.Log.info();
|
|
55
|
+
log_1.Log.info(` ${constants_1.BINARY_NAME} ${services_1.SERVICES_COMMAND} ${deploy_1.CLOUD_RUN_DEPLOY_SUBCOMMAND}`);
|
|
56
|
+
(0, quit_1.quit)(1);
|
|
57
|
+
}
|
|
58
|
+
serviceName = services[0].serviceName;
|
|
59
|
+
cloudRunUrl = services[0].uri;
|
|
60
|
+
}
|
|
61
|
+
if (serviceName && !cloudRunUrl) {
|
|
62
|
+
const { uri } = await (0, get_service_info_1.getServiceInfo)({ serviceName, region });
|
|
63
|
+
cloudRunUrl = uri;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
serveUrl,
|
|
67
|
+
cloudRunUrl,
|
|
68
|
+
outName,
|
|
69
|
+
forceBucketName,
|
|
70
|
+
privacy,
|
|
71
|
+
downloadName,
|
|
72
|
+
region,
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
exports.renderArgsCheck = renderArgsCheck;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderCommand = exports.RENDER_COMMAND = void 0;
|
|
4
|
+
const cli_1 = require("@remotion/cli");
|
|
5
|
+
const render_media_on_cloudrun_1 = require("../../../api/render-media-on-cloudrun");
|
|
6
|
+
// import {validateMaxRetries} from '../../../shared/validate-retries';
|
|
7
|
+
const config_1 = require("@remotion/cli/config");
|
|
8
|
+
const renderer_1 = require("@remotion/renderer");
|
|
9
|
+
const remotion_1 = require("remotion");
|
|
10
|
+
const download_file_1 = require("../../../api/download-file");
|
|
11
|
+
const extract_mem_from_url_1 = require("../../../api/helpers/extract-mem-from-url");
|
|
12
|
+
const extract_time_from_url_1 = require("../../../api/helpers/extract-time-from-url");
|
|
13
|
+
const get_cloud_logging_client_1 = require("../../../api/helpers/get-cloud-logging-client");
|
|
14
|
+
const validate_serveurl_1 = require("../../../shared/validate-serveurl");
|
|
15
|
+
const args_1 = require("../../args");
|
|
16
|
+
const log_1 = require("../../log");
|
|
17
|
+
const renderArgsCheck_1 = require("./helpers/renderArgsCheck");
|
|
18
|
+
exports.RENDER_COMMAND = 'render';
|
|
19
|
+
const renderCommand = async (args, remotionRoot) => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
const { serveUrl, cloudRunUrl, outName, forceBucketName, downloadName, privacy, region, } = await (0, renderArgsCheck_1.renderArgsCheck)(exports.RENDER_COMMAND, args);
|
|
22
|
+
const { codec, reason: codecReason } = cli_1.CliInternals.getFinalOutputCodec({
|
|
23
|
+
cliFlag: cli_1.CliInternals.parsedCli.codec,
|
|
24
|
+
downloadName,
|
|
25
|
+
outName: outName !== null && outName !== void 0 ? outName : null,
|
|
26
|
+
configFile: (_a = config_1.ConfigInternals.getOutputCodecOrUndefined()) !== null && _a !== void 0 ? _a : null,
|
|
27
|
+
uiCodec: null,
|
|
28
|
+
});
|
|
29
|
+
const imageFormat = args_1.parsedCloudrunCli['image-format'];
|
|
30
|
+
const audioCodec = args_1.parsedCloudrunCli['audio-codec'];
|
|
31
|
+
const { chromiumOptions, crf, envVariables, frameRange, inputProps, logLevel, puppeteerTimeout, pixelFormat, proResProfile, jpegQuality, scale, everyNthFrame, numberOfGifLoops, muted, audioBitrate, videoBitrate, height, width, browserExecutable, port, enforceAudioTrack, } = await cli_1.CliInternals.getCliOptions({
|
|
32
|
+
type: 'series',
|
|
33
|
+
isLambda: true,
|
|
34
|
+
remotionRoot,
|
|
35
|
+
});
|
|
36
|
+
let composition = args[1];
|
|
37
|
+
if (!composition) {
|
|
38
|
+
log_1.Log.info('No compositions passed. Fetching compositions...');
|
|
39
|
+
(0, validate_serveurl_1.validateServeUrl)(serveUrl);
|
|
40
|
+
const server = renderer_1.RenderInternals.prepareServer({
|
|
41
|
+
concurrency: 1,
|
|
42
|
+
indent: false,
|
|
43
|
+
port,
|
|
44
|
+
remotionRoot,
|
|
45
|
+
logLevel,
|
|
46
|
+
webpackConfigOrServeUrl: serveUrl,
|
|
47
|
+
});
|
|
48
|
+
const { compositionId } = await cli_1.CliInternals.getCompositionWithDimensionOverride({
|
|
49
|
+
args,
|
|
50
|
+
compositionIdFromUi: null,
|
|
51
|
+
browserExecutable,
|
|
52
|
+
chromiumOptions,
|
|
53
|
+
envVariables,
|
|
54
|
+
height,
|
|
55
|
+
indent: false,
|
|
56
|
+
port,
|
|
57
|
+
puppeteerInstance: undefined,
|
|
58
|
+
serveUrlOrWebpackUrl: serveUrl,
|
|
59
|
+
timeoutInMilliseconds: puppeteerTimeout,
|
|
60
|
+
logLevel,
|
|
61
|
+
width,
|
|
62
|
+
server: await server,
|
|
63
|
+
serializedInputPropsWithCustomSchema: remotion_1.Internals.serializeJSONWithDate({
|
|
64
|
+
data: inputProps,
|
|
65
|
+
indent: undefined,
|
|
66
|
+
staticBase: null,
|
|
67
|
+
}).serializedString,
|
|
68
|
+
});
|
|
69
|
+
composition = compositionId;
|
|
70
|
+
}
|
|
71
|
+
// Todo: Check cloudRunUrl is valid, as the error message is obtuse
|
|
72
|
+
cli_1.CliInternals.Log.info(cli_1.CliInternals.chalk.gray(`
|
|
73
|
+
Cloud Run Service URL = ${cloudRunUrl}
|
|
74
|
+
Region = ${region}
|
|
75
|
+
Type = media
|
|
76
|
+
Composition = ${composition}
|
|
77
|
+
Codec = ${codec}
|
|
78
|
+
Output Bucket = ${forceBucketName}
|
|
79
|
+
Output File = ${outName !== null && outName !== void 0 ? outName : 'out.mp4'}
|
|
80
|
+
Output File Privacy = ${privacy}
|
|
81
|
+
${downloadName ? ` Downloaded File = ${downloadName}` : ''}
|
|
82
|
+
`.trim()));
|
|
83
|
+
log_1.Log.info();
|
|
84
|
+
const renderStart = Date.now();
|
|
85
|
+
const progressBar = cli_1.CliInternals.createOverwriteableCliOutput({
|
|
86
|
+
quiet: cli_1.CliInternals.quietFlagProvided(),
|
|
87
|
+
cancelSignal: null,
|
|
88
|
+
updatesDontOverwrite: false,
|
|
89
|
+
indent: false,
|
|
90
|
+
});
|
|
91
|
+
const renderProgress = {
|
|
92
|
+
doneIn: null,
|
|
93
|
+
progress: 0,
|
|
94
|
+
};
|
|
95
|
+
const updateProgress = () => {
|
|
96
|
+
progressBar.update([
|
|
97
|
+
`Rendering on Cloud Run: `,
|
|
98
|
+
cli_1.CliInternals.makeProgressBar(renderProgress.progress),
|
|
99
|
+
`${renderProgress.doneIn === null ? 'Rendering' : 'Rendered'}`,
|
|
100
|
+
renderProgress.doneIn === null
|
|
101
|
+
? `${Math.round(renderProgress.progress * 100)}%`
|
|
102
|
+
: cli_1.CliInternals.chalk.gray(`${renderProgress.doneIn}ms`),
|
|
103
|
+
].join(' '), false);
|
|
104
|
+
};
|
|
105
|
+
const updateRenderProgress = (progress, error) => {
|
|
106
|
+
if (error) {
|
|
107
|
+
// exiting progress and adding space
|
|
108
|
+
log_1.Log.info(`
|
|
109
|
+
|
|
110
|
+
`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
renderProgress.progress = progress;
|
|
114
|
+
updateProgress();
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const res = await (0, render_media_on_cloudrun_1.renderMediaOnCloudrun)({
|
|
118
|
+
cloudRunUrl,
|
|
119
|
+
serveUrl,
|
|
120
|
+
region,
|
|
121
|
+
inputProps,
|
|
122
|
+
codec: codec,
|
|
123
|
+
imageFormat,
|
|
124
|
+
crf: crf !== null && crf !== void 0 ? crf : undefined,
|
|
125
|
+
envVariables,
|
|
126
|
+
pixelFormat,
|
|
127
|
+
proResProfile,
|
|
128
|
+
jpegQuality,
|
|
129
|
+
composition,
|
|
130
|
+
privacy,
|
|
131
|
+
frameRange: frameRange !== null && frameRange !== void 0 ? frameRange : undefined,
|
|
132
|
+
outName,
|
|
133
|
+
chromiumOptions,
|
|
134
|
+
scale,
|
|
135
|
+
numberOfGifLoops,
|
|
136
|
+
everyNthFrame,
|
|
137
|
+
muted,
|
|
138
|
+
audioBitrate,
|
|
139
|
+
videoBitrate,
|
|
140
|
+
forceHeight: height,
|
|
141
|
+
forceWidth: width,
|
|
142
|
+
audioCodec,
|
|
143
|
+
forceBucketName,
|
|
144
|
+
updateRenderProgress,
|
|
145
|
+
logLevel: config_1.ConfigInternals.Logging.getLogLevel(),
|
|
146
|
+
// Special case: Should not use default local concurrency, or from
|
|
147
|
+
// config file, just when explicitly set
|
|
148
|
+
concurrency: (_b = cli_1.CliInternals.parsedCli.concurrency) !== null && _b !== void 0 ? _b : null,
|
|
149
|
+
delayRenderTimeoutInMilliseconds: puppeteerTimeout,
|
|
150
|
+
enforceAudioTrack,
|
|
151
|
+
preferLossless: false,
|
|
152
|
+
});
|
|
153
|
+
if (res.status === 'crash') {
|
|
154
|
+
let timeoutPreMsg = '';
|
|
155
|
+
const timeout = (0, extract_time_from_url_1.extractTimeoutFromURL)(res.cloudRunEndpoint);
|
|
156
|
+
const memoryLimit = (0, extract_mem_from_url_1.extractMemoryFromURL)(res.cloudRunEndpoint);
|
|
157
|
+
if (timeout && res.requestElapsedTimeInSeconds + 10 > timeout) {
|
|
158
|
+
timeoutPreMsg = `Render call likely timed out. Service timeout is ${timeout} seconds, and render took at least ${res.requestElapsedTimeInSeconds.toFixed(1)} seconds.\n`;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
timeoutPreMsg = `Crash unlikely due to timeout. Render took ${res.requestElapsedTimeInSeconds.toFixed(1)} seconds, below the timeout of ${timeout} seconds.\n`;
|
|
162
|
+
}
|
|
163
|
+
log_1.Log.error(`Error rendering on Cloud Run. The Cloud Run service did not return a response.\n
|
|
164
|
+
${timeoutPreMsg}The crash may be due to the service exceeding its memory limit of ${memoryLimit}.
|
|
165
|
+
Full logs are available at https://console.cloud.google.com/run?project=${process.env.REMOTION_GCP_PROJECT_ID}\n`);
|
|
166
|
+
const cloudLoggingClient = (0, get_cloud_logging_client_1.getCloudLoggingClient)();
|
|
167
|
+
const listLogEntriesRequest = {
|
|
168
|
+
resourceNames: [`projects/${process.env.REMOTION_GCP_PROJECT_ID}`],
|
|
169
|
+
filter: `logName=projects/${process.env.REMOTION_GCP_PROJECT_ID}/logs/run.googleapis.com%2Fvarlog%2Fsystem AND (severity=WARNING OR severity=ERROR) AND timestamp >= "${res.requestStartTime}"`,
|
|
170
|
+
};
|
|
171
|
+
const logCheckCountdown = cli_1.CliInternals.createOverwriteableCliOutput({
|
|
172
|
+
quiet: cli_1.CliInternals.quietFlagProvided(),
|
|
173
|
+
cancelSignal: null,
|
|
174
|
+
updatesDontOverwrite: false,
|
|
175
|
+
indent: false,
|
|
176
|
+
});
|
|
177
|
+
await (() => {
|
|
178
|
+
return new Promise((resolve) => {
|
|
179
|
+
let timeLeft = 30;
|
|
180
|
+
const intervalId = setInterval(() => {
|
|
181
|
+
logCheckCountdown.update(`GCP Cloud Logging takes time to ingest and index logs.\nFetching recent error/warning logs in ${timeLeft} seconds`, false);
|
|
182
|
+
timeLeft--;
|
|
183
|
+
if (timeLeft < 0) {
|
|
184
|
+
logCheckCountdown.update('Fetching logs...\n\n', false);
|
|
185
|
+
clearInterval(intervalId);
|
|
186
|
+
resolve();
|
|
187
|
+
}
|
|
188
|
+
}, 1000);
|
|
189
|
+
});
|
|
190
|
+
})();
|
|
191
|
+
const iterableLogListEntries = await cloudLoggingClient.listLogEntriesAsync(listLogEntriesRequest);
|
|
192
|
+
for await (const logResponse of iterableLogListEntries) {
|
|
193
|
+
const responseDate = new Date(Number(logResponse.timestamp.seconds) * 1000 +
|
|
194
|
+
Number(logResponse.timestamp.nanos) / 1000000);
|
|
195
|
+
const convertedDate = responseDate.toLocaleString();
|
|
196
|
+
log_1.Log.info(convertedDate);
|
|
197
|
+
log_1.Log.info(logResponse.textPayload);
|
|
198
|
+
log_1.Log.info();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else if (res.status === 'success') {
|
|
202
|
+
renderProgress.doneIn = Date.now() - renderStart;
|
|
203
|
+
updateProgress();
|
|
204
|
+
log_1.Log.info(`
|
|
205
|
+
|
|
206
|
+
`);
|
|
207
|
+
log_1.Log.info(cli_1.CliInternals.chalk.blueBright(`
|
|
208
|
+
${res.publicUrl ? `Public URL = ${decodeURIComponent(res.publicUrl)}` : ``}
|
|
209
|
+
Cloud Storage Uri = ${res.cloudStorageUri}
|
|
210
|
+
Size (KB) = ${Math.round(Number(res.size) / 1000)}
|
|
211
|
+
Bucket Name = ${res.bucketName}
|
|
212
|
+
Privacy = ${res.privacy}
|
|
213
|
+
Render ID = ${res.renderId}
|
|
214
|
+
Codec = ${codec} (${codecReason})
|
|
215
|
+
`.trim()));
|
|
216
|
+
if (downloadName) {
|
|
217
|
+
log_1.Log.info('');
|
|
218
|
+
log_1.Log.info('downloading file...');
|
|
219
|
+
const destination = await (0, download_file_1.downloadFile)({
|
|
220
|
+
bucketName: res.bucketName,
|
|
221
|
+
gsutilURI: res.cloudStorageUri,
|
|
222
|
+
downloadName,
|
|
223
|
+
});
|
|
224
|
+
log_1.Log.info(cli_1.CliInternals.chalk.blueBright(`Downloaded file to ${destination}!`));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
exports.renderCommand = renderCommand;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cloudRunDeploySubcommand = exports.CLOUD_RUN_DEPLOY_SUBCOMMAND = void 0;
|
|
4
|
+
const cli_1 = require("@remotion/cli");
|
|
5
|
+
const version_1 = require("remotion/version");
|
|
6
|
+
const _1 = require(".");
|
|
7
|
+
const deploy_service_1 = require("../../../api/deploy-service");
|
|
8
|
+
const constants_1 = require("../../../shared/constants");
|
|
9
|
+
const generate_service_name_1 = require("../../../shared/generate-service-name");
|
|
10
|
+
const validate_gcp_region_1 = require("../../../shared/validate-gcp-region");
|
|
11
|
+
const validate_image_remotion_version_1 = require("../../../shared/validate-image-remotion-version");
|
|
12
|
+
const args_1 = require("../../args");
|
|
13
|
+
const get_gcp_region_1 = require("../../get-gcp-region");
|
|
14
|
+
const quit_1 = require("../../helpers/quit");
|
|
15
|
+
const log_1 = require("../../log");
|
|
16
|
+
exports.CLOUD_RUN_DEPLOY_SUBCOMMAND = 'deploy';
|
|
17
|
+
const cloudRunDeploySubcommand = async () => {
|
|
18
|
+
var _a, _b, _c, _d, _e;
|
|
19
|
+
const region = (0, get_gcp_region_1.getGcpRegion)();
|
|
20
|
+
const projectID = process.env.REMOTION_GCP_PROJECT_ID;
|
|
21
|
+
const memoryLimit = String((_a = args_1.parsedCloudrunCli.memoryLimit) !== null && _a !== void 0 ? _a : '2Gi');
|
|
22
|
+
const cpuLimit = String((_b = args_1.parsedCloudrunCli.cpuLimit) !== null && _b !== void 0 ? _b : '1.0');
|
|
23
|
+
const minInstances = String((_c = args_1.parsedCloudrunCli.minInstances) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_MIN_INSTANCES);
|
|
24
|
+
const maxInstances = String((_d = args_1.parsedCloudrunCli.maxInstances) !== null && _d !== void 0 ? _d : constants_1.DEFAULT_MAX_INSTANCES);
|
|
25
|
+
const timeoutSeconds = (_e = args_1.parsedCloudrunCli.timeoutSeconds) !== null && _e !== void 0 ? _e : constants_1.DEFAULT_TIMEOUT;
|
|
26
|
+
if (!cli_1.CliInternals.quietFlagProvided()) {
|
|
27
|
+
log_1.Log.info(cli_1.CliInternals.chalk.gray(`
|
|
28
|
+
Validating Deployment of Cloud Run Service:
|
|
29
|
+
|
|
30
|
+
${[
|
|
31
|
+
'Remotion Version: '.padEnd(_1.LEFT_COL, ' ') + ' ' + version_1.VERSION,
|
|
32
|
+
'Memory Limit: '.padEnd(_1.LEFT_COL, ' ') + ' ' + memoryLimit,
|
|
33
|
+
'CPU Limit: '.padEnd(_1.LEFT_COL, ' ') + ' ' + cpuLimit,
|
|
34
|
+
'Minimum Instances: '.padEnd(_1.LEFT_COL, ' ') + ' ' + minInstances,
|
|
35
|
+
'Maximum Instances: '.padEnd(_1.LEFT_COL, ' ') + ' ' + maxInstances,
|
|
36
|
+
'CPU Limit: '.padEnd(_1.LEFT_COL, ' ') + ' ' + cpuLimit,
|
|
37
|
+
'Timeout: '.padEnd(_1.LEFT_COL, ' ') + ' ' + timeoutSeconds,
|
|
38
|
+
'Project Name: '.padEnd(_1.LEFT_COL, ' ') + ' ' + projectID,
|
|
39
|
+
'Region: '.padEnd(_1.LEFT_COL, ' ') + ' ' + region,
|
|
40
|
+
].join('\n')}
|
|
41
|
+
`.trim()));
|
|
42
|
+
log_1.Log.info();
|
|
43
|
+
}
|
|
44
|
+
(0, validate_gcp_region_1.validateGcpRegion)(region);
|
|
45
|
+
await (0, validate_image_remotion_version_1.validateImageRemotionVersion)();
|
|
46
|
+
if (projectID === undefined) {
|
|
47
|
+
log_1.Log.error(`REMOTION_GCP_PROJECT_ID not found in the .env file.`);
|
|
48
|
+
(0, quit_1.quit)(0);
|
|
49
|
+
}
|
|
50
|
+
// if no existing service, deploy new service
|
|
51
|
+
if (!cli_1.CliInternals.quietFlagProvided()) {
|
|
52
|
+
log_1.Log.info(cli_1.CliInternals.chalk.white('\nDeploying Cloud Run Service...'));
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const deployResult = await (0, deploy_service_1.deployService)({
|
|
56
|
+
performImageVersionValidation: false,
|
|
57
|
+
memoryLimit,
|
|
58
|
+
cpuLimit,
|
|
59
|
+
timeoutSeconds,
|
|
60
|
+
projectID,
|
|
61
|
+
region,
|
|
62
|
+
});
|
|
63
|
+
if (!deployResult.fullName) {
|
|
64
|
+
log_1.Log.error('full service name not returned from Cloud Run API.');
|
|
65
|
+
throw new Error(JSON.stringify(deployResult));
|
|
66
|
+
}
|
|
67
|
+
if (!deployResult.shortName) {
|
|
68
|
+
log_1.Log.error('short service name not returned from Cloud Run API.');
|
|
69
|
+
throw new Error(JSON.stringify(deployResult));
|
|
70
|
+
}
|
|
71
|
+
if (!deployResult.alreadyExists && !deployResult.uri) {
|
|
72
|
+
log_1.Log.error('service uri not returned from Cloud Run API.');
|
|
73
|
+
}
|
|
74
|
+
const consoleUrl = `https://console.cloud.google.com/run/detail/${region}/${deployResult.shortName}/logs`;
|
|
75
|
+
if (deployResult.alreadyExists) {
|
|
76
|
+
log_1.Log.info();
|
|
77
|
+
if (cli_1.CliInternals.quietFlagProvided()) {
|
|
78
|
+
cli_1.CliInternals.Log.info(deployResult.shortName);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
log_1.Log.info(cli_1.CliInternals.chalk.blueBright(`
|
|
82
|
+
Service already exists, skipping deployment;
|
|
83
|
+
|
|
84
|
+
${(0, _1.displayServiceInfo)({
|
|
85
|
+
serviceName: deployResult.shortName,
|
|
86
|
+
timeoutInSeconds: timeoutSeconds,
|
|
87
|
+
memoryLimit,
|
|
88
|
+
cpuLimit,
|
|
89
|
+
remotionVersion: version_1.VERSION,
|
|
90
|
+
uri: deployResult.uri,
|
|
91
|
+
region,
|
|
92
|
+
consoleUrl,
|
|
93
|
+
})}
|
|
94
|
+
`.trim()));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
log_1.Log.info();
|
|
99
|
+
if (cli_1.CliInternals.quietFlagProvided()) {
|
|
100
|
+
cli_1.CliInternals.Log.info(deployResult.shortName);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
log_1.Log.info(cli_1.CliInternals.chalk.blueBright(`
|
|
104
|
+
Cloud Run Deployed!
|
|
105
|
+
|
|
106
|
+
${(0, _1.displayServiceInfo)({
|
|
107
|
+
serviceName: deployResult.shortName,
|
|
108
|
+
timeoutInSeconds: timeoutSeconds,
|
|
109
|
+
memoryLimit,
|
|
110
|
+
cpuLimit,
|
|
111
|
+
remotionVersion: version_1.VERSION,
|
|
112
|
+
uri: deployResult.uri,
|
|
113
|
+
region,
|
|
114
|
+
consoleUrl,
|
|
115
|
+
})}
|
|
116
|
+
`.trim()));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
log_1.Log.error(cli_1.CliInternals.chalk.red(`Failed to deploy service - ${(0, generate_service_name_1.generateServiceName)({
|
|
122
|
+
memoryLimit,
|
|
123
|
+
cpuLimit,
|
|
124
|
+
timeoutSeconds,
|
|
125
|
+
})}.`));
|
|
126
|
+
throw e;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
exports.cloudRunDeploySubcommand = cloudRunDeploySubcommand;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ServiceInfo } from '../../../api/get-service-info';
|
|
2
|
+
export declare const SERVICES_COMMAND = "services";
|
|
3
|
+
export declare const LEFT_COL = 20;
|
|
4
|
+
export declare const displayServiceInfo: (service: ServiceInfo) => string;
|
|
5
|
+
export declare const servicesCommand: (args: string[]) => Promise<void> | undefined;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.servicesCommand = exports.displayServiceInfo = exports.LEFT_COL = exports.SERVICES_COMMAND = void 0;
|
|
4
|
+
const cli_1 = require("@remotion/cli");
|
|
5
|
+
const constants_1 = require("../../../shared/constants");
|
|
6
|
+
const quit_1 = require("../../helpers/quit");
|
|
7
|
+
const log_1 = require("../../log");
|
|
8
|
+
const deploy_1 = require("./deploy");
|
|
9
|
+
const ls_1 = require("./ls");
|
|
10
|
+
const rm_1 = require("./rm");
|
|
11
|
+
const rmall_1 = require("./rmall");
|
|
12
|
+
exports.SERVICES_COMMAND = 'services';
|
|
13
|
+
exports.LEFT_COL = 20;
|
|
14
|
+
const displayServiceInfo = (service) => {
|
|
15
|
+
return [
|
|
16
|
+
'Service name: '.padEnd(exports.LEFT_COL, ' ') + ' ' + service.serviceName,
|
|
17
|
+
'Version: '.padEnd(exports.LEFT_COL, ' ') + ' ' + service.remotionVersion,
|
|
18
|
+
'CPU Limit: '.padEnd(exports.LEFT_COL, ' ') + ' ' + service.cpuLimit,
|
|
19
|
+
'Memory Limit: '.padEnd(exports.LEFT_COL, ' ') + ' ' + service.memoryLimit,
|
|
20
|
+
'Timeout: '.padEnd(exports.LEFT_COL, ' ') + ' ' + service.timeoutInSeconds + 'sec',
|
|
21
|
+
'Region: '.padEnd(exports.LEFT_COL, ' ') + ' ' + service.region,
|
|
22
|
+
'Service URL: '.padEnd(exports.LEFT_COL, ' ') + ' ' + service.uri,
|
|
23
|
+
'GCP Console URL: '.padEnd(exports.LEFT_COL, ' ') + ' ' + service.consoleUrl,
|
|
24
|
+
].join('\n');
|
|
25
|
+
};
|
|
26
|
+
exports.displayServiceInfo = displayServiceInfo;
|
|
27
|
+
const printCloudRunHelp = () => {
|
|
28
|
+
log_1.Log.info(`${constants_1.BINARY_NAME} ${exports.SERVICES_COMMAND} <subcommand>`);
|
|
29
|
+
log_1.Log.info();
|
|
30
|
+
log_1.Log.info('Available subcommands:');
|
|
31
|
+
cli_1.CliInternals.Log.info('');
|
|
32
|
+
cli_1.CliInternals.Log.info(`${constants_1.BINARY_NAME} ${exports.SERVICES_COMMAND} ${ls_1.SERVICES_LS_SUBCOMMAND}`);
|
|
33
|
+
cli_1.CliInternals.Log.info(cli_1.CliInternals.chalk.gray('Lists the services currently deployed'));
|
|
34
|
+
log_1.Log.info('');
|
|
35
|
+
log_1.Log.info(`${constants_1.BINARY_NAME} ${exports.SERVICES_COMMAND} ${deploy_1.CLOUD_RUN_DEPLOY_SUBCOMMAND}`);
|
|
36
|
+
log_1.Log.info(cli_1.CliInternals.chalk.gray('Deploy a new Cloud Run service'));
|
|
37
|
+
cli_1.CliInternals.Log.info('');
|
|
38
|
+
cli_1.CliInternals.Log.info(`${constants_1.BINARY_NAME} ${exports.SERVICES_COMMAND} ${rm_1.SERVICES_RM_SUBCOMMAND} <service-name>`);
|
|
39
|
+
cli_1.CliInternals.Log.info(cli_1.CliInternals.chalk.gray('Delete a Cloud Run service'));
|
|
40
|
+
cli_1.CliInternals.Log.info('');
|
|
41
|
+
cli_1.CliInternals.Log.info(`${constants_1.BINARY_NAME} ${exports.SERVICES_COMMAND} ${rmall_1.SERVICES_RMALL_SUBCOMMAND}`);
|
|
42
|
+
cli_1.CliInternals.Log.info(cli_1.CliInternals.chalk.gray('Delete all services in selected region'));
|
|
43
|
+
};
|
|
44
|
+
const servicesCommand = (args) => {
|
|
45
|
+
if (args[0] === ls_1.SERVICES_LS_SUBCOMMAND) {
|
|
46
|
+
return (0, ls_1.servicesLsCommand)();
|
|
47
|
+
}
|
|
48
|
+
if (args[0] === rm_1.SERVICES_RM_SUBCOMMAND) {
|
|
49
|
+
return (0, rm_1.servicesRmCommand)(args.slice(1));
|
|
50
|
+
}
|
|
51
|
+
if (args[0] === rmall_1.SERVICES_RMALL_SUBCOMMAND) {
|
|
52
|
+
return (0, rmall_1.servicesRmallCommand)();
|
|
53
|
+
}
|
|
54
|
+
if (args[0] === deploy_1.CLOUD_RUN_DEPLOY_SUBCOMMAND) {
|
|
55
|
+
return (0, deploy_1.cloudRunDeploySubcommand)();
|
|
56
|
+
}
|
|
57
|
+
if (args[0]) {
|
|
58
|
+
log_1.Log.error(`Subcommand ${args[0]} not found.`);
|
|
59
|
+
printCloudRunHelp();
|
|
60
|
+
(0, quit_1.quit)(1);
|
|
61
|
+
}
|
|
62
|
+
printCloudRunHelp();
|
|
63
|
+
};
|
|
64
|
+
exports.servicesCommand = servicesCommand;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.servicesLsCommand = exports.SERVICES_LS_SUBCOMMAND = void 0;
|
|
4
|
+
const cli_1 = require("@remotion/cli");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const get_services_1 = require("../../../api/get-services");
|
|
7
|
+
const get_gcp_region_1 = require("../../get-gcp-region");
|
|
8
|
+
const log_1 = require("../../log");
|
|
9
|
+
exports.SERVICES_LS_SUBCOMMAND = 'ls';
|
|
10
|
+
const servicesLsCommand = async () => {
|
|
11
|
+
const region = (0, get_gcp_region_1.getGcpRegion)();
|
|
12
|
+
const fetchingOutput = cli_1.CliInternals.createOverwriteableCliOutput({
|
|
13
|
+
quiet: cli_1.CliInternals.quietFlagProvided(),
|
|
14
|
+
cancelSignal: null,
|
|
15
|
+
updatesDontOverwrite: false,
|
|
16
|
+
indent: false,
|
|
17
|
+
});
|
|
18
|
+
fetchingOutput.update(`Getting services in ${region}...`, false);
|
|
19
|
+
const services = await (0, get_services_1.getServices)({
|
|
20
|
+
region,
|
|
21
|
+
compatibleOnly: false,
|
|
22
|
+
});
|
|
23
|
+
if (cli_1.CliInternals.quietFlagProvided()) {
|
|
24
|
+
if (services.length === 0) {
|
|
25
|
+
log_1.Log.info('()');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
log_1.Log.info(services.map((f) => f.serviceName).join(' '));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
fetchingOutput.update('Getting service info...', false);
|
|
32
|
+
const pluralized = services.length === 1 ? 'service' : 'services';
|
|
33
|
+
fetchingOutput.update(`${services.length} ${pluralized} in ${region}`, false);
|
|
34
|
+
log_1.Log.info();
|
|
35
|
+
for (const service of services) {
|
|
36
|
+
log_1.Log.info();
|
|
37
|
+
log_1.Log.info((0, _1.displayServiceInfo)(service));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.servicesLsCommand = servicesLsCommand;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.servicesRmCommand = exports.SERVICES_RM_SUBCOMMAND = void 0;
|
|
4
|
+
const cli_1 = require("@remotion/cli");
|
|
5
|
+
const delete_service_1 = require("../../../api/delete-service");
|
|
6
|
+
const get_service_info_1 = require("../../../api/get-service-info");
|
|
7
|
+
const constants_1 = require("../../../shared/constants");
|
|
8
|
+
const get_gcp_region_1 = require("../../get-gcp-region");
|
|
9
|
+
const confirm_1 = require("../../helpers/confirm");
|
|
10
|
+
const quit_1 = require("../../helpers/quit");
|
|
11
|
+
const log_1 = require("../../log");
|
|
12
|
+
const index_1 = require("./index");
|
|
13
|
+
const ls_1 = require("./ls");
|
|
14
|
+
exports.SERVICES_RM_SUBCOMMAND = 'rm';
|
|
15
|
+
const servicesRmCommand = async (args) => {
|
|
16
|
+
if (args.length === 0) {
|
|
17
|
+
log_1.Log.error('No service name passed.');
|
|
18
|
+
log_1.Log.error('Pass another argument which is the name of the service you would like to remove.');
|
|
19
|
+
log_1.Log.info(`You can run \`${constants_1.BINARY_NAME} ${index_1.SERVICES_COMMAND} ${ls_1.SERVICES_LS_SUBCOMMAND}\` to see a list of deployed Cloud Run services.`);
|
|
20
|
+
(0, quit_1.quit)(1);
|
|
21
|
+
}
|
|
22
|
+
if (args[0] === '()') {
|
|
23
|
+
log_1.Log.info('No services to remove.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const region = (0, get_gcp_region_1.getGcpRegion)();
|
|
27
|
+
for (const serviceName of args) {
|
|
28
|
+
const infoOutput = cli_1.CliInternals.createOverwriteableCliOutput({
|
|
29
|
+
quiet: cli_1.CliInternals.quietFlagProvided(),
|
|
30
|
+
cancelSignal: null,
|
|
31
|
+
updatesDontOverwrite: false,
|
|
32
|
+
indent: false,
|
|
33
|
+
});
|
|
34
|
+
infoOutput.update('Getting service info...', false);
|
|
35
|
+
const info = await (0, get_service_info_1.getServiceInfo)({
|
|
36
|
+
region,
|
|
37
|
+
serviceName,
|
|
38
|
+
});
|
|
39
|
+
infoOutput.update((0, index_1.displayServiceInfo)(info), false);
|
|
40
|
+
log_1.Log.info();
|
|
41
|
+
const confirmDelete = await (0, confirm_1.confirmCli)({
|
|
42
|
+
delMessage: 'Delete? (Y/n)',
|
|
43
|
+
allowForceFlag: true,
|
|
44
|
+
});
|
|
45
|
+
if (!confirmDelete) {
|
|
46
|
+
log_1.Log.info(`Skipping service - ${info.serviceName}.`);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const output = cli_1.CliInternals.createOverwriteableCliOutput({
|
|
50
|
+
quiet: cli_1.CliInternals.quietFlagProvided(),
|
|
51
|
+
cancelSignal: null,
|
|
52
|
+
updatesDontOverwrite: false,
|
|
53
|
+
indent: false,
|
|
54
|
+
});
|
|
55
|
+
output.update('Deleting...', false);
|
|
56
|
+
await (0, delete_service_1.deleteService)({
|
|
57
|
+
serviceName,
|
|
58
|
+
region,
|
|
59
|
+
});
|
|
60
|
+
output.update('Deleted!\n', false);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.servicesRmCommand = servicesRmCommand;
|