UNPKG

@graphql-hive/cli

Version:

A CLI util to manage and control your GraphQL Hive

73 lines 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const core_1 = require("@graphql-hive/core"); const core_2 = require("@oclif/core"); const base_command_1 = tslib_1.__importDefault(require("../../base-command")); class ArtifactsFetch extends base_command_1.default { async run() { const { flags } = await this.parse(ArtifactsFetch); const cdnEndpoint = this.ensure({ key: 'cdn.endpoint', args: flags, env: 'HIVE_CDN_ENDPOINT', }); const token = this.ensure({ key: 'cdn.accessToken', args: flags, env: 'HIVE_CDN_ACCESS_TOKEN', }); const artifactType = flags.artifact; const url = new core_1.URL(`${cdnEndpoint}/${artifactType}`); const response = await core_1.http.get(url.toString(), { headers: { 'x-hive-cdn-key': token, 'User-Agent': `hive-cli/${this.config.version}`, }, retry: { retries: 3, }, logger: { info: (...args) => { if (this.flags.debug) { console.info(...args); } }, error: (...args) => { console.error(...args); }, }, }); if (response.status >= 300) { const responseBody = await response.text(); throw new Error(responseBody); } if (flags.outputFile) { const fs = await Promise.resolve().then(() => tslib_1.__importStar(require('fs/promises'))); const contents = Buffer.from(await response.arrayBuffer()); await fs.writeFile(flags.outputFile, contents); this.log(`Wrote ${contents.length} bytes to ${flags.outputFile}`); return; } this.log(await response.text()); } } ArtifactsFetch.description = 'fetch artifacts from the CDN'; ArtifactsFetch.flags = { 'cdn.endpoint': core_2.Flags.string({ description: 'CDN endpoint', }), 'cdn.accessToken': core_2.Flags.string({ description: 'CDN access token', }), artifact: core_2.Flags.string({ description: 'artifact to fetch (Note: supergraph is only available for federation projects)', options: ['sdl', 'supergraph', 'metadata', 'services', 'sdl.graphql', 'sdl.graphqls'], required: true, }), outputFile: core_2.Flags.string({ description: 'whether to write to a file instead of stdout', }), }; exports.default = ArtifactsFetch; //# sourceMappingURL=fetch.js.map