alwaysai
Version:
The alwaysAI command-line interface (CLI)
45 lines • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const util_1 = require("util");
const path_1 = require("path");
const mkdirp = require("mkdirp");
const pump = require("pump");
const rimraf = require("rimraf");
const rpc_client_1 = require("../rpc-client");
const get_random_string_1 = require("../util/get-random-string");
const model_package_path_1 = require("./model-package-path");
const parse_package_url_1 = require("./parse-package-url");
const s3_1 = require("../util/s3");
const rimrafAsync = util_1.promisify(rimraf);
async function downloadModelVersionPackage(opts) {
const rpcApi = await rpc_client_1.RpcClient();
const { packageUrl } = await rpcApi.getModelVersion(opts);
const { awsRegion, bucketName, bucketKey } = parse_package_url_1.parsePackageUrl(packageUrl);
const s3 = s3_1.S3({ region: awsRegion });
const packagePath = model_package_path_1.ModelPackagePath(opts);
await util_1.promisify(mkdirp)(path_1.dirname(packagePath));
const downloadPath = `${packagePath}.${get_random_string_1.getRandomString()}.download`;
try {
await new Promise((resolve, reject) => {
const writeable = fs_1.createWriteStream(downloadPath);
const readable = s3
.getObject({ Key: bucketKey, Bucket: bucketName })
.createReadStream();
pump(readable, writeable, err => {
if (err) {
reject(err);
}
else {
resolve();
}
});
});
await util_1.promisify(fs_1.rename)(downloadPath, packagePath);
}
finally {
await rimrafAsync(downloadPath);
}
}
exports.downloadModelVersionPackage = downloadModelVersionPackage;
//# sourceMappingURL=download-model-version-package.js.map