1
+ 'use strict' ;
2
+
3
+ var package_info = require ( './package.json' ) ;
4
+ var fs = require ( 'fs' ) ;
5
+
6
+
7
+ module . exports = function ( grunt ) {
8
+ // Project configuration.
9
+ var gruntConf = {
10
+ watch : {
11
+ options : {
12
+ nospawn : true
13
+ } ,
14
+ default : {
15
+ files : [ './**/*.coffee' ] ,
16
+ tasks : [ 'coffee' , 'browserify' ]
17
+ }
18
+ } ,
19
+ coffee : {
20
+ default : {
21
+ expand : true ,
22
+ cwd : 'coffee' ,
23
+ src : [ '**/*.coffee' ] ,
24
+ dest : 'js' ,
25
+ ext : '.js' ,
26
+ options : {
27
+ bare : true
28
+ }
29
+ }
30
+ } ,
31
+ concurrent : {
32
+ server : {
33
+ options : {
34
+ logConcurrentOutput : true
35
+ }
36
+ }
37
+ } ,
38
+ browserify : {
39
+ dist : {
40
+ files : {
41
+ './dist/oauth.js' : [ 'js/main.js' ]
42
+ } ,
43
+ options : {
44
+ transform : [
45
+ [
46
+ 'envify' , {
47
+ oauthd_url : 'https://oauth.io' ,
48
+ api_url : 'https://oauth.io/api' ,
49
+ sdk_version : "web-" + package_info . version
50
+ }
51
+ ]
52
+ ]
53
+ }
54
+ }
55
+ } ,
56
+ uglify : {
57
+ my_target : {
58
+ files : {
59
+ './dist/oauth.min.js' : [ 'dist/oauth.js' ]
60
+ }
61
+ }
62
+ } ,
63
+ jasmine_node : {
64
+
65
+ options : {
66
+ forceExit : true ,
67
+ match : '.' ,
68
+ matchall : false ,
69
+ extensions : 'js' ,
70
+ specNameMatcher : 'spec'
71
+ } ,
72
+ all : [ 'tests/unit/spec/' ]
73
+ } ,
74
+
75
+ taskDefault : [ 'coffee' , 'browserify' , 'uglify' , 'bower' ]
76
+ } ;
77
+
78
+ grunt . initConfig ( gruntConf ) ;
79
+
80
+ // These plugins provide necessary tasks.
81
+ grunt . loadNpmTasks ( 'grunt-contrib-watch' ) ;
82
+ grunt . loadNpmTasks ( 'grunt-contrib-coffee' ) ;
83
+ grunt . loadNpmTasks ( 'grunt-concurrent' ) ;
84
+ grunt . loadNpmTasks ( 'grunt-browserify' ) ;
85
+ grunt . loadNpmTasks ( 'grunt-contrib-uglify' ) ;
86
+ grunt . loadNpmTasks ( 'grunt-jasmine-node' ) ;
87
+
88
+ grunt . registerTask ( 'bower' , 'Creates an updated bower.json to the dist folder' , function ( ) {
89
+ var done = this . async ( ) ;
90
+ fs . readFile ( './templates/bower.json' , 'UTF-8' , function ( e , text ) {
91
+ if ( e ) {
92
+ console . err ( 'A problem occured while creating bower.json' ) ;
93
+ done ( ) ;
94
+ return ;
95
+ }
96
+ text = text . replace ( '{{sdk_version}}' , package_info . version ) ;
97
+ text = text . replace ( '{{description}}' , package_info . description ) ;
98
+ text = text . replace ( '{{license}}' , package_info . license ) ;
99
+ fs . writeFile ( './dist/bower.json' , text , function ( e ) {
100
+ if ( e ) {
101
+ console . err ( 'A problem occured while creating bower.json' ) ;
102
+ done ( ) ;
103
+ return ;
104
+ }
105
+ console . log ( "Wrote bower.json file in app/sdk-js/dist/" ) ;
106
+ done ( ) ;
107
+ } ) ;
108
+ } ) ;
109
+ } ) ;
110
+
111
+ grunt . registerTask ( 'coverage' , 'Creates a tests coverage report' , function ( ) {
112
+ var exec = require ( 'child_process' ) . exec ;
113
+ var done = this . async ( ) ;
114
+ exec ( 'npm test' , function ( error , stdout , stderr ) {
115
+ console . log ( "Coverage report should be generated in ./coverage/lcov-report/index.html" ) ;
116
+ done ( ) ;
117
+ } ) ;
118
+ } ) ;
119
+
120
+ // Default task.
121
+ grunt . registerTask ( 'default' , gruntConf . taskDefault ) ;
122
+
123
+ } ;
0 commit comments