From 5048d16e22d31d27f8a87b71b6f47fc10ef6df3b Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Tue, 9 Jun 2015 23:17:49 -0700 Subject: [PATCH] OS X zip --- Gruntfile.js | 30 ++++++++++++++++++++---------- package.json | 5 +++-- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index d9013a2d17..4dedaf9122 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -13,6 +13,7 @@ var BOOT2DOCKER_ISO_URL = 'https://github.com/boot2docker/boot2docker/releases/d module.exports = function (grunt) { require('load-grunt-tasks')(grunt); var target = grunt.option('target') || 'development'; + var beta = grunt.option('beta') || false; var env = process.env; env.NODE_ENV = target; @@ -35,16 +36,22 @@ module.exports = function (grunt) { }); }); + var APPNAME = beta ? 'Kitematic (Beta)' : 'Kitematic'; + var OSX_OUT = './dist/osx'; + var OSX_FILENAME = OSX_OUT + '/' + APPNAME + '.app'; + grunt.initConfig({ - IDENTITY: '"Developer ID Application: Docker Inc"', - OSX_OUT: './dist/osx', - OSX_FILENAME: path.join('<%= OSX_OUT %>', 'Kitematic.app'), + IDENTITY: 'Developer ID Application: Docker Inc', + APPNAME: APPNAME, + OSX_OUT: OSX_OUT, + OSX_FILENAME: OSX_FILENAME, + OSX_FILENAME_ESCAPED: OSX_FILENAME.replace(' ', '\\ ').replace('(','\\(').replace(')','\\)'), // electron electron: { windows: { options: { - name: 'Kitematic', + name: '<%= APPNAME %>', dir: 'build/', out: 'dist/', version: packagejson['electron-version'], @@ -55,7 +62,7 @@ module.exports = function (grunt) { }, osx: { options: { - name: 'Kitematic', + name: '<%= APPNAME %>', dir: 'build/', out: '<%= OSX_OUT %>', version: packagejson['electron-version'], @@ -211,11 +218,14 @@ module.exports = function (grunt) { failOnError: false, }, command: [ - 'codesign --deep -v -f -s <%= IDENTITY %> <%= OSX_FILENAME %>/Contents/Frameworks/*', - 'codesign -v -f -s <%= IDENTITY %> <%= OSX_FILENAME %>', - 'codesign -vvv --display <%= OSX_FILENAME %>', - 'codesign -v --verify <%= OSX_FILENAME %>', + 'codesign --deep -v -f -s "<%= IDENTITY %>" <%= OSX_FILENAME_ESCAPED %>/Contents/Frameworks/*', + 'codesign -v -f -s "<%= IDENTITY %>" <%= OSX_FILENAME_ESCAPED %>', + 'codesign -vvv --display <%= OSX_FILENAME_ESCAPED %>', + 'codesign -v --verify <%= OSX_FILENAME_ESCAPED %>', ].join(' && '), + }, + zip: { + command: 'ditto -c -k --sequesterRsrc --keepParent <%= OSX_FILENAME_ESCAPED %> <%= OSX_OUT %>/Kitematic-' + packagejson.version + '.zip', } }, @@ -252,7 +262,7 @@ module.exports = function (grunt) { if (process.platform === 'win32') { grunt.registerTask('release', ['clean:dist', 'clean:build', 'download-binary', 'babel', 'less', 'copy:dev', 'electron:windows', 'copy:windows', 'copy:osx']); } else { - grunt.registerTask('release', ['clean:dist', 'clean:build', 'download-binary', 'babel', 'less', 'copy:dev', 'electron:osx', 'copy:osx', 'shell:sign']); + grunt.registerTask('release', ['clean:dist', 'clean:build', 'download-binary', 'babel', 'less', 'copy:dev', 'electron:osx', 'copy:osx', 'shell:sign', 'shell:zip']); } process.on('SIGINT', function () { diff --git a/package.json b/package.json index 6cf571e0ed..a2a6aabdd5 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "start": "gulp", "test": "jest -c jest-unit.json", "integration": "jest -c jest-integration.json", - "release": "gulp release", - "release:beta": "gulp release --beta", + "release": "grunt release", + "release:beta": "grunt release --beta=true", "lint": "jsxhint src", "reset": "gulp reset" }, @@ -88,6 +88,7 @@ "minimist": "^1.1.1", "react-tools": "^0.13.1", "run-sequence": "^1.0.2", + "shell-escape": "^0.2.0", "source-map-support": "^0.2.10" } }