in devel/minio/minio.js [35:199]
async function main() {
const opspwd = process.env.OPS_PWD
const auth = process.env.AUTHB64
const minioAddr = `${process.env.APIHOST}/api/v1/web/whisk-system/nuv/minio`;
const uploadAddr = `${process.env.APIHOST}/api/v1/web/whisk-system/nuv/devel_upload`;
const downloadAddr = `${process.env.APIHOST}/api/v1/web/whisk-system/nuv/devel_download`;
let command = process.argv[2]
let cmd = {}
let bucket;
let file;
let dest_bucket;
let dest_file;
let localfile;
let pattern;
let dry_run;
let format;
if (['ls','lsb'].indexOf(command) !== -1) {
if (command === 'ls') {
format = Bun.argv[3];
} else {
format = Bun.argv[4];
}
if (!format) {
format = 'json';
}
if (['json', 'table'].indexOf(format) === -1) {
console.log(Bun.argv.length, Bun.argv);
console.log(`Unsupported output format ${format}`);
usage();
}
}
if ('ls' === command) {
cmd['command']="ls"
}
if ('lsb' === command) {
bucket = decode_and_norm(process.argv[3])
cmd['command'] = "ls"
cmd['args'] = [bucket]
}
if ('rm' === command) {
bucket = decode_and_norm(process.argv[3])
file = decode_and_norm(process.argv[4])
cmd['command']="rm"
cmd['args']=[bucket,file]
}
if ('mv' === command) {
bucket = decode_and_norm(process.argv[3])
file = decode_and_norm(process.argv[4])
dest_bucket = decode_and_norm(process.argv[5])
dest_file = decode_and_norm(process.argv[6])
cmd['command'] = "mv"
cmd['args'] = [bucket, file, dest_bucket, dest_file]
}
if ('cp' === command) {
bucket = decode_and_norm(process.argv[3])
file = decode_and_norm(process.argv[4])
dest_bucket = decode_and_norm(process.argv[5])
dest_file = decode_and_norm(process.argv[6])
cmd['command']="cp"
cmd['args']=[bucket,file,dest_bucket,dest_file]
}
if ('put' === command) {
localfile = decode_and_norm(process.argv[3])
bucket = decode_and_norm(process.argv[4])
file = decode_and_norm(process.argv[5])
console.log(localfile, bucket, file);
}
if ('get' === command) {
bucket = decode_and_norm(process.argv[3])
file = decode_and_norm(process.argv[4])
}
if ('clean' === command) {
bucket = decode_and_norm(process.argv[3])
pattern = decode_and_norm(process.argv[4])
dry_run = decode_and_norm(process.argv[5])
console.log(`dryrun=${dry_run}`)
if (!isRegExp(pattern)) {
console.log(`pattern ${pattern} it is not a valid regular expression. Aborting execution`)
return
}
cmd['command']="clean"
cmd['args']=[bucket, pattern, dry_run]
}
try {
if (command !== "put" && command !== "get") {
const init = {
method: "POST",
body: JSON.stringify(cmd),
headers: {'x-impersonate-auth': `${auth}`, 'Content-Type': 'application/json'},
};
const response = await fetch(`${minioAddr}`, init);
const contentType = response.headers.get('Content-Type');
const isJson = contentType && contentType.includes('application/json')
let outputData = '';
if (isJson) {
outputData = await response.json();
} else {
outputData = await response.text();
}
if (format === 'table' && isJson && outputData!=='') {
outputData = Bun.inspect.table(outputData);
}
console.log(outputData);
return;
}
if (command === "put") {
const bunfile = Bun.file(localfile);
if (bunfile.exists()) {
const init = {
method: "PUT",
body: bunfile,
headers: {'x-impersonate-auth': `${auth}`, 'Content-Type': 'application/json'},
};
const response = await fetch(`${uploadAddr}/${bucket}/${file}`, init);
console.log(await response.text());
} else {
console.log(`invalid filename ${localfile} provided`)
}
return;
}
if (command === "get") {
let split = file.split("/")
let output_file = split[split.length - 1]
console.log(output_file);
const init = {
method: "GET",
body: file,
headers: {'x-impersonate-auth': `${auth}`},
};
const response = await fetch(`${downloadAddr}/${bucket}/${file}`, init);
const out_file = `${opspwd}/${output_file}`;
await Bun.write(out_file, response);
}
} catch (err) {
console.error(`[ERROR]: ${err.message}`);
}
}