create-jslib
Version:
CLI tool for building JavaScript libraries.
66 lines (56 loc) • 1.28 kB
JavaScript
const transforms = require('./util/configTransforms')
class ConfigTransform {
constructor (options) {
this.fileDescriptor = options.file
}
transform (value, checkExisting, files, context) {
let file
if (checkExisting) {
file = this.findFile(files)
}
if (!file) {
file = this.getDefaultFile()
}
const { type, filename } = file
const transform = transforms[type]
let source
let existing
if (checkExisting) {
source = files[filename]
if (source) {
existing = transform.read({
source,
filename,
context
})
}
}
const content = transform.write({
source,
filename,
context,
value,
existing
})
return {
filename,
content
}
}
findFile (files) {
for (const type of Object.keys(this.fileDescriptor)) {
const descriptors = this.fileDescriptor[type]
for (const filename of descriptors) {
if (files[filename]) {
return { type, filename }
}
}
}
}
getDefaultFile () {
const [type] = Object.keys(this.fileDescriptor)
const [filename] = this.fileDescriptor[type]
return { type, filename }
}
}
module.exports = ConfigTransform