UNPKG

@adinsure-ops/ops-cli

Version:

Operations CLI for working with AdInsure

76 lines (75 loc) 2.86 kB
import { __awaiter } from "tslib"; import { Flags, ux } from '@oclif/core'; import axios from 'axios'; import chalk from 'chalk'; import fs from 'fs-extra'; import os from 'os'; import path from 'path'; import CommandBase from '../../command.base.js'; class DownloadJmeter extends CommandBase { constructor() { super(...arguments); this.url = 'https://ops.adinsure.com/api/storage/jmeter/'; } // eslint-disable-next-line @typescript-eslint/no-explicit-any downloadFile() { return __awaiter(this, void 0, void 0, function* () { return axios.get(`${this.url}/jmeter-artifacts.zip`, { headers: { Authorization: 'Bearer ' + (yield this.security.getToken()), 'Content-Type': 'application/octet-stream', }, responseType: 'arraybuffer', }); }); } run() { const _super = Object.create(null, { run: { get: () => super.run } }); return __awaiter(this, void 0, void 0, function* () { _super.run.call(this); const { flags } = yield this.parse(DownloadJmeter); const basePath = flags.output.charAt(0) === '~' ? os.homedir() + flags.output.split('~')[1] : flags.output; const filename = `jmeter-artifacts.zip`; const filePath = path.resolve(basePath, filename); ux.action.start(`Downloading jmeter examples to ${filePath}`, undefined, { stdout: true }); try { const file = yield this.downloadFile(); const writeStream = fs.createWriteStream(filePath); writeStream.write(file.data, 'binary'); writeStream.on('finish', () => { ux.action.stop(`${chalk.green('OK')}`); }); writeStream.end(); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error) { switch (error.statusCode) { case 404: { this.error('Does not exists.', { exit: 1 }); } case 400: { this.error('Try refreshing your login credentials with "ops login".', { exit: 1 }); } default: { this.error(error.message); } } } }); } } DownloadJmeter.description = 'download jmeter examples from Azure storage'; DownloadJmeter.usage = 'download:jmeter <flags>'; DownloadJmeter.examples = [ `$ ops download:jmeter -o ~/Downloads`, ]; DownloadJmeter.flags = { output: Flags.string({ char: 'o', description: 'output directory', default: './', }), }; export default DownloadJmeter;