@soleil-se/build-app
Version:
Script for building WebApps, RESTApps, Widgets and MCP Servers with Svelte in Sitevision.
40 lines (35 loc) • 1.23 kB
JavaScript
import fse from 'fs-extra';
import chalk from 'chalk';
import FormData from 'form-data';
import { logSuccess } from '@soleil-se/build-utils/log';
import handleError from './api/handleError.js';
import addonRequest from './api/addonRequest.js';
function getUploadUri(type, name) {
switch (type.toLowerCase()) {
case 'webapp':
case 'widget':
return `Addon%20Repository/${encodeURIComponent(name)}/webAppImport`;
case 'restapp':
return `Addon%20Repository/${encodeURIComponent(name)}/restAppImport`;
case 'mcpserver':
return `Addon%20Repository/${encodeURIComponent(name)}/mcpServerImport`;
default:
throw new Error('Unknown app type...');
}
}
export default async function uploadAddon({ src, manifest, force }) {
try {
if (!fse.existsSync(src)) {
throw new Error(`Could not find ${src}`);
}
const form = new FormData();
form.append('file', fse.createReadStream(src));
await addonRequest(getUploadUri(manifest.type, manifest.name), {
searchParams: { force },
body: form,
});
logSuccess(`${manifest.type} ${chalk.white(`${manifest.name} (${manifest.id})`)} uploaded successfully!`);
} catch (error) {
handleError(error);
}
}