import child_process from 'node:child_process';
import process from 'node:process';
const config = {};
function init(options) {
config.dest = options.dest || "";
config.source = options.source || "dist/";
config.ssh_host = process.env.RSYNC || process.env.RSYNC_DEVEL;
if (config.ssh_host) {
config.rsync_dir = process.env.RSYNC ? "/usr/local/share/cockpit/" : "~/.local/share/cockpit/";
child_process.spawnSync("ssh", [config.ssh_host, "mkdir", "-p", config.rsync_dir], { stdio: "inherit" });
}
}
function run(callback) {
if (config.ssh_host) {
const proc = child_process.spawn("rsync", ["--recursive", "--info=PROGRESS2", "--delete",
config.source, config.ssh_host + ":" + config.rsync_dir + config.dest], { stdio: "inherit" });
proc.on('close', (code) => {
if (code !== 0) {
process.exit(1);
} else {
callback();
}
});
} else {
callback();
}
}
export const cockpitRsyncEsbuildPlugin = options => ({
name: 'cockpitRsyncPlugin',
setup(build) {
init(options || {});
build.onEnd(result => result.errors.length === 0 ? run(() => {}) : {});
},
});
export class CockpitRsyncWebpackPlugin {
constructor(options) {
init(options || {});
}
apply(compiler) {
compiler.hooks.afterEmit.tapAsync('WebpackHookPlugin', (_compilation, callback) => run(callback));
}
}