You've already forked joplin
							
							
				mirror of
				https://github.com/laurent22/joplin.git
				synced 2025-10-31 00:07:48 +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);
 | |
| }
 |