UNPKG

1.62 kBJavaScriptView Raw
1'use strict'
2
3var Promise = require('bluebird')
4var la = require('lazy-ass')
5var check = require('check-more-types')
6var exec = require('./exec')
7
8function saveIntoFile (options, id) {
9 if (check.unemptyString(options.file)) {
10 var write = require('fs').writeFileSync
11 var short = id.substr(0, 7)
12 var currentTime = new Date()
13 var data = {
14 id: id,
15 short: short,
16 savedAt: currentTime.toISOString()
17 }
18 var contents = JSON.stringify(data, null, 2) + '\n'
19 write(options.file, contents, 'utf8')
20 console.log(
21 'saved last commit %s (short %s) in file %s',
22 id,
23 short,
24 options.file
25 )
26 }
27 console.log('last commit:', id)
28}
29
30var env = process.env
31
32function getHerokuCommit () {
33 if (env.SOURCE_VERSION && check.unemptyString(env.SOURCE_VERSION)) {
34 return env.SOURCE_VERSION
35 }
36}
37
38function getCircleCiCommit () {
39 if (env.CIRCLE_SHA1 && check.unemptyString(env.CIRCLE_SHA1)) {
40 return env.CIRCLE_SHA1
41 }
42}
43
44function getGitCommit () {
45 var cmd = 'git log --format="%H" -n 1'
46 return exec(cmd)
47}
48
49function findCommit () {
50 var ciSha = getHerokuCommit() || getCircleCiCommit()
51 if (ciSha) {
52 return Promise.resolve(ciSha)
53 }
54 return getGitCommit()
55}
56
57function cleanOutput (str) {
58 la(check.unemptyString(str), 'expected commit id string', str)
59 return str.trim()
60}
61
62/*
63 Returns the last commit id
64*/
65function lastCommitId (options) {
66 options = options || {}
67 function saveWithOptions (id) {
68 saveIntoFile(options, id)
69 return id
70 }
71 return findCommit().then(cleanOutput).then(saveWithOptions)
72}
73
74module.exports = lastCommitId