@ -161,18 +161,31 @@ function get_task_name(key) {
return 'build-' + key . replace ( /([A-Z])/g , function ( $1 ) { return "-" + $1 . toLowerCase ( ) ; } ) ;
return 'build-' + key . replace ( /([A-Z])/g , function ( $1 ) { return "-" + $1 . toLowerCase ( ) ; } ) ;
}
}
function getArguments ( ) {
return minimist ( process . argv . slice ( 2 ) ) ;
}
function getPlatforms ( ) {
function getPlatforms ( ) {
var defaultPlatforms = [ 'win32' , 'win64' , 'osx64' , 'linux32' , 'linux64' ] ;
const defaultPlatforms = [ 'win32' , 'win64' , 'osx64' , 'linux32' , 'linux64' ] ;
var argv = minimist ( process . argv . slice ( 2 ) ) ;
const platform = getArguments ( ) . platform ;
if ( argv . platform ) {
if ( platform) {
if ( defaultPlatforms . indexOf ( argv. platform) < 0 ) {
if ( defaultPlatforms . indexOf ( platform) < 0 ) {
throw "Invalid platform '" + argv . platform + "'. Available ones are: " + defaultPlatforms ;
throw new Error ( ` Invalid platform " ${ platform } ". Available ones are: ${ defaultPlatforms } ` )
}
}
return [ argv. platform] ;
return [ platform] ;
}
}
return defaultPlatforms ;
return defaultPlatforms ;
}
}
function execSync ( ) {
const cmd = arguments [ 0 ] ;
const args = Array . prototype . slice . call ( arguments , 1 ) ;
const result = child _process . spawnSync ( cmd , args , { stdio : 'inherit' } ) ;
if ( result . error ) {
throw result . error ;
}
}
// Define build tasks dynamically based on the sources
// Define build tasks dynamically based on the sources
// and output variables.
// and output variables.
var buildCssTasks = [ ] ;
var buildCssTasks = [ ] ;
@ -289,15 +302,28 @@ gulp.task('release-win64', function() {
return archive . finalize ( ) ;
return archive . finalize ( ) ;
} ) ;
} ) ;
gulp . task ( 'release-osx64' , function ( ) {
gulp . task ( 'release-osx64' , function ( done ) {
var pkg = require ( './package.json' ) ;
var pkg = require ( './package.json' ) ;
var src = path . join ( appsDir , pkg . name , 'osx64' , pkg . name + '.app' ) ;
var src = path . join ( appsDir , pkg . name , 'osx64' , pkg . name + '.app' ) ;
// Check if we want to sign the .app bundle
// Check if we want to sign the .app bundle
if ( process . env . CODESIGN _IDENTITY ) {
if ( getArguments ( ) . codesign ) {
var sign _cmd = 'codesign --verbose --force --sign "' + process . env . CODESIGN _IDENTITY + '" ' + src ;
// macapptool can be downloaded from
child _process . execSync ( sign _cmd ) ;
// https://github.com/fiam/macapptool
//
// Make sure the bundle is well formed
execSync ( 'macapptool' , '-v' , '1' , 'fix' , src ) ;
// Sign
const codesignArgs = [ 'macapptool' , '-v' , '1' , 'sign' ] ;
const codesignIdentity = getArguments ( ) [ 'codesign-identity' ] ;
if ( codesignIdentity ) {
codesignArgs . push ( '-i' , codesignIdentity ) ;
}
codesignArgs . push ( '-e' , 'entitlements.plist' ) ;
codesignArgs . push ( src )
execSync . apply ( this , codesignArgs ) ;
}
}
var output = fs . createWriteStream ( path . join ( appsDir , get _release _filename ( 'macOS' , 'zip' ) ) ) ;
const zipFilename = path . join ( appsDir , get _release _filename ( 'macOS' , 'zip' ) ) ;
var output = fs . createWriteStream ( zipFilename ) ;
var archive = archiver ( 'zip' , {
var archive = archiver ( 'zip' , {
zlib : { level : 9 }
zlib : { level : 9 }
} ) ;
} ) ;
@ -305,7 +331,23 @@ gulp.task('release-osx64', function() {
archive . on ( 'error' , function ( err ) { throw err ; } ) ;
archive . on ( 'error' , function ( err ) { throw err ; } ) ;
archive . pipe ( output ) ;
archive . pipe ( output ) ;
archive . directory ( src , 'INAV Configurator.app' ) ;
archive . directory ( src , 'INAV Configurator.app' ) ;
return archive . finalize ( ) ;
output . on ( 'close' , function ( ) {
if ( getArguments ( ) . notarize ) {
const notarizeArgs = [ 'macapptool' , '-v' , '1' , 'notarize' ] ;
const notarizationUsername = getArguments ( ) [ 'notarization-username' ] ;
if ( notarizationUsername ) {
notarizeArgs . push ( '-u' , notarizationUsername )
}
const notarizationPassword = getArguments ( ) [ 'notarization-password' ] ;
if ( notarizationPassword ) {
notarizeArgs . push ( '-p' , notarizationPassword )
}
notarizeArgs . push ( zipFilename )
execSync . apply ( this , notarizeArgs ) ;
}
done ( ) ;
} ) ;
archive . finalize ( ) ;
} ) ;
} ) ;
function releaseLinux ( bits ) {
function releaseLinux ( bits ) {