-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGruntfile.js
98 lines (89 loc) · 3.1 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
module.exports = function (grunt) {
/*
* Function for recursively merging properties of the two configuration objects
*/
function mergeConfigs(settings, customsettings) {
for (var p in customsettings) {
if (customsettings.hasOwnProperty(p)) {
try {
if (customsettings[p].constructor === Array) {
settings[p] = settings[p].concat(customsettings[p]); // Concatenate arrays
} else {
settings[p] = customsettings[p]; // If not array, custom settings overwrite default settings
}
} catch (e) {
settings[p] = customsettings[p]; // On exception, custom settings overwrite default settings
}
}
}
return settings;
}
/*
* Config Properties
* Merge config properties if we have any custom configuration
*/
var defaultSettingsFile = "foldersyncsettings.json";
var userSettingsFile = "foldersyncsettings.user";
var settings = grunt.file.readJSON(defaultSettingsFile);
if (grunt.file.exists(userSettingsFile)) {
var customSettings = grunt.file.readJSON(userSettingsFile);
settings = mergeConfigs(settings, customSettings);
}
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
settings: settings,
copy: {
toA: {
files: [{
expand: true,
cwd: settings.gitPackagesPath,
src: settings.files,
dest: settings.APackagesPath
}],
verbose: true,
options: {
timestamp: true
}
},
toB: {
files: [{
expand: true,
cwd: settings.APackagesPath,
src: settings.files,
dest: settings.gitPackagesPath
}],
verbose: true,
options: {
timestamp: true
}
}
},
watch: {
B: {
files: settings.files,
tasks: ["newer:copy:toA"],
options: {
cwd: settings.gitPackagesPath,
event: ["added", "changed"],
/*interval: 10000*/
}
},
A: {
files: settings.files,
tasks: ["newer:copy:toB"],
options: {
cwd: settings.APackagesPath,
event: ["added", "changed"],
/*interval: 1000*/
}
}
}
});
/*
* Load Npm and register default start task
*/
grunt.loadNpmTasks("grunt-contrib-watch"); // Watch files/folders
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.loadNpmTasks("grunt-newer");
grunt.registerTask("default", ["watch"]);
};