Skip to content

Commit ef00314

Browse files
committed
JBDS-4193 Build Bundle Installer for macOS
1 parent 0828df7 commit ef00314

1 file changed

Lines changed: 74 additions & 70 deletions

File tree

gulp-tasks/dist-darwin.js

Lines changed: 74 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -10,95 +10,99 @@ const rename = require('gulp-rename');
1010
const runSequence = require('run-sequence');
1111
const pjson = require('../package.json');
1212
const fs = require('fs-extra');
13+
const common = require('./common.js');
14+
const del = require('del');
1315

14-
module.exports = function(gulp) {
16+
pjson.version = pjson.version.replace('GA','Alpha1');
17+
let productName = pjson.productName;
18+
let productVersion = pjson.version;
19+
20+
function buildInstaller(gulp, origin, destination, extraFiles) {
21+
const builder = require("electron-builder")
22+
const Platform = builder.Platform
23+
24+
// Promise is returned
25+
return builder.build({
26+
targets: Platform.MAC.createTarget(),
27+
devMetadata: {
28+
build: {
29+
appId: "com.redhat.devsuite.installer",
30+
category: "public.app-category.developer-tools",
31+
mac: {
32+
icon: "resources/devsuite.icns",
33+
target: "zip"
34+
},
35+
extraFiles
36+
},
37+
directories: {
38+
app : "transpiled"
39+
}
40+
}
41+
}).then(() => {
42+
return new Promise((resolve, reject)=>{
43+
gulp.src(origin)
44+
.pipe(rename(destination))
45+
.pipe(gulp.dest(`./`)).on('end', resolve).on('error', reject);
46+
});
47+
}).then(()=>{
48+
return new Promise((resolve, reject)=>{
49+
common.createSHA256File(destination, function(error) {
50+
if(error) {
51+
reject(error);
52+
} else {
53+
resolve();
54+
}
55+
});
56+
});
57+
});
58+
}
59+
60+
function darwinDist(gulp) {
1561

1662
// prefetch all the installer dependencies so we can package them up into the .exe
1763
gulp.task('prefetch', ['create-prefetch-cache-dir'], function() {
1864
return download.prefetch(reqs, 'yes', config.prefetchFolder);
1965
});
2066

2167
gulp.task('dist', function(){
22-
return runSequence('clean','dist-simple','dist-bundle');
68+
return runSequence('clean','dist-simple','dist-bundle','cleanup');
2369
});
2470

2571
gulp.task('update-package',['update-requirements'], function() {
26-
return Promise.resolve().then(()=> {
27-
pjson.version = pjson.version.replace('GA','Alpha1');
28-
}).then(()=>{
29-
fs.writeFile('./transpiled/package.json', JSON.stringify(pjson, null, 2));
30-
}).catch((err)=>{
31-
console.log(err);
72+
return new Promise((resolve,reject)=>{
73+
fs.writeFile('./transpiled/package.json', JSON.stringify(pjson, null, 2), function(error) {
74+
if(error) {
75+
reject(error);
76+
} else {
77+
resolve();
78+
}
79+
});
3280
});
3381
});
3482

3583
gulp.task('dist-bundle', ['prefetch','update-package'], function() {
36-
const builder = require("electron-builder")
37-
const Platform = builder.Platform
38-
39-
// Promise is returned
40-
return builder.build({
41-
targets: Platform.MAC.createTarget(),
42-
devMetadata: {
43-
build: {
44-
appId: "com.redhat.devsuite.installer",
45-
category: "public.app-category.developer-tools",
46-
mac: {
47-
icon: "resources/devsuite.icns",
48-
target: "zip"
49-
},
50-
extraFiles: [{
51-
"from": "requirements-cache",
52-
"to": ".",
53-
"filter": ["*"]
54-
}]
55-
},
56-
directories: {
57-
app : "transpiled"
58-
},
59-
60-
}
61-
}).then(() => {
62-
let pn =pjson.productName;
63-
let pv =pjson.version;
64-
return gulp.src(`dist/mac/${pn}-${pv}-mac.zip`)
65-
.pipe(rename(`devsuite-${pv}-bundle-installer-mac.zip`))
66-
.pipe(gulp.dest(`dist/`));
67-
}).catch((error) => {
68-
// handle error
69-
});
84+
return buildInstaller(gulp,
85+
`dist/mac/${productName}-${productVersion}-mac.zip`,
86+
`dist/devsuite-${productVersion}-bundle-installer-mac.zip`,
87+
[{
88+
"from": "requirements-cache",
89+
"to": ".",
90+
"filter": ["*"]
91+
}]);
7092
});
7193

7294
gulp.task('dist-simple', ['update-package'], function() {
73-
const builder = require("electron-builder")
74-
const Platform = builder.Platform
75-
76-
// Promise is returned
77-
return builder.build({
78-
targets: Platform.MAC.createTarget(),
79-
devMetadata: {
80-
build: {
81-
appId: "com.redhat.devsuite.installer",
82-
category: "public.app-category.developer-tools",
83-
mac: {
84-
icon: "resources/devsuite.icns",
85-
target: "zip"
86-
}
87-
},
88-
directories: {
89-
app : "transpiled"
90-
},
91-
92-
}
93-
}).then(() => {
94-
let pn =pjson.productName;
95-
let pv =pjson.version;
96-
return gulp.src(`dist/mac/${pn}-${pv}-mac.zip`)
97-
.pipe(rename(`devsuite-${pv}-installer-mac.zip`))
98-
.pipe(gulp.dest(`dist/`));
99-
}).catch((error) => {
95+
return buildInstaller(gulp,
96+
`dist/mac/${productName}-${productVersion}-mac.zip`,
97+
`dist/devsuite-${productVersion}-installer-mac.zip`
98+
);
99+
});
100100

101-
});
101+
gulp.task('cleanup', function(cb) {
102+
return del(['dist/mac'],
103+
{ force: false });
102104
});
103105

104106
}
107+
108+
module.exports = darwinDist;

0 commit comments

Comments
 (0)