UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

45 lines 1.88 kB
"use strict"; 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