@adinsure-ops/ops-cli
Version:
Operations CLI for working with AdInsure
76 lines (75 loc) • 2.86 kB
JavaScript
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;