feat(cli): add verifyConditions hook
This commit is contained in:
		
							parent
							
								
									af15fb4c61
								
							
						
					
					
						commit
						13e2f5ce78
					
				| @ -15,6 +15,7 @@ | |||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@semantic-release/commit-analyzer": "^1.0.0", |     "@semantic-release/commit-analyzer": "^1.0.0", | ||||||
|  |     "@semantic-release/condition-travis": "^1.0.0", | ||||||
|     "@semantic-release/error": "^1.0.0", |     "@semantic-release/error": "^1.0.0", | ||||||
|     "@semantic-release/release-notes-generator": "^1.0.0", |     "@semantic-release/release-notes-generator": "^1.0.0", | ||||||
|     "lodash": "^3.9.3", |     "lodash": "^3.9.3", | ||||||
|  | |||||||
							
								
								
									
										91
									
								
								src/index.js
									
									
									
									
									
								
							
							
						
						
									
										91
									
								
								src/index.js
									
									
									
									
									
								
							| @ -31,6 +31,8 @@ npmconf.load({}, (err, conf) => { | |||||||
| 
 | 
 | ||||||
|   log.level = conf.get('loglevel') |   log.level = conf.get('loglevel') | ||||||
| 
 | 
 | ||||||
|  |   log.verbose(PREFIX, 'argv:', options) | ||||||
|  |   log.verbose(PREFIX, 'options:', pkg.release || 'no options') | ||||||
|   log.verbose(PREFIX, 'Verifying pkg, options and env.') |   log.verbose(PREFIX, 'Verifying pkg, options and env.') | ||||||
| 
 | 
 | ||||||
|   const errors = require('./lib/verify')(pkg, options, env) |   const errors = require('./lib/verify')(pkg, options, env) | ||||||
| @ -39,56 +41,65 @@ npmconf.load({}, (err, conf) => { | |||||||
| 
 | 
 | ||||||
|   if (!options.argv.cooked.length || options.argv.cooked[0] === 'pre') { |   if (!options.argv.cooked.length || options.argv.cooked[0] === 'pre') { | ||||||
|     log.verbose(PREFIX, 'Running pre-script.') |     log.verbose(PREFIX, 'Running pre-script.') | ||||||
|  |     log.verbose(PREFIX, 'Veriying conditions.') | ||||||
| 
 | 
 | ||||||
|     const registry = conf.get('registry') |     plugins.verifyConditions(pkg, options, env, (err) => { | ||||||
|     const nerfDart = require('./lib/nerf-dart')(registry) |       if (err) { | ||||||
|     let wroteNpmRc = false |         log[options.debug ? 'warn' : 'error'](PREFIX, err.message) | ||||||
|  |         if (!options.debug) process.exit(1) | ||||||
|  |       } | ||||||
| 
 | 
 | ||||||
|     if (env.NPM_TOKEN) { |       const registry = conf.get('registry') | ||||||
|       conf.set(`${nerfDart}:_authToken`, '${NPM_TOKEN}', 'project') |       const nerfDart = require('./lib/nerf-dart')(registry) | ||||||
|       wroteNpmRc = true |       let wroteNpmRc = false | ||||||
|     } else if (env.NPM_OLD_TOKEN && env.NPM_EMAIL) { |  | ||||||
|       // Using the old auth token format is not considered part of the public API
 |  | ||||||
|       // This might go away anytime (i.e. when we have a better testing strategy)
 |  | ||||||
|       conf.set('_auth', '${NPM_OLD_TOKEN}', 'project') |  | ||||||
|       conf.set('email', '${NPM_EMAIL}', 'project') |  | ||||||
|       wroteNpmRc = true |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     conf.save('project', (err) => { |       if (env.NPM_TOKEN) { | ||||||
|       if (err) return log.error(PREFIX, 'Failed to save npm config.', err) |         conf.set(`${nerfDart}:_authToken`, '${NPM_TOKEN}', 'project') | ||||||
|  |         wroteNpmRc = true | ||||||
|  |       } else if (env.NPM_OLD_TOKEN && env.NPM_EMAIL) { | ||||||
|  |         // Using the old auth token format is not considered part of the public API
 | ||||||
|  |         // This might go away anytime (i.e. once we have a better testing strategy)
 | ||||||
|  |         conf.set('_auth', '${NPM_OLD_TOKEN}', 'project') | ||||||
|  |         conf.set('email', '${NPM_EMAIL}', 'project') | ||||||
|  |         wroteNpmRc = true | ||||||
|  |       } | ||||||
| 
 | 
 | ||||||
|       if (wroteNpmRc) log.verbose(PREFIX, 'Wrote authToken to .npmrc.') |       conf.save('project', (err) => { | ||||||
|  |         if (err) return log.error(PREFIX, 'Failed to save npm config.', err) | ||||||
| 
 | 
 | ||||||
|       require('./pre')(pkg, { |         if (wroteNpmRc) log.verbose(PREFIX, 'Wrote authToken to .npmrc.') | ||||||
|         auth: { | 
 | ||||||
|           token: env.NPM_TOKEN |         require('./pre')(pkg, { | ||||||
|  |           auth: { | ||||||
|  |             token: env.NPM_TOKEN | ||||||
|  |           }, | ||||||
|  |           loglevel: log.level, | ||||||
|  |           registry: registry + (registry[registry.length - 1] !== '/' ? '/' : '') | ||||||
|         }, |         }, | ||||||
|         loglevel: log.level, |         plugins, | ||||||
|         registry: registry + (registry[registry.length - 1] !== '/' ? '/' : '') |         (err, release) => { | ||||||
|       }, |           if (err) { | ||||||
|       plugins, |             log.error(PREFIX, 'Failed to determine new version.') | ||||||
|       (err, release) => { |  | ||||||
|         if (err) { |  | ||||||
|           log.error(PREFIX, 'Failed to determine new version.') |  | ||||||
| 
 | 
 | ||||||
|           const args = [PREFIX, (err.code ? `${err.code} ` : '') + err.message] |             const args = [PREFIX, (err.code ? `${err.code} ` : '') + err.message] | ||||||
|           if (err.stack) args.push(err.stack) |             if (err.stack) args.push(err.stack) | ||||||
|           log.error(...args) |             log.error(...args) | ||||||
|           process.exit(1) |             process.exit(1) | ||||||
|         } |           } | ||||||
| 
 | 
 | ||||||
|         log.verbose(PREFIX, `Determined version ${release.version}.`, release) |           log.verbose(PREFIX, `Determined version ${release.version}.`) | ||||||
| 
 | 
 | ||||||
|         writeFileSync('./package.json', JSON.stringify(_.assign(pkg, { |           if (options.debug) { | ||||||
|           version: release.version |             log.error(PREFIX, `Determined version ${release.version}, but not publishing in debug mode.`, release) | ||||||
|         }), null, 2)) |             process.exit(1) | ||||||
|  |           } | ||||||
| 
 | 
 | ||||||
|         log.info(PREFIX, `Wrote version ${release.version} to package.json.`) |           writeFileSync('./package.json', JSON.stringify(_.assign(pkg, { | ||||||
|         if (options.debug) { |             version: release.version | ||||||
|           log.error(PREFIX, 'Not publishing in debug mode') |           }), null, 2)) | ||||||
|           process.exit(1) | 
 | ||||||
|         } |           log.verbose(PREFIX, `Wrote version ${release.version} to package.json.`) | ||||||
|  |         }) | ||||||
|       }) |       }) | ||||||
|     }) |     }) | ||||||
|   } else if (options.argv.cooked[0] === 'post') { |   } else if (options.argv.cooked[0] === 'post') { | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ let exports = module.exports = function (source) { | |||||||
|   return { |   return { | ||||||
|     analyzeCommits: exports.normalize(source.analyzeCommits, '@semantic-release/commit-analyzer'), |     analyzeCommits: exports.normalize(source.analyzeCommits, '@semantic-release/commit-analyzer'), | ||||||
|     generateNotes: exports.normalize(source.generateNotes, '@semantic-release/release-notes-generator'), |     generateNotes: exports.normalize(source.generateNotes, '@semantic-release/release-notes-generator'), | ||||||
|  |     verifyConditions: exports.normalize(source.verifyCondition, '@semantic-release/condition-travis'), | ||||||
|     verifyRelease: exports.normalize(source.verifyRelease, './plugin-noop') |     verifyRelease: exports.normalize(source.verifyRelease, './plugin-noop') | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user