MCPcopy
hub / github.com/docker/compose / setupPluginCommand

Method setupPluginCommand

pkg/compose/plugins.go:206–244  ·  view source on GitHub ↗
(ctx context.Context, project *types.Project, service types.ServiceConfig, path, command string)

Source from the content-addressed store, hash-verified

204}
205
206func (s *composeService) setupPluginCommand(ctx context.Context, project *types.Project, service types.ServiceConfig, path, command string) (*exec.Cmd, error) {
207 cmdOptionsMetadata := s.getPluginMetadata(path, service.Provider.Type, project)
208 var currentCommandMetadata CommandMetadata
209 switch command {
210 case "up":
211 currentCommandMetadata = cmdOptionsMetadata.Up
212 case "down":
213 currentCommandMetadata = cmdOptionsMetadata.Down
214 case "stop":
215 if cmdOptionsMetadata.Stop == nil {
216 return nil, nil
217 }
218 currentCommandMetadata = *cmdOptionsMetadata.Stop
219 }
220
221 provider := *service.Provider
222 commandMetadataIsEmpty := cmdOptionsMetadata.IsEmpty()
223 if err := currentCommandMetadata.CheckRequiredParameters(provider); !commandMetadataIsEmpty && err != nil {
224 return nil, err
225 }
226
227 args := []string{"compose", fmt.Sprintf("--project-name=%s", project.Name), command}
228 for k, v := range provider.Options {
229 for _, value := range v {
230 if _, ok := currentCommandMetadata.GetParameter(k); commandMetadataIsEmpty || ok {
231 args = append(args, fmt.Sprintf("--%s=%s", k, value))
232 }
233 }
234 }
235 args = append(args, service.Name)
236
237 cmd := exec.CommandContext(ctx, path, args...)
238
239 err := s.prepareShellOut(ctx, project.Environment, cmd)
240 if err != nil {
241 return nil, err
242 }
243 return cmd, nil
244}
245
246func (s *composeService) getPluginMetadata(path, command string, project *types.Project) ProviderMetadata {
247 cmd := exec.Command(path, "compose", "metadata")

Callers 1

runPluginMethod · 0.95

Calls 5

getPluginMetadataMethod · 0.95
GetParameterMethod · 0.95
prepareShellOutMethod · 0.95
IsEmptyMethod · 0.45

Tested by

no test coverage detected