123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- /*
- * Copyright 2018 Scytl Secure Electronic Voting SA
- *
- * All rights reserved
- *
- * See our extended copyright notice in *file 'Copyright.txt' which is part of this source code package
- */
- module.exports = function(grunt) {
- 'use strict';
- var config = {};
- config.pkg = grunt.file.readJSON('package.json');
- var xml = grunt.file.read('pom.xml').toString('UTF-8');
- var DOMParser = require('xmldom').DOMParser;
- var pom = new DOMParser().parseFromString(xml, 'text/xml');
- var versionElement = pom.documentElement.getElementsByTagName('version')[0];
- var version = versionElement.textContent;
- if (version.endsWith('SNAPSHOT')) {
- version += '.' + Date.now();
- }
- config.pkg.version = version;
- delete config.pkg.devDependencies;
- delete config.pkg.private;
- config.clean = {target: ['target']};
- config.compile = {
- config: ['Gruntfile.js', 'karma.conf.js', 'banner.js'],
- lib: ['lib/*.js'],
- spec: ['spec/*.js'],
- options: {jshintrc: true}
- };
- config.test = {
- options: {
- configFile: 'karma.conf.js',
- files: [
- 'node_modules/node-forge/dist/forge.min.js',
- 'node_modules/sjcl/sjcl.js',
- 'lib/cryptolib.js',
- 'lib/**/*.js',
- 'spec/cryptolib.spec.js',
- 'spec/proofs.service/proofs.service.spec.lib.js',
- ]
- },
- asymmetric: {
- files: [
- {src: ['spec/asymmetric*.spec.js'], served: true},
- ]
- },
- certificates: {
- files: [
- {src: ['spec/certificates*.spec.js'], served: true},
- ]
- },
- commons: {
- files: [
- {src: ['spec/commons*.spec.js'], served: true},
- ]
- },
- crypto: {
- files: [
- {src: ['spec/crypto*.spec.js'], served: true},
- ]
- },
- digitalenvelope: {
- files: [
- {src: ['spec/digitalenvelope*.spec.js'], served: true},
- ]
- },
- homomorphic: {
- files: [
- {src: ['spec/homomorphic*.spec.js'], served: true},
- ]
- },
- primitives: {
- files: [
- {src: ['spec/primitives*.spec.js'], served: true},
- ]
- },
- proofs: {
- files: [
- {src: ['spec/proofs.spec.js'], served: true},
- ]
- },
- proofs_service_exponentiation: {
- files: [
- {
- src: ['spec/proofs.service/proofs.service.exponentiation.spec.js'],
- served: true
- },
- ]
- },
- proofs_service_plaintext: {
- files: [
- {
- src: ['spec/proofs.service/proofs.service.plaintext.spec.js'],
- served: true
- },
- ]
- },
- proofs_service_plaintext_equality: {
- files: [
- {
- src:
- ['spec/proofs.service/proofs.service.plaintext_equality.spec.js'],
- served: true
- },
- ]
- },
- proofs_service_plaintext_exponent_equality: {
- files: [
- {
- src: [
- 'spec/proofs.service/proofs.service.plaintext_exponent_equality.spec.js'
- ],
- served: true
- },
- ]
- },
- proofs_service_schnorr: {
- files: [
- {
- src: ['spec/proofs.service/proofs.service.schnorr.spec.js'],
- served: true
- },
- ]
- },
- proofs_service_simple_plaintext_equality: {
- files: [
- {
- src: [
- 'spec/proofs.service/proofs.service.simple_plaintext_equality.spec.js'
- ],
- served: true
- },
- ]
- },
- proofs_service_or: {
- files: [
- {src: ['spec/proofs.service/proofs.service.or.spec.js'], served: true},
- ]
- },
- stores: {
- files: [
- {src: ['spec/stores*.spec.js'], served: true},
- ]
- },
- symmetric: {
- files: [
- {src: ['spec/symmetric*.spec.js'], served: true},
- ]
- }
- };
- var banner = grunt.file.read('banner.js').toString('UTF-8');
- config.concat = {
- all: {
- src: ['lib/cryptolib.js', 'lib/*.js'],
- dest: 'target/package/lib/<%= pkg.name %>.js'
- },
- options: {banner: banner}
- };
- config.uglify = {
- all: {
- files: {
- 'target/package/lib/<%= pkg.name %>.min.js':
- ['target/package/lib/<%= pkg.name %>.js']
- }
- },
- options: {banner: banner}
- };
- config.copy = {
- all: {
- files: [
- {src: '*.md', dest: 'target/package/'},
- {src: 'vendor/*.js', dest: 'target/package/'}
- ]
- }
- };
- config.run = {
- pack: {exec: 'npm pack package/', options: {cwd: 'target'}},
- publish: {exec: 'npm publish --dd <%= pkg.name %>-<%= pkg.version %>.tgz', options: {cwd: 'target'}},
- format: {
- exec:
- 'node node_modules/clang-format -style=Google -i lib/*.js spec/*.js spec/**/*.js Gruntfile.js karma.conf.js'
- }
- };
- grunt.initConfig(config);
- grunt.loadNpmTasks('grunt-contrib-clean');
- grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-karma');
- grunt.loadNpmTasks('grunt-contrib-concat');
- grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-copy');
- grunt.loadNpmTasks('grunt-run');
- grunt.renameTask('jshint', 'compile');
- grunt.renameTask('karma', 'test');
- grunt.registerTask('compose', function() {
- var json = JSON.stringify(config.pkg, null, 4);
- grunt.file.write('target/package/package.json', json);
- });
- grunt.registerTask(
- 'package', ['compose', 'concat', 'uglify', 'copy', 'run:pack']);
- grunt.registerTask('deploy', ['package', 'run:publish']);
- grunt.registerTask('default', ['clean', 'compile', 'test', 'package']);
- grunt.registerTask('format', ['run:format']);
- };
|