forked from madsflensted/elm-brunch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
62 lines (50 loc) · 1.96 KB
/
index.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
(function() {
var ElmCompiler, elmCompile, childProcess, path;
childProcess = require('child_process');
path = require('path');
module.exports = ElmCompiler = (function() {
ElmCompiler.prototype.brunchPlugin = true;
ElmCompiler.prototype.type = 'javascript';
ElmCompiler.prototype.extension = 'elm';
function ElmCompiler(config) {
var elm_config = {};
elm_config.outputFolder = (config.plugins.elmBrunch || {}).outputFolder || path.join(config.paths.public, 'js');
elm_config.mainModules = (config.plugins.elmBrunch || {}).mainModules;
elm_config.elmFolder = (config.plugins.elmBrunch || {}).elmFolder || null;
this.elm_config = elm_config;
this.skipedOnInit = {}
}
ElmCompiler.prototype.compile = function(data, file, callback) {
var modules = this.elm_config.mainModules || [file];
var file_is_module_index = modules.indexOf(file);
if (file_is_module_index >= 0) {
modules = [modules[file_is_module_index]];
} else {
if (this.skipedOnInit[file]){
} else {
this.skipedOnInit[file] = true;
return callback(null, null);
}
}
var outputFolder = this.elm_config.outputFolder;
var elmFolder = this.elm_config.elmFolder;
return modules.forEach(function(src) {
var moduleName;
moduleName = path.basename(src, '.elm').toLowerCase();
return elmCompile(src, elmFolder, path.join(outputFolder, moduleName + '.js'), callback);
});
};
return ElmCompiler;
})();
elmCompile = function(srcFile, elmFolder, outputFile, callback) {
var info = 'Elm compile: ' + srcFile;
if (elmFolder) {
info += ', in ' + elmFolder;
}
info += ', to ' + outputFile;
console.log(info);
childProcess.exec('elm make --yes --output ' + outputFile + ' ' + srcFile, {cwd: elmFolder}, function (error, stdout, stderr){
return callback(error, error ? stderr : null);
});
};
}).call(this);