alwaysai
Version:
The alwaysAI command-line interface (CLI)
53 lines • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const alwayscli_1 = require("@alwaysai/alwayscli");
const model_config_file_1 = require("./model-config-file");
const rpc_client_1 = require("../../rpc-client");
const parse_package_url_1 = require("../../model-manager/parse-package-url");
const package_stream_from_cache_1 = require("../../model-manager/package-stream-from-cache");
const package_stream_from_cwd_1 = require("../../model-manager/package-stream-from-cwd");
const stream_package_to_cache_1 = require("../../model-manager/stream-package-to-cache");
const spin_on_promise_1 = require("../../util/spin-on-promise");
const s3_1 = require("../../util/s3");
exports.publish = alwayscli_1.createLeaf({
name: 'publish',
description: 'Publish a new version of a model to the alwaysAI cloud',
async action() {
const config = model_config_file_1.modelConfigFile.read();
const { accuracy, description, id, license, public: public_, version } = config;
const strippedConfig = {
accuracy,
description,
id,
license,
public: public_,
version,
};
// Create the provisional record in the database and get packageUrl
const rpcApi = await rpc_client_1.RpcClient();
const modelVersion = await rpcApi.createModelVersion(strippedConfig);
await spin_on_promise_1.spinOnPromise((async () => {
const cwdPackageStream = await package_stream_from_cwd_1.PackageStreamFromCwd();
await stream_package_to_cache_1.streamPackageToCache({
id: config.id,
version: config.version,
readable: cwdPackageStream,
});
})(), 'Create package');
await spin_on_promise_1.spinOnPromise((async () => {
const { awsRegion, bucketName, bucketKey } = parse_package_url_1.parsePackageUrl(modelVersion.packageUrl);
const s3 = s3_1.S3({ region: awsRegion });
const readStream = await package_stream_from_cache_1.PackageStreamFromCache({
id: config.id,
version: config.version,
});
await s3
.upload({ Bucket: bucketName, Body: readStream, Key: bucketKey })
.promise();
})(), 'Upload to cloud');
await spin_on_promise_1.spinOnPromise((async () => {
await rpcApi.finalizeModelVersion(modelVersion.uuid);
})(), 'Mark package as final');
},
});
//# sourceMappingURL=publish.js.map