mirror of https://github.com/BTCPrivate/copay.git
277 lines
9.2 KiB
JavaScript
277 lines
9.2 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = function(grunt) {
|
|
|
|
require('load-grunt-tasks')(grunt);
|
|
|
|
// Project Configuration
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
exec: {
|
|
appConfig: {
|
|
command: 'node ./util/buildAppConfig.js'
|
|
},
|
|
externalServices: {
|
|
command: 'node ./util/buildExternalServices.js'
|
|
},
|
|
clean: {
|
|
command: 'rm -Rf bower_components node_modules'
|
|
},
|
|
cordovaclean: {
|
|
command: 'make -C cordova clean'
|
|
},
|
|
macos: {
|
|
command: 'sh webkitbuilds/build-macos.sh sign'
|
|
},
|
|
coveralls: {
|
|
command: 'cat coverage/report-lcov/lcov.info |./node_modules/coveralls/bin/coveralls.js'
|
|
},
|
|
chrome: {
|
|
command: 'make -C chrome-app '
|
|
},
|
|
wpinit: {
|
|
command: 'make -C cordova wp-init',
|
|
},
|
|
wpcopy: {
|
|
command: 'make -C cordova wp-copy',
|
|
},
|
|
iosdebug: {
|
|
command: 'npm run build:ios',
|
|
},
|
|
ios: {
|
|
command: 'npm run build:ios-release',
|
|
},
|
|
xcode: {
|
|
command: 'npm run open:ios',
|
|
},
|
|
androiddebug: {
|
|
command: 'npm run build:android',
|
|
},
|
|
android: {
|
|
command: 'npm run build:android-release',
|
|
},
|
|
androidrun: {
|
|
command: 'npm run run:android && npm run log:android',
|
|
},
|
|
androidbuild: {
|
|
command: 'cd cordova/project && cordova build android --release',
|
|
},
|
|
androidsign: {
|
|
command: 'rm -f cordova/project/platforms/android/build/outputs/apk/android-release-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../copay.keystore -signedjar cordova/project/platforms/android/build/outputs/apk/android-release-signed.apk cordova/project/platforms/android/build/outputs/apk/android-release-unsigned.apk copay_play && ../android-sdk-macosx/build-tools/21.1.1/zipalign -v 4 cordova/project/platforms/android/build/outputs/apk/android-release-signed.apk cordova/project/platforms/android/build/outputs/apk/android-release-signed-aligned.apk ',
|
|
stdin: true,
|
|
},
|
|
desktopsign: {
|
|
cmd: 'gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-linux.zip.sig --detach-sig webkitbuilds/<%= pkg.title %>-linux.zip ; gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>.exe.sig --detach-sig webkitbuilds/<%= pkg.title %>.exe'
|
|
},
|
|
desktopverify: {
|
|
cmd: 'gpg --verify webkitbuilds/<%= pkg.title %>-linux.zip.sig webkitbuilds/<%= pkg.title %>-linux.zip; gpg --verify webkitbuilds/<%= pkg.title %>.exe.sig webkitbuilds/<%= pkg.title %>.exe'
|
|
},
|
|
osxsign: {
|
|
cmd: 'gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>.dmg.sig --detach-sig webkitbuilds/<%= pkg.title %>.dmg'
|
|
},
|
|
},
|
|
watch: {
|
|
options: {
|
|
dateFormat: function(time) {
|
|
grunt.log.writeln('The watch finished in ' + time + 'ms at ' + (new Date()).toString());
|
|
grunt.log.writeln('Waiting for more changes...');
|
|
},
|
|
},
|
|
sass: {
|
|
files: ['src/sass/**/**/*.scss'],
|
|
tasks: ['sass']
|
|
},
|
|
main: {
|
|
files: [
|
|
'src/js/init.js',
|
|
'src/js/app.js',
|
|
'src/js/directives/*.js',
|
|
'src/js/filters/*.js',
|
|
'src/js/routes.js',
|
|
'src/js/services/*.js',
|
|
'src/js/models/*.js',
|
|
'src/js/controllers/**/*.js'
|
|
],
|
|
tasks: ['concat:js']
|
|
}
|
|
},
|
|
sass: {
|
|
dist: {
|
|
options: {
|
|
style: 'compact',
|
|
sourcemap: 'none'
|
|
},
|
|
files: [{
|
|
expand: true,
|
|
flatten: true,
|
|
src: ['src/sass/main.scss'],
|
|
dest: 'www/css/',
|
|
ext: '.css'
|
|
}]
|
|
}
|
|
},
|
|
concat: {
|
|
options: {
|
|
sourceMap: false,
|
|
sourceMapStyle: 'link' // embed, link, inline
|
|
},
|
|
angular: {
|
|
src: [
|
|
'bower_components/qrcode-generator/js/qrcode.js',
|
|
'bower_components/qrcode-generator/js/qrcode_UTF8.js',
|
|
'bower_components/moment/min/moment-with-locales.js',
|
|
'bower_components/angular-moment/angular-moment.js',
|
|
'bower_components/ng-lodash/build/ng-lodash.js',
|
|
'bower_components/angular-qrcode/angular-qrcode.js',
|
|
'bower_components/angular-gettext/dist/angular-gettext.js',
|
|
'bower_components/ng-csv/build/ng-csv.js',
|
|
'bower_components/ionic-toast/dist/ionic-toast.bundle.min.js',
|
|
'bower_components/angular-clipboard/angular-clipboard.js',
|
|
'bower_components/angular-md5/angular-md5.js',
|
|
'bower_components/angular-mocks/angular-mocks.js',
|
|
'bower_components/ngtouch/src/ngTouch.js',
|
|
'angular-bitauth/angular-bitauth.js',
|
|
'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js'
|
|
],
|
|
dest: 'www/lib/angular-components.js'
|
|
},
|
|
js: {
|
|
src: [
|
|
'src/js/app.js',
|
|
'src/js/routes.js',
|
|
'src/js/directives/*.js',
|
|
'src/js/filters/*.js',
|
|
'src/js/models/*.js',
|
|
'src/js/services/*.js',
|
|
'src/js/controllers/**/*.js',
|
|
'src/js/translations.js',
|
|
'src/js/appConfig.js',
|
|
'src/js/externalServices.js',
|
|
'src/js/init.js',
|
|
'src/js/trezor-url.js',
|
|
'bower_components/trezor-connect/connect.js',
|
|
'node_modules/bezier-easing/dist/bezier-easing.min.js',
|
|
'node_modules/cordova-plugin-qrscanner/dist/cordova-plugin-qrscanner-lib.min.js'
|
|
],
|
|
dest: 'www/js/app.js'
|
|
}
|
|
},
|
|
uglify: {
|
|
options: {
|
|
mangle: false
|
|
},
|
|
prod: {
|
|
files: {
|
|
'www/js/app.js': ['www/js/app.js'],
|
|
'www/lib/angular-components.js': ['www/lib/angular-components.js']
|
|
}
|
|
}
|
|
},
|
|
nggettext_extract: {
|
|
pot: {
|
|
files: {
|
|
'i18n/po/template.pot': [
|
|
'www/index.html',
|
|
'www/views/**/*.html',
|
|
'src/js/routes.js',
|
|
'src/js/services/*.js',
|
|
'src/js/controllers/**/*.js'
|
|
]
|
|
}
|
|
},
|
|
},
|
|
nggettext_compile: {
|
|
all: {
|
|
options: {
|
|
module: 'copayApp'
|
|
},
|
|
files: {
|
|
'src/js/translations.js': ['i18n/po/*.po']
|
|
}
|
|
},
|
|
},
|
|
copy: {
|
|
ionic_fonts: {
|
|
expand: true,
|
|
flatten: true,
|
|
src: 'bower_components/ionic/release/fonts/ionicons.*',
|
|
dest: 'www/fonts/'
|
|
},
|
|
ionic_js: {
|
|
expand: true,
|
|
flatten: true,
|
|
src: 'bower_components/ionic/release/js/ionic.bundle.min.js',
|
|
dest: 'www/lib/'
|
|
},
|
|
linux: {
|
|
files: [{
|
|
expand: true,
|
|
cwd: 'webkitbuilds/',
|
|
src: ['.desktop', '../www/img/app/favicon.ico', '../resources/<%= pkg.name %>/linux/512x512.png'],
|
|
dest: 'webkitbuilds/<%= pkg.title %>/linux64/',
|
|
flatten: true,
|
|
filter: 'isFile'
|
|
}],
|
|
}
|
|
},
|
|
nwjs: {
|
|
options: {
|
|
appName: '<%= pkg.title %>',
|
|
platforms: ['win64', 'osx64', 'linux64'],
|
|
buildDir: './webkitbuilds',
|
|
version: '0.19.5',
|
|
macIcns: './resources/<%= pkg.name %>/mac/app.icns',
|
|
exeIco: './www/img/app/logo.ico',
|
|
macPlist: {
|
|
'CFBundleURLTypes': [
|
|
{
|
|
'CFBundleURLName': 'URI Handler',
|
|
'CFBundleURLSchemes': ['bitcoin', '<%= pkg.name %>']
|
|
}
|
|
]
|
|
}
|
|
},
|
|
src: ['./package.json', './www/**/*']
|
|
},
|
|
compress: {
|
|
linux: {
|
|
options: {
|
|
archive: './webkitbuilds/<%= pkg.title %>-linux.zip'
|
|
},
|
|
expand: true,
|
|
cwd: './webkitbuilds/<%= pkg.title %>/linux64/',
|
|
src: ['**/*'],
|
|
dest: '<%= pkg.title %>-linux/'
|
|
}
|
|
},
|
|
browserify: {
|
|
dist: {
|
|
files: {
|
|
'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js': ['angular-bitcore-wallet-client/index.js'],
|
|
'angular-bitauth/angular-bitauth.js': ['angular-bitauth/index.js']
|
|
},
|
|
}
|
|
}
|
|
});
|
|
|
|
grunt.registerTask('default', ['nggettext_compile', 'exec:appConfig', 'exec:externalServices', 'browserify', 'sass', 'concat', 'copy:ionic_fonts', 'copy:ionic_js']);
|
|
grunt.registerTask('prod', ['default', 'uglify']);
|
|
grunt.registerTask('translate', ['nggettext_extract']);
|
|
grunt.registerTask('desktop', ['prod', 'nwjs', 'copy:linux', 'compress:linux']);
|
|
grunt.registerTask('osx', ['prod', 'nwjs', 'exec:macos', 'exec:osxsign']);
|
|
grunt.registerTask('osx-debug', ['default', 'nwjs']);
|
|
grunt.registerTask('chrome', ['exec:chrome']);
|
|
grunt.registerTask('wp', ['prod', 'exec:wp']);
|
|
grunt.registerTask('wp-copy', ['default', 'exec:wpcopy']);
|
|
grunt.registerTask('wp-init', ['default', 'exec:wpinit']);
|
|
grunt.registerTask('ios', ['exec:ios']);
|
|
grunt.registerTask('ios-debug', ['exec:iosdebug']);
|
|
grunt.registerTask('ios-run', ['exec:xcode']);
|
|
grunt.registerTask('cordovaclean', ['exec:cordovaclean']);
|
|
grunt.registerTask('android-debug', ['exec:androiddebug', 'exec:androidrun']);
|
|
grunt.registerTask('android', ['exec:android']);
|
|
grunt.registerTask('android-release', ['prod', 'exec:android', 'exec:androidsign']);
|
|
grunt.registerTask('desktopsign', ['exec:desktopsign', 'exec:desktopverify']);
|
|
|
|
};
|