UNPKG

1.48 kBJavaScriptView Raw
1#!/usr/bin/env node
2'use strict';
3
4const infer = require('./');
5const spawn = require('cross-spawn-promise');
6const path = require('path');
7const logPromise = require('@quarterto/log-promise');
8
9const packagePath = path.resolve('package.json');
10const p = require(packagePath);
11
12if(process.env.npm_lifecycle_event && process.env.npm_lifecycle_event !== 'heroku-postbuild') {
13 console.log('⤼ not a Heroku automatic deploy, skipping version inference');
14 process.exit(0);
15} else if(!p.repository) {
16 console.log('⊶ expected a repository field in your package.json');
17 process.exit(1);
18} else if(typeof p.repository !== 'string' && !p.repository.url) {
19 console.log('⊶ invalid repository entry in package.json, no url:', p.repository);
20 process.exit(1);
21} else if(!p.repository.type === 'git') {
22 console.log('⊶ non-git repositories not supported');
23 process.exit(1);
24} else if(!process.env.SOURCE_VERSION) {
25 console.log('⁈ supposedly this is a Heroku automatic deploy but there\'s no SOURCE_VERSION. Here\'s your env:');
26 console.log(process.env);
27 process.exit(1);
28} else {
29 const repo = typeof p.repository === 'string' ? p.repository : p.repository.url;
30 logPromise(
31 version => `inferred version ${version}`,
32 err => err.stack
33 )(infer(repo.replace(/^git\+/i, ''), process.env.SOURCE_VERSION, p.name.replace('/', '-')).then(version => {
34 return spawn('npm', ['version', '--git-tag-version=false', version]).then(() => version);
35 })).catch(() => process.exit(1));
36}