refactor: move compose and deploy packages under client

This commit is contained in:
Pavel Sviderski
2025-03-24 14:41:50 +10:00
parent 042dd594e0
commit 7a9d0cf9db
18 changed files with 11 additions and 11 deletions
+40
View File
@@ -0,0 +1,40 @@
package compose
import (
"fmt"
"github.com/compose-spec/compose-go/v2/types"
"github.com/psviderski/uncloud/pkg/api"
)
func ServiceSpecFromCompose(name string, service types.ServiceConfig) (api.ServiceSpec, error) {
spec := api.ServiceSpec{
Container: api.ContainerSpec{
Command: service.Command,
Image: service.Image,
Init: service.Init,
// TODO: env
// TODO: volumes
},
Name: name,
}
if ports, ok := service.Extensions[PortsExtensionKey].([]api.PortSpec); ok {
spec.Ports = ports
}
if service.Deploy != nil {
switch service.Deploy.Mode {
case "global":
spec.Mode = api.ServiceModeGlobal
case "", "replicated":
spec.Mode = api.ServiceModeReplicated
if service.Deploy.Replicas != nil {
spec.Replicas = uint(*service.Deploy.Replicas)
}
default:
return spec, fmt.Errorf("unsupported deploy mode: %s", service.Deploy.Mode)
}
}
return spec, nil
}