fix: allow boolean option to be set in config file
This commit is contained in:
		
							parent
							
								
									4d0490122c
								
							
						
					
					
						commit
						857d4180e9
					
				
							
								
								
									
										17
									
								
								cli.js
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								cli.js
									
									
									
									
									
								
							| @ -20,7 +20,7 @@ Usage: | |||||||
|     .option('r', {alias: 'repository-url', describe: 'Git repository URL', type: 'string', group: 'Options'}) |     .option('r', {alias: 'repository-url', describe: 'Git repository URL', type: 'string', group: 'Options'}) | ||||||
|     .option('t', {alias: 'tag-format', describe: 'Git tag format', type: 'string', group: 'Options'}) |     .option('t', {alias: 'tag-format', describe: 'Git tag format', type: 'string', group: 'Options'}) | ||||||
|     .option('e', {alias: 'extends', describe: 'Shareable configurations', ...stringList, group: 'Options'}) |     .option('e', {alias: 'extends', describe: 'Shareable configurations', ...stringList, group: 'Options'}) | ||||||
|     .option('ci', {describe: 'Toggle CI verifications', default: true, type: 'boolean', group: 'Options'}) |     .option('ci', {describe: 'Toggle CI verifications', default: undefined, type: 'boolean', group: 'Options'}) | ||||||
|     .option('verify-conditions', {...stringList, group: 'Plugins'}) |     .option('verify-conditions', {...stringList, group: 'Plugins'}) | ||||||
|     .option('analyze-commits', {type: 'string', group: 'Plugins'}) |     .option('analyze-commits', {type: 'string', group: 'Plugins'}) | ||||||
|     .option('verify-release', {...stringList, group: 'Plugins'}) |     .option('verify-release', {...stringList, group: 'Plugins'}) | ||||||
| @ -28,15 +28,17 @@ Usage: | |||||||
|     .option('publish', {...stringList, group: 'Plugins'}) |     .option('publish', {...stringList, group: 'Plugins'}) | ||||||
|     .option('success', {...stringList, group: 'Plugins'}) |     .option('success', {...stringList, group: 'Plugins'}) | ||||||
|     .option('fail', {...stringList, group: 'Plugins'}) |     .option('fail', {...stringList, group: 'Plugins'}) | ||||||
|     .option('debug', {describe: 'Output debugging information', default: false, type: 'boolean', group: 'Options'}) |     .option('debug', {describe: 'Output debugging information', default: undefined, type: 'boolean', group: 'Options'}) | ||||||
|     .option('d', {alias: 'dry-run', describe: 'Skip publishing', default: false, type: 'boolean', group: 'Options'}) |     .option('d', {alias: 'dry-run', describe: 'Skip publishing', default: undefined, type: 'boolean', group: 'Options'}) | ||||||
|     .option('h', {alias: 'help', group: 'Options'}) |     .option('h', {alias: 'help', default: undefined, group: 'Options'}) | ||||||
|     .option('v', {alias: 'version', group: 'Options'}) |     .option('v', {alias: 'version', default: undefined, group: 'Options'}) | ||||||
|     .strict(false) |     .strict(false) | ||||||
|     .exitProcess(false); |     .exitProcess(false); | ||||||
| 
 | 
 | ||||||
|   try { |   try { | ||||||
|     const {help, version, ...opts} = cli.argv; |     // Remove option with undefined values, as yargs sets non defined options as `undefined`
 | ||||||
|  |     const {help, version, ...opts} = pickBy(cli.argv, value => !isUndefined(value)); | ||||||
|  | 
 | ||||||
|     if (Boolean(help) || Boolean(version)) { |     if (Boolean(help) || Boolean(version)) { | ||||||
|       process.exitCode = 0; |       process.exitCode = 0; | ||||||
|       return; |       return; | ||||||
| @ -52,8 +54,7 @@ Usage: | |||||||
|       require('debug').enable('semantic-release:*'); |       require('debug').enable('semantic-release:*'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Remove option with undefined values, as yargs sets non defined options as `undefined`
 |     await require('.')(opts); | ||||||
|     await require('.')(pickBy(opts, value => !isUndefined(value))); |  | ||||||
|     process.exitCode = 0; |     process.exitCode = 0; | ||||||
|   } catch (err) { |   } catch (err) { | ||||||
|     if (err.name !== 'YError') { |     if (err.name !== 'YError') { | ||||||
|  | |||||||
| @ -153,6 +153,22 @@ test.serial('Pass empty Array to semantic-release API for list option set to "fa | |||||||
|   t.is(process.exitCode, 0); |   t.is(process.exitCode, 0); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | test.serial('Do not set properties in option for which arg is not in command line', async t => { | ||||||
|  |   const run = stub().resolves(true); | ||||||
|  |   const cli = proxyquire('../cli', {'.': run}); | ||||||
|  | 
 | ||||||
|  |   process.argv = ['', '', '-b', 'master']; | ||||||
|  | 
 | ||||||
|  |   await cli(); | ||||||
|  | 
 | ||||||
|  |   t.false(Object.prototype.hasOwnProperty.call(run.args[0][0], 'ci')); | ||||||
|  |   t.false(Object.prototype.hasOwnProperty.call(run.args[0][0], 'd')); | ||||||
|  |   t.false(Object.prototype.hasOwnProperty.call(run.args[0][0], 'dry-run')); | ||||||
|  |   t.false(Object.prototype.hasOwnProperty.call(run.args[0][0], 'debug')); | ||||||
|  |   t.false(Object.prototype.hasOwnProperty.call(run.args[0][0], 'r')); | ||||||
|  |   t.false(Object.prototype.hasOwnProperty.call(run.args[0][0], 't')); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| test.serial('Set "noCi" options to "true" with "--no-ci"', async t => { | test.serial('Set "noCi" options to "true" with "--no-ci"', async t => { | ||||||
|   const run = stub().resolves(true); |   const run = stub().resolves(true); | ||||||
|   const cli = proxyquire('../cli', {'.': run}); |   const cli = proxyquire('../cli', {'.': run}); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user