var path = require('path'),
fs = require('fs'),
flatiron = require('../../flatiron'),
common = flatiron.common,
resourceful;
try {
resourceful = require('resourceful');
}
catch (ex) {
console.warn('flatiron.plugins.resourceful requires the `resourceful` module from npm');
console.warn('install using `npm install resourceful`.');
console.trace();
process.exit(1);
}
exports.name = 'resourceful';
exports.attach = function (options) {
var app = this;
options = options || {};
if (typeof options === 'string') {
options = { root: options };
}
app.resources = app.resources || {};
if (options.dir || options.root || app.root) {
app._resourceDir = options.dir
|| path.join(options.root || app.root, 'app', 'resources');
common.tryReaddirSync(app._resourceDir).forEach(function (file) {
file = file.replace('.js', '');
app.resources.__defineGetter__(common.capitalize(file), function () {
delete app.resources[file];
return app.resources[file] = require(
path.resolve(app._resourceDir, file)
);
});
});
}
app.define = resourceful.define;
};
exports.init = function (done) {
var app = this,
options;
options = common.mixin(
{},
app.options['resourceful'],
app.config.get('resourceful') || {}
);
app.config.set('resourceful', options);
if (options.engine) {
resourceful.use(options.engine, options);
}
done();
};