import BdkYaml from '../bdkYaml' ; interface ServiceInterface { build ? : { context ? : string ; dockerfile ? : string ; args ? : { [ key ] : string ; } ; } ; command ? : string ; container_name ? : string ; hostname ? : string ; depends_on ? : { [ serviceName ] : { condition : string ; } ; } ; env_file ? : string | string [ ] ; environment ? : string [ ] ; image : string ; labels ? : { [ key ] : string ; } ; networks ? : string [ ] ; ports ? : string [ ] ; volumes ? : string [ ] ; working_dir ? : string ; healthcheck ? : { test : string ; interval : string ; timeout : string ; retries : number ; } ; user ? : string ; } interface VolumeInterface { driver ? : string ; driver_opts ? : { [ key ] : string ; } ; external ? : boolean ; labels ? : { [ key ] : string ; } ; name ? : string ; } interface NetworkInterface { driver ? : 'bridge' | 'overlay' ; driver_opts ? : { [ key ] : string ; } ; attachable ? : boolean ; ipam ? : { driver ? : string ; config : { subnet : string ; } [ ] ; } ; internal ? : boolean ; labels ? : { [ key ] : string ; } ; external ? : boolean ; name ? : string ; } export interface DockerComposeYamlInterface { version : string ; services : { [ serviceName ] : ServiceInterface ; } ; volumes : { [ volumeName ] : VolumeInterface ; } ; networks : { [ networkName ] : NetworkInterface ; } ; } class DockerComposeYaml extends BdkYaml < DockerComposeYamlInterface > { constructor ( value ? ) { super ( value || { version : '3.5' , services : { } , volumes : { } , networks : { } } ) ; } public addService ( serviceName , service ) { this . value . services [ serviceName ] = service ; } public addVolume ( volumeName , volume ) { this . value . volumes [ volumeName ] = volume ; } public addNetwork ( networkName , network ) { this . value . networks [ networkName ] = network ; } public setServices ( services ) { this . value . services = services ; } public setVolumes ( volumes ) { this . value . volumes = volumes ; } public setNetworks ( networks ) { this . value . networks = networks ; } } export default DockerComposeYaml ;