b7daa2f3a4
Update traefik dependencies (docker/docker and related) - Update dependencies - Fix compilation problems - Remove vdemeester/docker-events (in docker api now) - Remove `integration/vendor` - Use `testImport` - update some deps. - regenerate the lock from scratch (after a `glide cc`)
35 lines
1,017 B
Go
35 lines
1,017 B
Go
package project
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"golang.org/x/net/context"
|
|
|
|
"github.com/docker/libcompose/project/events"
|
|
"github.com/docker/libcompose/project/options"
|
|
)
|
|
|
|
// Run executes a one off command (like `docker run image command`).
|
|
func (p *Project) Run(ctx context.Context, serviceName string, commandParts []string, opts options.Run) (int, error) {
|
|
if !p.ServiceConfigs.Has(serviceName) {
|
|
return 1, fmt.Errorf("%s is not defined in the template", serviceName)
|
|
}
|
|
|
|
if err := p.initialize(ctx); err != nil {
|
|
return 1, err
|
|
}
|
|
var exitCode int
|
|
err := p.forEach([]string{}, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {
|
|
wrapper.Do(wrappers, events.ServiceRunStart, events.ServiceRun, func(service Service) error {
|
|
if service.Name() == serviceName {
|
|
code, err := service.Run(ctx, commandParts, opts)
|
|
exitCode = code
|
|
return err
|
|
}
|
|
return nil
|
|
})
|
|
}), func(service Service) error {
|
|
return service.Create(ctx, options.Create{})
|
|
})
|
|
return exitCode, err
|
|
}
|