1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-30 10:36:35 +02:00
joplin/packages/app-desktop/tools/copyPluginAssets.js

50 lines
1.1 KiB
JavaScript

const { copy, mkdirp, remove } = require('fs-extra');
const msleep = async (ms) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, ms);
});
};
// Same as copyApplicationAssets - probably both scripts should be merged in
// one.
const withRetry = async (fn) => {
for (let i = 0; i < 5; i++) {
try {
await fn();
return;
} catch (error) {
console.warn(`withRetry: Failed calling function - will retry (${i})`, error);
await msleep(1000 + i * 1000);
}
}
throw new Error('withRetry: Could not run function after multiple attempts');
};
async function main() {
const rootDir = `${__dirname}/..`;
const sourceDir = `${rootDir}/../../packages/renderer/assets`;
const destDirs = [
`${rootDir}/gui/note-viewer/pluginAssets`,
`${rootDir}/pluginAssets`,
];
for (const action of ['delete', 'copy']) {
for (const destDir of destDirs) {
if (action === 'delete') {
await withRetry(() => remove(destDir));
} else {
console.info(`Copying to ${destDir}`);
await withRetry(() => mkdirp(destDir));
await withRetry(() => copy(sourceDir, destDir, { overwrite: true }));
}
}
}
}
module.exports = main;