34 lines
1000 B
JavaScript
34 lines
1000 B
JavaScript
|
import {dumpYml} from '@flecks/core/server';
|
||
|
|
||
|
import {generateComposeConfig, generateDockerFile} from './generate';
|
||
|
|
||
|
class FlecksDockerOutput {
|
||
|
|
||
|
constructor(options) {
|
||
|
this.options = options;
|
||
|
}
|
||
|
|
||
|
// eslint-disable-next-line class-methods-use-this
|
||
|
apply(compiler) {
|
||
|
compiler.hooks.compilation.tap('FlecksDockerOutput', (compilation) => {
|
||
|
compilation.hooks.additionalAssets.tapAsync('FlecksDockerOutput', async (callback) => {
|
||
|
const dockerFile = generateDockerFile(this.options.flecks);
|
||
|
compilation.assets.Dockerfile = {
|
||
|
source: () => dockerFile,
|
||
|
size: () => dockerFile.length,
|
||
|
};
|
||
|
const composeConfig = await generateComposeConfig(this.options.flecks);
|
||
|
const composeFile = dumpYml(composeConfig);
|
||
|
compilation.assets['docker-compose.yml'] = {
|
||
|
source: () => composeFile,
|
||
|
size: () => composeFile.length,
|
||
|
};
|
||
|
callback();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
export default FlecksDockerOutput;
|