-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGruntfile.js
119 lines (104 loc) · 3.13 KB
/
Gruntfile.js
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
var fs = require('fs'),
path = require("path"),
csv = require('ya-csv'),
async = require('async'),
_ = require('lodash');
// recursive rmdir
// from https://gist.github.com/tkihira/2367067
var rmdir = function(dir) {
var list = fs.readdirSync(dir);
for(var i = 0; i < list.length; i++) {
var filename = path.join(dir, list[i]);
var stat = fs.statSync(filename);
if(filename == "." || filename == "..") {
// pass these files
} else if(stat.isDirectory()) {
// rmdir recursively
rmdir(filename);
} else {
// rm fiilename
fs.unlinkSync(filename);
}
}
fs.rmdirSync(dir);
};
module.exports = function(grunt){
var config;
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
update_submodules: {
default: {
options: {
// default command line parameters will be used: --init --recursive
}
},
withCustomParameters: {
options: {
params: "--force" // specifies your own command-line parameters
}
},
withNoParameter: {
options: {
params: false // blanks command-line parameters
}
}
},
jshint: {
all: ['Gruntfile.js', 'public/js/**/*.js']
}
});
config = grunt.config('pkg').config;
/**
* transform csv files into json files
*/
grunt.registerTask('csv2json', function(){
var dirs = fs.readdirSync( config.csvDir ),
done = this.async(),
tasks = [];
_.each(dirs, function(dir){
if ( fs.lstatSync(config.csvDir + '/' + dir).isDirectory() ){
var files = fs.readdirSync( config.csvDir + '/' + dir ),
destDir = config.jsonDir + '/' + dir;
if ( !fs.existsSync(config.jsonDir) ){
fs.mkdirSync( config.jsonDir );
}
if ( fs.existsSync(destDir) ){
rmdir( destDir );
}
fs.mkdirSync( destDir );
_.each(files, function(file, index){
var src = config.csvDir + '/' + dir + '/' + file,
dest = config.jsonDir + '/' + dir + '/' + file;
if ( fs.lstatSync(src).isFile() ){
tasks.push( function(callback){
var temp = [],
reader = csv.createCsvFileReader(src, {
// dirty fix, with default quote " gives error, I do not know why
quote:'$',
columnsFromHeader: true
});
reader.addListener('data', function(data) {
temp.push(data);
});
reader.addListener('end', function() {
fs.appendFileSync(dest, JSON.stringify(temp, null, '\t'));
callback(null, true);
});
});
}
});
}
});
// execute file parsing in parallel
async.parallel(tasks, function(err, result){
if (err){
return console.error(err);
}
done();
});
});
grunt.loadNpmTasks("grunt-update-submodules");
grunt.loadNpmTasks("grunt-contrib-jshint");
grunt.registerTask('default', ['update_submodules']);
grunt.registerTask('validate', ['jshint']);
};