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 }