summaryrefslogtreecommitdiffstats
path: root/js/Gruntfile.coffee
blob: b5e65ccffb56ac20ffa7b28cdd5737b247f4f191 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
###

ownCloud - News

@author Bernhard Posselt
@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
License as published by the Free Software Foundation; either
version 3 of the License, or any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU AFFERO GENERAL PUBLIC LICENSE for more details.

You should have received a copy of the GNU Affero General Public
License along with this library.  If not, see <http://www.gnu.org/licenses/>.

###


module.exports = (grunt) ->

	grunt.loadNpmTasks('grunt-contrib-concat')
	grunt.loadNpmTasks('grunt-contrib-watch')
	grunt.loadNpmTasks('grunt-coffeelint')
	grunt.loadNpmTasks('grunt-wrap');
	grunt.loadNpmTasks('grunt-phpunit');
	grunt.loadNpmTasks('grunt-karma');

	grunt.initConfig

		meta:
			pkg: grunt.file.readJSON('package.json')
			version: '<%= meta.pkg.version %>'
			banner: '/**\n' +
				' * <%= meta.pkg.description %> - v<%= meta.version %>\n' +
				' *\n' +
				' * Copyright (c) <%= grunt.template.today("yyyy") %> - ' +
				'<%= meta.pkg.author.name %> <<%= meta.pkg.author.email %>>\n' +
				' *\n' +
				' * This file is licensed under the Affero General Public License version 3 or later.\n' +
				' * See the COPYING file\n' +
				' *\n' +
				' */\n\n'
			build: 'build/'
			production: 'public/'

		concat:
			app:
				options:
					banner: '<%= meta.banner %>\n'
					stripBanners:
						options: 'block'
				src: [
						'<%= meta.build %>app/app.js'
						'<%= meta.build %>app/directives/*.js'
						'<%= meta.build %>app/controllers/*.js'
						'<%= meta.build %>app/services/**/*.js'
					]
				dest: '<%= meta.production %>app.js'
		wrap:
			app:
				src: '<%= meta.production %>app.js'
				dest: ''
				wrapper: [
					'(function(angular, $, moment, undefined){\n\n'
					'\n})(window.angular, window.jQuery, window.moment);'
				]

		coffeelint:
			app: [
				'app/**/*.coffee'
				'tests/**/*.coffee'
			]
			options:
				'no_tabs':
					'level': 'ignore'
				'indentation':
					'level': 'ignore'
				'no_trailing_whitespace':
					'level': 'warn'

		watch:
			concat:
				files: [
					'<%= meta.build %>app/**/*.js'
					'<%= meta.build %>tests/**/*.js'
				]
				tasks: 'compile'
			phpunit:
				files: '../**/*.php'
				tasks: 'phpunit'

		karma:
			unit:
				configFile: 'config/karma.js'
			continuous:
				configFile: 'config/karma.js'
				singleRun: true
				browsers: ['PhantomJS']
				reporters: ['progress']
			unit_phantom:
				configFile: 'config/karma.js'
				browsers: ['PhantomJS']


		phpunit:
			classes:
				dir: '../tests'
			options:
				colors: true


	grunt.registerTask('run', ['watch:concat'])
	grunt.registerTask('compile', ['concat', 'wrap', 'coffeelint'])
	grunt.registerTask('ci', ['karma:continuous'])
	grunt.registerTask('testphp', ['watch:phpunit'])