github.com/docker/libcompose@v0.4.1-0.20210616120443-2a046c0bdbf2/config/convert.go (about)

     1  package config
     2  
     3  import (
     4  	"github.com/docker/libcompose/utils"
     5  	"github.com/docker/libcompose/yaml"
     6  )
     7  
     8  // ConvertServices converts a set of v1 service configs to v2 service configs
     9  func ConvertServices(v1Services map[string]*ServiceConfigV1) (map[string]*ServiceConfig, error) {
    10  	v2Services := make(map[string]*ServiceConfig)
    11  	replacementFields := make(map[string]*ServiceConfig)
    12  
    13  	for name, service := range v1Services {
    14  		replacementFields[name] = &ServiceConfig{
    15  			Build: yaml.Build{
    16  				Context:    service.Build,
    17  				Dockerfile: service.Dockerfile,
    18  			},
    19  			Logging: Log{
    20  				Driver:  service.LogDriver,
    21  				Options: service.LogOpt,
    22  			},
    23  			NetworkMode: service.Net,
    24  		}
    25  
    26  		v1Services[name].Build = ""
    27  		v1Services[name].Dockerfile = ""
    28  		v1Services[name].LogDriver = ""
    29  		v1Services[name].LogOpt = nil
    30  		v1Services[name].Net = ""
    31  	}
    32  
    33  	if err := utils.Convert(v1Services, &v2Services); err != nil {
    34  		return nil, err
    35  	}
    36  
    37  	for name := range v2Services {
    38  		v2Services[name].Build = replacementFields[name].Build
    39  		v2Services[name].Logging = replacementFields[name].Logging
    40  		v2Services[name].NetworkMode = replacementFields[name].NetworkMode
    41  	}
    42  
    43  	return v2Services, nil
    44  }