@@ -10,95 +10,99 @@ const rename = require('gulp-rename');
1010const runSequence = require ( 'run-sequence' ) ;
1111const pjson = require ( '../package.json' ) ;
1212const 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