UNPKG

@enspirit/emb

Version:

A replacement for our Makefile-for-monorepos

47 lines (46 loc) 1.45 kB
import deepmerge from '@fastify/deepmerge'; import { glob } from 'glob'; import { dirname } from 'node:path'; import { MonorepoConfig } from '../index.js'; import { AbstractPlugin } from './plugin.js'; export const AutoDockerPluginDefaultOptions = { glob: '*/Dockerfile', }; export class AutoDockerPlugin extends AbstractPlugin { monorepo; static name = 'autodocker'; constructor(config, monorepo) { super({ ...AutoDockerPluginDefaultOptions, ...config, }, monorepo); this.monorepo = monorepo; } async extendConfig(config) { const files = await glob(this.config.glob || AutoDockerPluginDefaultOptions.glob, { ...this.config, cwd: this.monorepo.rootDir, }); const overrides = files.reduce((cmps, path) => { const name = dirname(path); const component = config.components[name]; const cfg = { resources: { image: { type: 'docker/image', params: {}, }, }, }; cmps[name] = component ? deepmerge()(component, cfg) : cfg; return cmps; }, {}); return new MonorepoConfig({ ...config, components: { ...config.components, ...overrides, }, }); } }