module.exports = function(grunt) { // Project Configuration grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), release: { options: { bump: true, file: 'package.json', add: true, commit: true, tag: true, push: true, pushTags: true, npm: false, npmtag: true, tagName: 'v<%= version %>', commitMessage: 'New release v<%= version %>', tagMessage: 'Version <%= version %>', github: { repo: 'bitpay/copay', usernameVar: 'GITHUB_USERNAME', //ENVIRONMENT VARIABLE that contains Github username passwordVar: 'GITHUB_PASSWORD' //ENVIRONMENT VARIABLE that contains Github password } } }, exec: { version: { command: 'node ./util/version.js' }, clear: { command: 'rm -Rf bower_components node_modules' } }, 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...'); }, }, readme: { files: ['README.md'], tasks: ['markdown'] }, css: { files: ['src/css/*.css'], tasks: ['concat:css'] }, 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'] } }, markdown: { all: { files: [{ expand: true, src: 'README.md', dest: './doc', ext: '.html' }] } }, concat: { options: { sourceMap: false, sourceMapStyle: 'link' // embed, link, inline }, angular: { src: [ 'bower_components/fastclick/lib/fastclick.js', 'bower_components/qrcode-generator/js/qrcode.js', 'bower_components/qrcode-decoder-js/lib/qrcode-decoder.js', 'bower_components/moment/min/moment-with-locales.js', 'bower_components/angular/angular.js', 'bower_components/angular-ui-router/release/angular-ui-router.js', 'bower_components/angular-local-storage/dist/angular-local-storage.js', 'bower_components/angular-foundation/mm-foundation.js', 'bower_components/angular-foundation/mm-foundation-tpls.js', 'bower_components/angular-animate/angular-animate.js', 'bower_components/angular-moment/angular-moment.js', 'bower_components/ng-lodash/build/ng-lodash.js', 'bower_components/angular-qrcode/qrcode.js', 'bower_components/angular-gettext/dist/angular-gettext.js', 'bower_components/angular-touch/angular-touch.js', 'bower_components/angular-bitcore-wallet-client/angular-bitcore-wallet-client.js', 'bower_components/angular-ui-switch/angular-ui-switch.js' ], dest: 'public/lib/angular.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/version.js', 'src/js/init.js' ], dest: 'public/js/copay.js' }, css: { src: ['src/css/*.css'], dest: 'public/css/copay.css' }, foundation: { src: [ 'bower_components/angular/angular-csp.css', 'bower_components/foundation/css/foundation.css', 'bower_components/animate.css/animate.css', 'bower_components/angular-ui-switch/angular-ui-switch.css' ], dest: 'public/css/foundation.css', } }, cssmin: { copay: { files: { 'public/css/copay.css': ['src/css/*.css'], } }, foundation: { files: { 'public/css/foundation.css': [ 'bower_components/angular/angular-csp.css', 'bower_components/foundation/css/foundation.css', 'bower_components/animate.css/animate.css' ] } } }, uglify: { options: { mangle: false }, prod: { files: { 'public/js/copay.js': ['public/js/copay.js'], 'public/lib/angular.js': ['public/lib/angular.js'] } } }, nggettext_extract: { pot: { files: { 'po/template.pot': ['public/index.html', 'public/views/*.html', 'public/views/**/*.html'] } }, }, nggettext_compile: { all: { options: { module: 'copayApp' }, files: { 'src/js/translations.js': ['po/*.po'] } }, }, copy: { icons: { expand: true, flatten: true, src: 'bower_components/foundation-icon-fonts/foundation-icons.*', dest: 'public/icons/' } }, karma: { unit: { configFile: 'test/karma.conf.js' }, prod: { configFile: 'test/karma.conf.js', singleRun: true } }, coveralls: { options: { debug: false, coverageDir: 'coverage/report-lcov', dryRun: true, force: true, recursive: false } } }); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-angular-gettext'); grunt.loadNpmTasks('grunt-markdown'); grunt.loadNpmTasks('grunt-release'); grunt.loadNpmTasks('grunt-exec'); grunt.loadNpmTasks('grunt-karma'); grunt.loadNpmTasks('grunt-karma-coveralls'); grunt.registerTask('default', [ 'nggettext_compile', 'exec:version', 'concat', 'copy' ]); grunt.registerTask('prod', [ 'default', 'uglify' ]); grunt.registerTask('translate', ['nggettext_extract']); grunt.registerTask('test', ['karma:unit']); grunt.registerTask('test-coveralls', ['karma:prod', 'coveralls']); };