UNPKG

1.28 kBJavaScriptView Raw
1const transforms = require('./util/configTransforms')
2
3class ConfigTransform {
4 constructor (options) {
5 this.fileDescriptor = options.file
6 }
7
8 transform (value, checkExisting, files, context) {
9 let file
10 if (checkExisting) {
11 file = this.findFile(files)
12 }
13 if (!file) {
14 file = this.getDefaultFile()
15 }
16 const { type, filename } = file
17
18 const transform = transforms[type]
19
20 let source
21 let existing
22 if (checkExisting) {
23 source = files[filename]
24 if (source) {
25 existing = transform.read({
26 source,
27 filename,
28 context
29 })
30 }
31 }
32
33 const content = transform.write({
34 source,
35 filename,
36 context,
37 value,
38 existing
39 })
40
41 return {
42 filename,
43 content
44 }
45 }
46
47 findFile (files) {
48 for (const type of Object.keys(this.fileDescriptor)) {
49 const descriptors = this.fileDescriptor[type]
50 for (const filename of descriptors) {
51 if (files[filename]) {
52 return { type, filename }
53 }
54 }
55 }
56 }
57
58 getDefaultFile () {
59 const [type] = Object.keys(this.fileDescriptor)
60 const [filename] = this.fileDescriptor[type]
61 return { type, filename }
62 }
63}
64
65module.exports = ConfigTransform