-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathModuleInitializer.js
More file actions
58 lines (53 loc) · 2.28 KB
/
ModuleInitializer.js
File metadata and controls
58 lines (53 loc) · 2.28 KB
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
var path = require('path')
var constants = require('./constants.js')
function ModuleInitializer(thirdPartyModule, moduleRequire) {
this.thirdPartyModule = thirdPartyModule
this.thirdPartyModule.exports.ignition = thirdPartyModule.exports.ignition || {}
this.thirdPartyModule.exports.ignition.expressions = thirdPartyModule.exports.ignition.expressions || []
//this.thirdPartyModule.exports.ignition.init = moduleInit
this.thirdPartyModule.exports.ignition.moduleRequire = moduleRequire
this.thirdPartyModule.exports.ignition.path = thirdPartyModule.filename
var moduleDirName = this.moduleDirName = path.dirname(thirdPartyModule.filename)
var moduleManifestFile = path.join(moduleDirName, constants.DEFAULT_MANIFEST_FILE_NAME)
if(fs.existsSync(moduleManifestFile)) {
thirdPartyModule.exports.ignition.manifestFile = moduleManifestFile
}
var initializersDir = path.join(moduleDirName, constants.INITIALIZERS_DIR_NAME)
if(fs.existsSync(initializersDir)) {
thirdPartyModule.exports.ignition.initializersDir = initializersDir
}
this.thirdPartyModule.exports.ignition.scriptDirs = []
// automatically add the root of the module as a scripts directory.
this.exportScriptsDir('.')
Object.defineProperty(this, "initializer", {
get: function() {
return this.thirdPartyModule.exports.ignition.init
},
set: function(value) {
this.thirdPartyModule.exports.ignition.init = value
}
})
}
ModuleInitializer.prototype.exportExpressions = function(expDefArray) {
var self = this
if(!(expDefArray instanceof Array)) {
throw "exportExpressions requires an Array with all the expression defintions"
}
expDefArray.forEach(function(expDef) {
self.thirdPartyModule.exports.ignition.expressions.push(expDef)
})
}
ModuleInitializer.prototype.exportScriptsDir = function(dir, attributes) {
var dirFullPath = path.join(this.moduleDirName, dir)
if(!fs.existsSync(dirFullPath)) {
throw "ModuleInitializer could't find the scripts directory '" + dirFullPath + "'. Make sure the directory exists before using exportScriptsDir."
}
this.thirdPartyModule.exports.ignition.scriptDirs.push({
path: dirFullPath,
attributes: attributes
})
}
ModuleInitializer.prototype.exportExpression = function(expDef) {
this.thirdPartyModule.exports.ignition.expressions.push(expDef)
}
module.exports = ModuleInitializer