diff --git a/packages/api/cli/src/electron-forge.ts b/packages/api/cli/src/electron-forge.ts index efb804114a..d78c3eb8f0 100755 --- a/packages/api/cli/src/electron-forge.ts +++ b/packages/api/cli/src/electron-forge.ts @@ -34,7 +34,13 @@ program .command('make', 'Generate distributables for the current Electron application') .command('start', 'Start the current Electron application') .command('publish', 'Publish the current Electron application to GitHub') - .command('install', 'Install an Electron application from GitHub'); + .command('install', 'Install an Electron application from GitHub') + .on('command:*', () => { + console.error(); + console.error(`Unknown command "${program.args.join(' ')}".`.red); + console.error('See --help for a list of available commands.'); + process.exit(1); + }); (async () => { let goodSystem; diff --git a/packages/api/cli/test/cli_spec.ts b/packages/api/cli/test/cli_spec.ts new file mode 100644 index 0000000000..b887ebedb8 --- /dev/null +++ b/packages/api/cli/test/cli_spec.ts @@ -0,0 +1,14 @@ +import chai, { expect } from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import path from 'path'; +import spawnPromise from 'cross-spawn-promise'; + +chai.use(chaiAsPromised); + +describe('cli', () => { + it('should fail on unknown subcommands', async () => { + const error = await expect(spawnPromise(path.resolve(__dirname, '../../../../node_modules/.bin/ts-node'), [path.resolve(__dirname, '../src/electron-forge.ts'), 'nonexistent'])).to.eventually.be.rejected; + expect(error.exitStatus).to.equal(1); + expect(error.stderr.toString()).to.match(/Unknown command "nonexistent"/); + }); +});