feat: verify minimum required git version is installed
This commit is contained in:
		
							parent
							
								
									47c73eb672
								
							
						
					
					
						commit
						db1cc60c41
					
				| @ -3,11 +3,15 @@ | |||||||
| // Bad news: We have to write plain ES5 in this file
 | // Bad news: We have to write plain ES5 in this file
 | ||||||
| // Good news: It's the only file of the entire project
 | // Good news: It's the only file of the entire project
 | ||||||
| 
 | 
 | ||||||
| /* eslint-disable no-var */ | /* eslint-disable no-var, promise/prefer-await-to-then, prefer-destructuring */ | ||||||
| 
 | 
 | ||||||
| var semver = require('semver'); | var semver = require('semver'); | ||||||
|  | var execa = require('execa'); | ||||||
|  | var findVersions = require('find-versions'); | ||||||
| var pkg = require('../package.json'); | var pkg = require('../package.json'); | ||||||
| 
 | 
 | ||||||
|  | var MIN_GIT_VERSION = '2.0.0'; | ||||||
|  | 
 | ||||||
| if (!semver.satisfies(process.version, pkg.engines.node)) { | if (!semver.satisfies(process.version, pkg.engines.node)) { | ||||||
|   console.error( |   console.error( | ||||||
|     `[semantic-release]: node version ${pkg.engines.node} is required. Found ${process.version}.
 |     `[semantic-release]: node version ${pkg.engines.node} is required. Found ${process.version}.
 | ||||||
| @ -17,6 +21,21 @@ See https://github.com/semantic-release/semantic-release/blob/caribou/docs/suppo | |||||||
|   process.exit(1); |   process.exit(1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | execa | ||||||
|  |   .stdout('git', ['--version']) | ||||||
|  |   .then(stdout => { | ||||||
|  |     var gitVersion = findVersions(stdout)[0]; | ||||||
|  |     if (semver.lt(gitVersion, MIN_GIT_VERSION)) { | ||||||
|  |       console.error(`[semantic-release]: Git version ${MIN_GIT_VERSION} is required. Found ${gitVersion}.`); | ||||||
|  |       process.exit(1); | ||||||
|  |     } | ||||||
|  |   }) | ||||||
|  |   .catch(err => { | ||||||
|  |     console.error(`[semantic-release]: Git version ${MIN_GIT_VERSION} is required. No git binary found.`); | ||||||
|  |     console.error(err); | ||||||
|  |     process.exit(1); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
| // Node 8+ from this point on
 | // Node 8+ from this point on
 | ||||||
| require('../cli')().catch(() => { | require('../cli')().catch(() => { | ||||||
|   process.exitCode = 1; |   process.exitCode = 1; | ||||||
|  | |||||||
| @ -30,6 +30,7 @@ | |||||||
|     "debug": "^3.1.0", |     "debug": "^3.1.0", | ||||||
|     "env-ci": "^2.0.0", |     "env-ci": "^2.0.0", | ||||||
|     "execa": "^0.10.0", |     "execa": "^0.10.0", | ||||||
|  |     "find-versions": "^2.0.0", | ||||||
|     "get-stream": "^3.0.0", |     "get-stream": "^3.0.0", | ||||||
|     "git-log-parser": "^1.2.0", |     "git-log-parser": "^1.2.0", | ||||||
|     "git-url-parse": "^9.0.0", |     "git-url-parse": "^9.0.0", | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user