diff options
| author | ivar <i@oiee.no> | 2025-10-19 23:41:23 +0200 |
|---|---|---|
| committer | ivar <i@oiee.no> | 2025-10-19 23:41:23 +0200 |
| commit | 3f4c0720e1e3421431e7baa20882a4a4512a7fab (patch) | |
| tree | 734ca81d7d0841d8863e3f523ebba14c282dc681 /src/wwwroot/libraries/fomantic/tasks/config/project/config.js | |
| download | fagprove-3f4c0720e1e3421431e7baa20882a4a4512a7fab.tar.xz fagprove-3f4c0720e1e3421431e7baa20882a4a4512a7fab.zip | |
Diffstat (limited to 'src/wwwroot/libraries/fomantic/tasks/config/project/config.js')
| -rw-r--r-- | src/wwwroot/libraries/fomantic/tasks/config/project/config.js | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/src/wwwroot/libraries/fomantic/tasks/config/project/config.js b/src/wwwroot/libraries/fomantic/tasks/config/project/config.js new file mode 100644 index 0000000..49e1f18 --- /dev/null +++ b/src/wwwroot/libraries/fomantic/tasks/config/project/config.js @@ -0,0 +1,143 @@ +/******************************* + 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; + config.parsedPermissions = typeof config.permission === 'string' ? parseInt(config.permission, 8) : config.permission; + } + else { + // pass blank object to avoid causing errors + config.permission = {}; + config.hasPermissions = false; + config.parsedPermissions = {}; + } + + /*-------------- + 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; + + } + +}; + |
