2024-01-18 21:46:29 -05:00
|
|
|
package common
|
|
|
|
|
|
|
|
|
|
import (
|
2024-02-11 23:04:20 -05:00
|
|
|
"context"
|
2024-02-21 18:15:37 -05:00
|
|
|
"fmt"
|
2024-02-11 23:04:20 -05:00
|
|
|
"io"
|
2024-02-21 18:15:37 -05:00
|
|
|
"os"
|
|
|
|
|
"strings"
|
2024-01-18 21:46:29 -05:00
|
|
|
)
|
|
|
|
|
|
2024-02-11 23:04:20 -05:00
|
|
|
// PlugnTriggerInput is the input for CallPlugnTrigger
|
2024-01-18 21:46:29 -05:00
|
|
|
type PlugnTriggerInput struct {
|
2024-02-11 23:04:20 -05:00
|
|
|
// Args are the arguments to pass to the trigger
|
|
|
|
|
Args []string
|
|
|
|
|
|
2024-02-12 20:28:31 -05:00
|
|
|
// DisableStdioBuffer disables the stdio buffer
|
|
|
|
|
DisableStdioBuffer bool
|
2024-02-11 23:04:20 -05:00
|
|
|
|
|
|
|
|
// Env is the environment variables to pass to the trigger
|
|
|
|
|
Env map[string]string
|
|
|
|
|
|
2025-09-16 22:14:12 -04:00
|
|
|
// PrintCommand prints the command before executing
|
|
|
|
|
PrintCommand bool
|
|
|
|
|
|
2024-02-11 23:04:20 -05:00
|
|
|
// Stdin is the stdin of the command
|
|
|
|
|
Stdin io.Reader
|
|
|
|
|
|
|
|
|
|
// StreamStdio determines whether to stream the stdio of the trigger
|
|
|
|
|
StreamStdio bool
|
|
|
|
|
|
|
|
|
|
// StreamStdout prints stdout directly to os.Stdout as the command runs.
|
|
|
|
|
StreamStdout bool
|
|
|
|
|
|
|
|
|
|
// StreamStderr prints stderr directly to os.Stderr as the command runs.
|
|
|
|
|
StreamStderr bool
|
|
|
|
|
|
|
|
|
|
// Trigger is the trigger to execute
|
|
|
|
|
Trigger string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CallPlugnTrigger executes a trigger via plugn
|
|
|
|
|
func CallPlugnTrigger(input PlugnTriggerInput) (ExecCommandResponse, error) {
|
|
|
|
|
return CallPlugnTriggerWithContext(context.Background(), input)
|
2024-01-18 21:46:29 -05:00
|
|
|
}
|
|
|
|
|
|
2024-02-11 23:04:20 -05:00
|
|
|
// CallPlugnTriggerWithContext executes a trigger via plugn with the given context
|
|
|
|
|
func CallPlugnTriggerWithContext(ctx context.Context, input PlugnTriggerInput) (ExecCommandResponse, error) {
|
2024-01-18 21:46:29 -05:00
|
|
|
args := []string{"trigger", input.Trigger}
|
|
|
|
|
args = append(args, input.Args...)
|
2024-02-21 18:15:37 -05:00
|
|
|
result, err := CallExecCommandWithContext(ctx, ExecCommandInput{
|
2024-02-12 20:28:31 -05:00
|
|
|
Command: "plugn",
|
|
|
|
|
Args: args,
|
|
|
|
|
DisableStdioBuffer: input.DisableStdioBuffer,
|
|
|
|
|
Env: input.Env,
|
|
|
|
|
Stdin: input.Stdin,
|
|
|
|
|
StreamStdio: input.StreamStdio,
|
|
|
|
|
StreamStdout: input.StreamStdout,
|
|
|
|
|
StreamStderr: input.StreamStderr,
|
2024-01-20 05:05:35 -05:00
|
|
|
})
|
2024-02-21 18:15:37 -05:00
|
|
|
|
2025-09-16 22:14:12 -04:00
|
|
|
if input.PrintCommand || os.Getenv("DOKKU_TRACE") == "1" {
|
2024-02-21 18:15:37 -05:00
|
|
|
for _, line := range strings.Split(result.Stderr, "\n") {
|
|
|
|
|
LogDebug(fmt.Sprintf("plugn trigger %s stderr: %s", input.Trigger, line))
|
|
|
|
|
}
|
|
|
|
|
for _, line := range strings.Split(result.Stdout, "\n") {
|
|
|
|
|
LogDebug(fmt.Sprintf("plugn trigger %s stdout: %s", input.Trigger, line))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result, err
|
2024-01-18 21:46:29 -05:00
|
|
|
}
|