UNPKG

1.81 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3var exec = require('child_process').exec
4var spawn = require('cross-spawn')
5var npmRunPath = require('npm-run-path-compat')
6var log = require('npmlog')
7var version = require('./package').version
8var getTarget = require('node-abi').getTarget
9
10if (!process.env.CI) process.exit()
11
12log.heading = 'prebuild-ci'
13log.level = 'verbose'
14
15var token = process.env.PREBUILD_TOKEN
16if (!token) {
17 log.error('PREBUILD_TOKEN required')
18 process.exit(0)
19}
20
21function getPackageVersion (rev, cb) {
22 exec('git show ' + rev + ':package.json', {
23 encoding: 'utf8'
24 }, function (err, diff) {
25 cb(err, diff && JSON.parse(diff).version)
26 })
27}
28
29function prebuild (runtime, target, cb) {
30 log.info('build', runtime, 'abi', target)
31 var ps = spawn('prebuild', [
32 '-r', runtime,
33 '-t', target,
34 '-u', token,
35 '--verbose'
36 ], {
37 env: npmRunPath.env()
38 })
39 ps.stdout.pipe(process.stdout)
40 ps.stderr.pipe(process.stderr)
41 ps.on('exit', function (code) {
42 if (code) return cb(Error(), code)
43 cb()
44 })
45}
46
47log.info('begin', 'Prebuild-CI version', version)
48
49getPackageVersion('HEAD', function (err, head) {
50 if (err) throw err
51
52 getPackageVersion('HEAD~1', function (err, prev) {
53 if (err) throw err
54 if (head === prev) {
55 log.info('No version bump, exiting')
56 process.exit(0)
57 }
58
59 prebuild('node', process.versions.modules, function (err, code) {
60 if (err) process.exit(code)
61
62 try {
63 getTarget(process.versions.modules, 'electron')
64 } catch (err) {
65 log.info('No matching electron version, exiting')
66 process.exit(0)
67 }
68
69 prebuild('electron', process.versions.modules, function (err, code) {
70 if (err) process.exit(code)
71 log.info('All done!')
72 process.exit(code)
73 })
74 })
75 })
76})