first commit to new repo
This commit is contained in:
141
static/semantic/tasks/config/project/config.js
Executable file
141
static/semantic/tasks/config/project/config.js
Executable file
@@ -0,0 +1,141 @@
|
||||
/*******************************
|
||||
Set-up
|
||||
*******************************/
|
||||
|
||||
var
|
||||
extend = require('extend'),
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
|
||||
defaults = require('../defaults')
|
||||
;
|
||||
|
||||
|
||||
/*******************************
|
||||
Exports
|
||||
*******************************/
|
||||
|
||||
module.exports = {
|
||||
|
||||
getPath: function(file, directory) {
|
||||
var
|
||||
configPath,
|
||||
walk = function(directory) {
|
||||
var
|
||||
nextDirectory = path.resolve( path.join(directory, path.sep, '..') ),
|
||||
currentPath = path.normalize( path.join(directory, file) )
|
||||
;
|
||||
if( fs.existsSync(currentPath) ) {
|
||||
// found file
|
||||
configPath = path.normalize(directory);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
// reached file system root, let's stop
|
||||
if(nextDirectory == directory) {
|
||||
return;
|
||||
}
|
||||
// otherwise recurse
|
||||
walk(nextDirectory, file);
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
// start walk from outside require-dot-files directory
|
||||
file = file || defaults.files.config;
|
||||
directory = directory || path.join(__dirname, path.sep, '..');
|
||||
walk(directory);
|
||||
return configPath || '';
|
||||
},
|
||||
|
||||
// adds additional derived values to a config object
|
||||
addDerivedValues: function(config) {
|
||||
|
||||
config = config || extend(false, {}, defaults);
|
||||
|
||||
/*--------------
|
||||
File Paths
|
||||
---------------*/
|
||||
|
||||
var
|
||||
configPath = this.getPath(),
|
||||
sourcePaths = {},
|
||||
outputPaths = {},
|
||||
folder
|
||||
;
|
||||
|
||||
// resolve paths (config location + base + path)
|
||||
for(folder in config.paths.source) {
|
||||
if(config.paths.source.hasOwnProperty(folder)) {
|
||||
sourcePaths[folder] = path.resolve(path.join(configPath, config.base, config.paths.source[folder]));
|
||||
}
|
||||
}
|
||||
for(folder in config.paths.output) {
|
||||
if(config.paths.output.hasOwnProperty(folder)) {
|
||||
outputPaths[folder] = path.resolve(path.join(configPath, config.base, config.paths.output[folder]));
|
||||
}
|
||||
}
|
||||
|
||||
// set config paths to full paths
|
||||
config.paths.source = sourcePaths;
|
||||
config.paths.output = outputPaths;
|
||||
|
||||
// resolve "clean" command path
|
||||
config.paths.clean = path.resolve( path.join(configPath, config.base, config.paths.clean) );
|
||||
|
||||
/*--------------
|
||||
CSS URLs
|
||||
---------------*/
|
||||
|
||||
// determine asset paths in css by finding relative path between themes and output
|
||||
// force forward slashes
|
||||
|
||||
config.paths.assets = {
|
||||
source : '../../themes', // source asset path is always the same
|
||||
uncompressed : './' + path.relative(config.paths.output.uncompressed, config.paths.output.themes).replace(/\\/g, '/'),
|
||||
compressed : './' + path.relative(config.paths.output.compressed, config.paths.output.themes).replace(/\\/g, '/'),
|
||||
packaged : './' + path.relative(config.paths.output.packaged, config.paths.output.themes).replace(/\\/g, '/')
|
||||
};
|
||||
|
||||
/*--------------
|
||||
Permission
|
||||
---------------*/
|
||||
|
||||
if(config.permission) {
|
||||
config.hasPermissions = true;
|
||||
}
|
||||
else {
|
||||
// pass blank object to avoid causing errors
|
||||
config.permission = {};
|
||||
config.hasPermissions = false;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Globs
|
||||
---------------*/
|
||||
|
||||
if(!config.globs) {
|
||||
config.globs = {};
|
||||
}
|
||||
|
||||
// remove duplicates from component array
|
||||
if(config.components instanceof Array) {
|
||||
config.components = config.components.filter(function(component, index) {
|
||||
return config.components.indexOf(component) == index;
|
||||
});
|
||||
}
|
||||
|
||||
// takes component object and creates file glob matching selected components
|
||||
config.globs.components = (typeof config.components == 'object')
|
||||
? (config.components.length > 1)
|
||||
? '{' + config.components.join(',') + '}'
|
||||
: config.components[0]
|
||||
: '{' + defaults.components.join(',') + '}'
|
||||
;
|
||||
|
||||
return config;
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user