generator-kittn
Version:
Kittn Scaffolding and Frontend Toolchain
116 lines (98 loc) • 2.96 kB
JavaScript
// ===========================
// Source Files/Folders Config
// ===========================
const base = require('./copySrc/base.js')
const style = require('./copySrc/style.js')
const script = require('./copySrc/script.js')
const projecttype = require('./copySrc/projecttype.js')
const tools = require('./copySrc/tools.js')
const starterpackCraft = require('./copySrc/starterpackCraft.js')
const starterpackJoomla = require('./copySrc/starterpackJoomla.js')
const starterpackWordpress = require('./copySrc/starterpackWordpress.js')
const copyAction = (data, context) => {
if (data.simplecopy) {
context.fs.copy(
context.templatePath(data.src),
context.destinationPath(data.dest)
)
} else {
context.fs.copyTpl(
context.templatePath(data.src),
context.destinationPath(data.dest),
context.props
)
}
}
const checkCondition = (data, context) => {
let error = false
if (data.conditions) {
for (const cond in data.conditions) {
if (data.conditions[cond] !== context.props[cond]) {
error = true
}
}
}
if (data.orConditions) {
error = true
for (const cond of data.orConditions) {
for (const con in cond) {
if (cond[con] === context.props[con]) {
error = false
}
}
}
}
if (data.notConditions) {
for (const cond in data.notConditions) {
if (data.notConditions[cond] === context.props[cond]) {
error = true
}
}
}
if (!error) {
copyAction(data, context)
}
}
const processConfig = (cfg, context) => {
// Copy all sources
for (const file of cfg.files) {
checkCondition(file, context)
}
for (const folder of cfg.folders) {
checkCondition(folder, context)
}
}
const copySources = () => {
return {
writing: context => {
return new Promise((resolve, reject) => {
// Base Config
const baseConfig = base(context)
processConfig(baseConfig, context)
// Style
const styleConfig = style(context)
processConfig(styleConfig, context)
// Script
const scriptConfig = script(context)
processConfig(scriptConfig, context)
// Projecttype
const projecttypeConfig = projecttype(context)
processConfig(projecttypeConfig, context)
// Tools
const toolConfig = tools(context)
processConfig(toolConfig, context)
// Starterpack Craft
const starterpackCraftConfig = starterpackCraft(context)
processConfig(starterpackCraftConfig, context)
// Starterpack Joomla
const starterpackJoomlaConfig = starterpackJoomla(context)
processConfig(starterpackJoomlaConfig, context)
// Starterpack Wordpress
const starterpackWordpressConfig = starterpackWordpress(context)
processConfig(starterpackWordpressConfig, context)
resolve()
})
}
}
}
module.exports = copySources