mirror of https://github.com/portainer/portainer
54 lines
1.0 KiB
Go
54 lines
1.0 KiB
Go
![]() |
package composeplugin
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"github.com/portainer/portainer/pkg/libstack"
|
||
|
"github.com/rs/zerolog/log"
|
||
|
)
|
||
|
|
||
|
func (wrapper *PluginWrapper) Run(ctx context.Context, filePaths []string, serviceName string, options libstack.RunOptions) error {
|
||
|
|
||
|
output, err := wrapper.command(newRunCommand(filePaths, serviceName, runOptions{
|
||
|
remove: options.Remove,
|
||
|
args: options.Args,
|
||
|
detached: options.Detached,
|
||
|
}), options.Options)
|
||
|
if len(output) != 0 {
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
log.Info().Msg("Stack run successful")
|
||
|
|
||
|
log.Debug().
|
||
|
Str("output", string(output)).
|
||
|
Msg("docker compose")
|
||
|
}
|
||
|
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
type runOptions struct {
|
||
|
remove bool
|
||
|
args []string
|
||
|
detached bool
|
||
|
}
|
||
|
|
||
|
func newRunCommand(filePaths []string, serviceName string, options runOptions) composeCommand {
|
||
|
args := []string{"run"}
|
||
|
|
||
|
if options.remove {
|
||
|
args = append(args, "--rm")
|
||
|
}
|
||
|
|
||
|
if options.detached {
|
||
|
args = append(args, "-d")
|
||
|
}
|
||
|
|
||
|
args = append(args, serviceName)
|
||
|
args = append(args, options.args...)
|
||
|
|
||
|
return newCommand(args, filePaths)
|
||
|
}
|