diff --git a/extensions/roc-plugin-repo/src/actions/runScript.js b/extensions/roc-plugin-repo/src/actions/runScript.js index 9f7a719..ad21495 100644 --- a/extensions/roc-plugin-repo/src/actions/runScript.js +++ b/extensions/roc-plugin-repo/src/actions/runScript.js @@ -13,6 +13,13 @@ export default ({ context }) => (script, projects, extra) => () => { return lazyRequire('./publish')(context, projects, extra); } else if (script === 'test') { return lazyRequire('./test')(context, projects, extra); + } else if (script === 'watch') { + return lazyRequire('./build')(context, projects, { + ...extra, + options: { + watch: true, + }, + }); } return []; diff --git a/extensions/roc-plugin-repo/src/commands/watch.js b/extensions/roc-plugin-repo/src/commands/watch.js new file mode 100644 index 0000000..c39c701 --- /dev/null +++ b/extensions/roc-plugin-repo/src/commands/watch.js @@ -0,0 +1,14 @@ +import scriptRunner from './utils/scriptRunner'; + +export default projects => ({ + arguments: { managed: { projects: selectedProjects } }, + options: { managed: { concurrent } }, + context, +}) => { + const settings = context.config.settings.repo; + const selected = projects.filter( + ({ name }) => !selectedProjects || selectedProjects.includes(name), + ); + + return scriptRunner('watch')(selected, settings, concurrent); +}; diff --git a/extensions/roc-plugin-repo/src/index.js b/extensions/roc-plugin-repo/src/index.js index 62da743..4b790d8 100644 --- a/extensions/roc-plugin-repo/src/index.js +++ b/extensions/roc-plugin-repo/src/index.js @@ -604,6 +604,27 @@ module.exports.roc = { }, options: jestOptions, }, + watch: { + command: args => fetchProjects(lazyRequire('./commands/watch'))(args), + description: 'Build projects in watch mode', + settings: true, + arguments: { + projects: { + validator: validators.isArray(validators.isString), + description: 'Projects to use', + }, + }, + options: { + concurrent: { + validator: validators.oneOf( + validators.isBoolean, + validators.isInteger, + ), + description: 'Run concurrently', + default: 2, + }, + }, + }, }, }, };