11'use strict' ;
22
3+ var pkg = require ( './package.json' ) ;
4+
35var child_process = require ( 'child_process' ) ;
46var fs = require ( 'fs' ) ;
57var path = require ( 'path' ) ;
@@ -11,6 +13,7 @@ var NwBuilder = require('nw-builder');
1113var gulp = require ( 'gulp' ) ;
1214var concat = require ( 'gulp-concat' ) ;
1315var runSequence = require ( 'run-sequence' ) ;
16+ var os = require ( 'os' ) ;
1417
1518var distDir = './dist/' ;
1619var appsDir = './apps/' ;
@@ -23,29 +26,48 @@ var releaseDir = './release/';
2326
2427// Get platform from commandline args
2528// #
26- // # gulp <task> --osx64 to execute task only for macOS platform (--osx64 , --win32 or --linux64 )
29+ // # gulp <task> [<platform>]+ Run only for platform(s) (with <platform> one of --linux64 , --osx64, or --win32 )
2730// #
28- function get_platform_from_args ( ) {
29- var supportedPlatforms = [ 'osx64 ' , 'win32 ' , 'linux64 ' ] ;
31+ function getPlatforms ( ) {
32+ var supportedPlatforms = [ 'linux64 ' , 'osx64 ' , 'win32 ' ] ;
3033 var platforms = [ ] ;
31- if ( process . argv . length > 3 ) {
32- for ( var i = 3 ; i < process . argv . length ; i ++ ) {
33- var arg = process . argv [ i ] . split ( '-' ) [ 2 ] ;
34- if ( supportedPlatforms . indexOf ( arg ) > - 1 ) {
35- platforms . push ( arg ) ;
36- }
37- else {
38- console . log ( 'Unknown platform: ' + arg ) ;
39- process . exit ( ) ;
40- }
34+ var regEx = / - - ( \w + ) / ;
35+ for ( var i = 3 ; i < process . argv . length ; i ++ ) {
36+ var arg = process . argv [ i ] . match ( regEx ) [ 1 ] ;
37+ if ( supportedPlatforms . indexOf ( arg ) > - 1 ) {
38+ platforms . push ( arg ) ;
39+ } else {
40+ console . log ( 'Unknown platform: ' + arg ) ;
41+ process . exit ( ) ;
4142 }
42- return platforms ;
4343 }
44- return supportedPlatforms ;
44+
45+ if ( platforms . length === 0 ) {
46+ switch ( os . platform ( ) ) {
47+ case 'darwin' :
48+ platforms . push ( 'osx64' ) ;
49+
50+ break ;
51+ case 'linux' :
52+ platforms . push ( 'linux64' ) ;
53+
54+ break ;
55+ case 'win32' :
56+ platform . push ( 'win32' ) ;
57+
58+ break ;
59+
60+ default :
61+ break ;
62+ }
63+ }
64+
65+ console . log ( 'Building for platform(s): ' + platforms + '.' ) ;
66+
67+ return platforms ;
4568}
4669
4770function get_release_filename ( platform , ext ) {
48- var pkg = require ( './package.json' ) ;
4971 return 'Betaflight-Configurator_' + platform + '_' + pkg . version + '.' + ext ;
5072}
5173
@@ -207,13 +229,13 @@ gulp.task('dist', ['clean-dist'], function () {
207229
208230// Create runable app directories in ./apps
209231gulp . task ( 'apps' , [ 'dist' , 'clean-apps' ] , function ( done ) {
210- var platform = get_platform_from_args ( ) ;
211- console . log ( 'Building app for platform(s): ' + platform ) ;
232+ var platforms = getPlatforms ( ) ;
233+ console . log ( 'Release build.' ) ;
212234
213235 var builder = new NwBuilder ( {
214236 files : './dist/**/*' ,
215237 buildDir : appsDir ,
216- platforms : platform ,
238+ platforms : platforms ,
217239 flavor : 'normal' ,
218240 macIcns : './images/bf_icon.icns' ,
219241 macPlist : { 'CFBundleDisplayName' : 'Betaflight Configurator' } ,
@@ -233,13 +255,13 @@ gulp.task('apps', ['dist', 'clean-apps'], function (done) {
233255
234256// Create debug app directories in ./debug
235257gulp . task ( 'debug' , [ 'dist' , 'clean-debug' ] , function ( done ) {
236- var platform = get_platform_from_args ( ) ;
237- console . log ( 'Building debug for platform: ' + platform ) ;
258+ var platforms = getPlatforms ( ) ;
259+ console . log ( 'Debug build.' ) ;
238260
239261 var builder = new NwBuilder ( {
240262 files : './dist/**/*' ,
241263 buildDir : debugDir ,
242- platforms : platform ,
264+ platforms : platforms ,
243265 flavor : 'sdk' ,
244266 macIcns : './images/bf_icon.icns' ,
245267 macPlist : { 'CFBundleDisplayName' : 'Betaflight Configurator' } ,
@@ -259,7 +281,6 @@ gulp.task('debug', ['dist', 'clean-debug'], function (done) {
259281
260282// Create distribution package for windows platform
261283function release_win32 ( ) {
262- var pkg = require ( './package.json' ) ;
263284 var src = path . join ( appsDir , pkg . name , 'win32' ) ;
264285 var output = fs . createWriteStream ( path . join ( releaseDir , get_release_filename ( 'win32' , 'zip' ) ) ) ;
265286 var archive = archiver ( 'zip' , {
@@ -274,7 +295,6 @@ function release_win32() {
274295
275296// Create distribution package for linux platform
276297function release_linux64 ( ) {
277- var pkg = require ( './package.json' ) ;
278298 var src = path . join ( appsDir , pkg . name , 'linux64' ) ;
279299 var output = fs . createWriteStream ( path . join ( releaseDir , get_release_filename ( 'linux64' , 'zip' ) ) ) ;
280300 var archive = archiver ( 'zip' , {
@@ -290,7 +310,6 @@ function release_linux64() {
290310// Create distribution package for macOS platform
291311function release_osx64 ( ) {
292312 var appdmg = require ( 'gulp-appdmg' ) ;
293- var pkg = require ( './package.json' ) ;
294313
295314 return gulp . src ( [ ] )
296315 . pipe ( appdmg ( {
@@ -318,30 +337,16 @@ gulp.task('release', ['apps', 'clean-release'], function () {
318337 }
319338 } ) ;
320339
321- var platform = get_platform_from_args ( ) ;
322- console . log ( 'Building release for platform: ' + platform ) ;
323-
324- if ( platform . length == 1 ) {
325- switch ( platform [ 0 ] ) {
326- case 'osx64' :
327- return release_osx64 ( ) ;
328- break ;
329- case 'linux64' :
330- return release_linux64 ( ) ;
331- break ;
332- case 'win32' :
333- return release_win32 ( ) ;
334- break ;
335- default :
336- console . log ( 'Unknown platform' ) ;
337- break ;
338- }
339- }
340- else {
341- release_osx64 ( ) ;
340+ var platforms = getPlatforms ( ) ;
341+ console . log ( 'Packing release.' ) ;
342+
343+ if ( platforms . indexOf ( 'linux64' ) !== - 1 ) {
342344 release_linux64 ( ) ;
345+ } else if ( platforms . indexOf ( 'osx64' ) !== - 1 ) {
346+ release_osx64 ( ) ;
347+ } else if ( platforms . indexOf ( 'win32' ) !== - 1 ) {
343348 release_win32 ( ) ;
344349 }
345350} ) ;
346351
347- gulp . task ( 'default' , [ 'apps ' ] ) ;
352+ gulp . task ( 'default' , [ 'debug ' ] ) ;
0 commit comments