@graphql-hive/cli
Version:
A CLI util to manage and control your GraphQL Hive
73 lines • 2.71 kB
JavaScript
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
;