mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
73 lines
2.2 KiB
JavaScript
73 lines
2.2 KiB
JavaScript
const gulp = require('gulp');
|
|
const execa = require('execa');
|
|
const { stdout } = require('process');
|
|
|
|
const execCommand = async (executableName, args, options = null) => {
|
|
options = {
|
|
showInput: true,
|
|
showStdout: true,
|
|
showStderr: true,
|
|
quiet: false,
|
|
...options,
|
|
};
|
|
|
|
if (options.quiet) {
|
|
options.showInput = false;
|
|
options.showStdout = false;
|
|
options.showStderr = false;
|
|
}
|
|
|
|
if (options.showInput) {
|
|
stdout.write(`> ${executableName} ${args.join(' ')}\n`);
|
|
}
|
|
|
|
const promise = execa(executableName, args);
|
|
if (options.showStdout && promise.stdout) promise.stdout.pipe(process.stdout);
|
|
if (options.showStderr && promise.stderr) promise.stderr.pipe(process.stderr);
|
|
const result = await promise;
|
|
return result.stdout.trim();
|
|
};
|
|
|
|
|
|
const tasks = {
|
|
completePublishAll: {
|
|
fn: async () => {
|
|
await execCommand('git', ['add', '-A']);
|
|
await execCommand('git', ['commit', '-m', 'Releasing sub-packages']);
|
|
|
|
// Lerna does some unnecessary auth check that doesn't work with
|
|
// automation tokens, thus the --no-verify-access. Automation token
|
|
// is still used for access when publishing even with this flag
|
|
// (publishing would fail otherwise).
|
|
// https://github.com/lerna/lerna/issues/2788
|
|
await execCommand('lerna', ['publish', 'from-package', '-y', '--no-verify-access']);
|
|
|
|
await execCommand('yarn', ['install']);
|
|
await execCommand('git', ['add', '-A']);
|
|
await execCommand('git', ['commit', '-m', 'Lock file']);
|
|
|
|
await execCommand('git', ['push']);
|
|
},
|
|
},
|
|
build: {
|
|
fn: async () => {
|
|
// Building everything in parallel seems to be unreliable on CI as
|
|
// certain scripts randomly fail with missing files or folder, or
|
|
// cannot delete certain directories (eg. copyPluginAssets or
|
|
// copyApplicationAssets). Because of this, on CI, we run the build
|
|
// sequencially. Locally we run it in parallel, which is much
|
|
// faster, especially when having to rebuild after adding a
|
|
// dependency.
|
|
if (process.env.BUILD_SEQUENCIAL === '1') {
|
|
await execCommand('yarn', ['run', 'buildSequential']);
|
|
} else {
|
|
await execCommand('yarn', ['run', 'buildParallel']);
|
|
}
|
|
},
|
|
},
|
|
};
|
|
|
|
for (const taskName in tasks) {
|
|
gulp.task(taskName, tasks[taskName].fn);
|
|
}
|