github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/model/v1beta1/docker_task.go (about)

     1  package v1beta1
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/ipld/go-ipld-prime/datamodel"
     7  )
     8  
     9  type DockerInputs struct {
    10  	Entrypoint []string
    11  	Workdir    string
    12  	Mounts     IPLDMap[string, Resource]
    13  	Outputs    IPLDMap[string, datamodel.Node]
    14  	Env        IPLDMap[string, string]
    15  }
    16  
    17  var _ JobType = (*DockerInputs)(nil)
    18  
    19  func (docker DockerInputs) UnmarshalInto(with string, spec *Spec) error {
    20  	spec.Engine = EngineDocker
    21  	spec.Docker = JobSpecDocker{
    22  		Image:            with,
    23  		Entrypoint:       docker.Entrypoint,
    24  		WorkingDirectory: docker.Workdir,
    25  	}
    26  
    27  	spec.Docker.EnvironmentVariables = []string{}
    28  	for key, val := range docker.Env.Values {
    29  		spec.Docker.EnvironmentVariables = append(spec.Docker.EnvironmentVariables, key, val)
    30  	}
    31  
    32  	inputData, err := parseInputs(docker.Mounts)
    33  	if err != nil {
    34  		return err
    35  	}
    36  	spec.Inputs = inputData
    37  
    38  	spec.Outputs = []StorageSpec{}
    39  	for path := range docker.Outputs.Values {
    40  		spec.Outputs = append(spec.Outputs, StorageSpec{
    41  			Path: path,
    42  			Name: strings.Trim(path, "/"),
    43  		})
    44  	}
    45  	return nil
    46  }