rob@77
|
1 module.exports = function(grunt) {
|
rob@77
|
2
|
rob@77
|
3 var exec = require('child_process').exec,
|
rob@77
|
4 http = require('http'),
|
rob@77
|
5 fs = require('fs'),
|
rob@77
|
6 host = 'ajax.googleapis.com',
|
rob@77
|
7 jqPath = '/ajax/libs/jquery/1.7.2/jquery.js';
|
rob@77
|
8
|
rob@77
|
9 grunt.registerTask('build', 'builds query module for us in nodje', function() {
|
rob@77
|
10 var tmpDir = './tmp', distDir = './lib',
|
rob@77
|
11 done = this.async(), wrapper;
|
rob@77
|
12
|
rob@77
|
13
|
rob@77
|
14 function buildjQuery(jq) {
|
rob@77
|
15 wrapper = fs.readFileSync('./src/wrapper.js', 'utf8');
|
rob@77
|
16 wrapper = wrapper.replace('//JQUERY_SOURCE', jq);
|
rob@77
|
17 fs.writeFileSync('./lib/node-jquery.js', wrapper);
|
rob@77
|
18 done();
|
rob@77
|
19 }
|
rob@77
|
20
|
rob@77
|
21 function writejQuery() {
|
rob@77
|
22 var data = '',
|
rob@77
|
23 req = http.request({
|
rob@77
|
24 host: host,
|
rob@77
|
25 port: 80,
|
rob@77
|
26 path: jqPath,
|
rob@77
|
27 method: 'GET'
|
rob@77
|
28 }, function(res) {
|
rob@77
|
29 res.setEncoding('utf8');
|
rob@77
|
30 res.on('data', function(chunk) {
|
rob@77
|
31 data += chunk;
|
rob@77
|
32 });
|
rob@77
|
33 res.on('end', function() {
|
rob@77
|
34 fs.writeFileSync(tmpDir+'/jquery.js', data);
|
rob@77
|
35 buildjQuery(data);
|
rob@77
|
36 });
|
rob@77
|
37 });
|
rob@77
|
38 req.write('data\n');
|
rob@77
|
39 req.write('data\n');
|
rob@77
|
40 req.end();
|
rob@77
|
41
|
rob@77
|
42 }
|
rob@77
|
43
|
rob@77
|
44 function getjQuery() {
|
rob@77
|
45 var jq = null;
|
rob@77
|
46 try {
|
rob@77
|
47 jq = fs.readFileSync(tmpDir+'/jquery.js', 'utf8');
|
rob@77
|
48 buildjQuery(jq);
|
rob@77
|
49 } catch (e) {
|
rob@77
|
50 writejQuery();
|
rob@77
|
51 }
|
rob@77
|
52 }
|
rob@77
|
53
|
rob@77
|
54 exec('mkdir '+tmpDir+' && mkdir '+distDir, getjQuery);
|
rob@77
|
55 });
|
rob@77
|
56
|
rob@77
|
57 grunt.registerTask('clean', 'removes dist and tmp directories', function() {
|
rob@77
|
58 var done = this.async();
|
rob@77
|
59 exec('rm -rf ./tmp && rm -rf ./lib', function() {
|
rob@77
|
60 done();
|
rob@77
|
61 });
|
rob@77
|
62 });
|
rob@77
|
63
|
rob@77
|
64 // Project configuration.
|
rob@77
|
65 grunt.initConfig({
|
rob@77
|
66 pkg: '<json:package.json>',
|
rob@77
|
67 test: {
|
rob@77
|
68 files: ['test/*.js']
|
rob@77
|
69 },
|
rob@77
|
70 lint: {
|
rob@77
|
71 files: ['grunt.js', 'lib/**/*.js', 'test/**/*.js']
|
rob@77
|
72 },
|
rob@77
|
73 watch: {
|
rob@77
|
74 files: '<config:lint.files>',
|
rob@77
|
75 tasks: 'default'
|
rob@77
|
76 },
|
rob@77
|
77 jshint: {
|
rob@77
|
78 options: {
|
rob@77
|
79 curly: true,
|
rob@77
|
80 eqeqeq: true,
|
rob@77
|
81 immed: true,
|
rob@77
|
82 latedef: true,
|
rob@77
|
83 newcap: true,
|
rob@77
|
84 noarg: true,
|
rob@77
|
85 sub: true,
|
rob@77
|
86 undef: true,
|
rob@77
|
87 boss: true,
|
rob@77
|
88 eqnull: true,
|
rob@77
|
89 node: true
|
rob@77
|
90 },
|
rob@77
|
91 globals: {
|
rob@77
|
92 exports: true
|
rob@77
|
93 }
|
rob@77
|
94 }
|
rob@77
|
95 });
|
rob@77
|
96
|
rob@77
|
97 // Default task.
|
rob@77
|
98 grunt.registerTask('default', 'build test');
|
rob@77
|
99
|
rob@77
|
100 };
|