piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
140 lines • 7.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.publishPiletDefaults = void 0;
exports.publishPilet = publishPilet;
const path_1 = require("path");
const types_1 = require("../types");
const common_1 = require("../common");
exports.publishPiletDefaults = {
url: undefined,
apiKey: undefined,
fresh: false,
logLevel: types_1.LogLevels.info,
schemaVersion: undefined,
mode: 'basic',
from: 'local',
fields: {},
headers: {},
interactive: false,
cert: undefined,
allowSelfSigned: common_1.config.allowSelfSigned,
};
async function getFiles(baseDir, sources, from, fresh, originalSchemaVersion, logLevel, bundlerName, _, agent, hooks) {
if (fresh) {
(0, common_1.log)('generalDebug_0003', 'Detected "--fresh". Trying to resolve the package.json.');
const allEntries = await (0, common_1.matchAnyPilet)(baseDir, sources);
if (allEntries.length === 0) {
(0, common_1.fail)('entryFileMissing_0077');
}
return await Promise.all(allEntries.map(async (entryModule) => {
(0, common_1.progress)('Triggering pilet build ...');
const { root, piletPackage } = await (0, common_1.triggerBuildPilet)({
_,
bundlerName,
entryModule,
fresh,
logLevel,
originalSchemaVersion,
watch: false,
optimizeModules: false,
sourceMaps: true,
declaration: true,
contentHash: true,
minify: true,
hooks,
});
const name = piletPackage.name;
(0, common_1.log)('generalDebug_0003', `Pilet "${name}" built successfully!`);
(0, common_1.progress)('Triggering pilet pack ...');
const file = await (0, common_1.createPiletPackage)(root, '.', '.');
(0, common_1.log)('generalDebug_0003', `Pilet "${name}" packed successfully!`);
return file;
}));
}
else {
(0, common_1.log)('generalDebug_0003', `Did not find fresh flag. Trying to match from "${from}".`);
switch (from) {
case 'local': {
(0, common_1.log)('generalDebug_0003', `Matching files using "${sources.join('", "')}".`);
const allFiles = await Promise.all(sources.map((s) => (0, common_1.matchFiles)(baseDir, s)));
return allFiles.reduce((result, files) => [...result, ...files], []);
}
case 'remote': {
(0, common_1.log)('generalDebug_0003', `Download file from "${sources.join('", "')}".`);
const allFiles = await Promise.all(sources.map((s) => (0, common_1.downloadFile)(s, agent)));
return allFiles.reduce((result, files) => [...result, ...files], []);
}
case 'npm': {
(0, common_1.log)('generalDebug_0003', `View npm package "${sources.join('", "')}".`);
const allUrls = await Promise.all(sources.map((s) => (0, common_1.findNpmTarball)(s)));
(0, common_1.log)('generalDebug_0003', `Download file from "${allUrls.join('", "')}".`);
const allFiles = await Promise.all(allUrls.map((url) => (0, common_1.downloadFile)(url, agent)));
return allFiles.reduce((result, files) => [...result, ...files], []);
}
}
}
}
async function publishPilet(baseDir = process.cwd(), options = {}) {
const { fresh = exports.publishPiletDefaults.fresh, source = fresh ? './src/index' : '*.tgz', url = common_1.config.url ?? exports.publishPiletDefaults.url, apiKey = common_1.config.apiKeys?.[url] ?? common_1.config.apiKey ?? exports.publishPiletDefaults.apiKey, logLevel = exports.publishPiletDefaults.logLevel, from = exports.publishPiletDefaults.from, schemaVersion = exports.publishPiletDefaults.schemaVersion, fields = exports.publishPiletDefaults.fields, headers = exports.publishPiletDefaults.headers, mode = exports.publishPiletDefaults.mode, interactive = exports.publishPiletDefaults.interactive, cert = exports.publishPiletDefaults.cert, allowSelfSigned = exports.publishPiletDefaults.allowSelfSigned, _ = {}, hooks = {}, bundlerName, } = options;
(0, common_1.ensure)('baseDir', baseDir, 'string');
(0, common_1.ensure)('headers', headers, 'object');
(0, common_1.ensure)('fields', fields, 'object');
(0, common_1.ensure)('_', _, 'object');
(0, common_1.ensure)('hooks', hooks, 'object');
const fullBase = (0, path_1.resolve)(process.cwd(), baseDir);
(0, common_1.setLogLevel)(logLevel);
(0, common_1.progress)('Reading configuration ...');
if (!url) {
(0, common_1.fail)('missingPiletFeedUrl_0060');
}
const ca = await (0, common_1.getCertificate)(cert);
const agent = (0, common_1.getAgent)({ ca, allowSelfSigned });
(0, common_1.log)('generalDebug_0003', 'Getting the tgz files ...');
const sources = Array.isArray(source) ? source : [source];
const files = await getFiles(fullBase, sources, from, fresh, schemaVersion, logLevel, bundlerName, _, agent, hooks);
const successfulUploads = [];
(0, common_1.log)('generalDebug_0003', 'Received available tgz files.');
if (files.length === 0) {
(0, common_1.fail)('missingPiletTarball_0061', sources);
}
(0, common_1.log)('generalInfo_0000', `Using feed service "${url}".`);
for (const file of files) {
(0, common_1.log)('generalDebug_0003', 'Reading the file for upload ...');
const fileName = (0, path_1.relative)(fullBase, file);
const content = await (0, common_1.readBinary)(fullBase, fileName);
if (content) {
(0, common_1.progress)(`Publishing "%s" to "%s" ...`, file, url);
const result = await (0, common_1.postFile)(url, mode, apiKey, content, fields, headers, agent, interactive);
if (result.success) {
successfulUploads.push(file);
if (result.response) {
(0, common_1.log)('httpPostResponse_0067', result);
}
(0, common_1.progress)(`Published successfully!`);
}
else if (result.status === 402) {
(0, common_1.log)('failedToUploadPayment_0161', result.response);
}
else if (result.status === 409) {
(0, common_1.log)('failedToUploadVersion_0162', result.response);
}
else if (result.status === 413) {
(0, common_1.log)('failedToUploadSize_0163', result.response);
}
else {
(0, common_1.log)('failedToUpload_0062', fileName);
}
}
else {
(0, common_1.log)('failedToRead_0063', fileName);
}
(0, common_1.log)('generalDebug_0003', 'Finished uploading the file.');
}
if (files.length === successfulUploads.length) {
(0, common_1.logDone)(`Pilet(s) published successfully!`);
}
else {
(0, common_1.fail)('failedUploading_0064');
}
}
//# sourceMappingURL=publish-pilet.js.map