added scriptEnvFile to command.commandName object
Some checks failed
ci/woodpecker/push/go-lint Pipeline failed

This commit is contained in:
2023-08-06 22:27:51 -05:00
parent b8a82b2836
commit 6ccb75f4fa
6 changed files with 80 additions and 13 deletions

View File

@ -95,6 +95,13 @@ func (command *Command) RunCmd(log zerolog.Logger, backyConf *ConfigFile, opts *
commandSession.Stderr = cmdOutWriters
if command.Type != "" {
// did the program panic while writing to the buffer?
defer func() {
if err := recover(); err != nil {
log.Info().Msg(fmt.Sprintf("panic occured writing to buffer: %x", err))
}
}()
if command.Type == "script" {
script := bytes.NewBufferString(cmd + "\n")
@ -130,8 +137,31 @@ func (command *Command) RunCmd(log zerolog.Logger, backyConf *ConfigFile, opts *
return outputArr, nil
}
if command.Type == "scriptFile" {
var buffer bytes.Buffer
var dirErr error
var (
buffer bytes.Buffer
scriptEnvFileBuffer bytes.Buffer
scriptFileBuffer bytes.Buffer
dirErr error
scriptEnvFilePresent bool
)
if command.ScriptEnvFile != "" {
command.ScriptEnvFile, dirErr = resolveDir(command.ScriptEnvFile)
if dirErr != nil {
return nil, dirErr
}
file, err := os.Open(command.ScriptEnvFile)
if err != nil {
return nil, err
}
defer file.Close()
_, err = io.Copy(&scriptEnvFileBuffer, file)
if err != nil {
return nil, err
}
scriptEnvFilePresent = true
}
command.Cmd, dirErr = resolveDir(command.Cmd)
if dirErr != nil {
return nil, dirErr
@ -140,12 +170,32 @@ func (command *Command) RunCmd(log zerolog.Logger, backyConf *ConfigFile, opts *
if err != nil {
return nil, err
}
defer file.Close()
_, err = io.Copy(&buffer, file)
_, err = io.Copy(&scriptFileBuffer, file)
if err != nil {
return nil, err
}
defer file.Close()
if scriptEnvFilePresent {
_, err := buffer.WriteString(scriptEnvFileBuffer.String())
if err != nil {
return nil, err
}
// write newline
buffer.WriteByte(0x0A)
_, err = buffer.WriteString(scriptFileBuffer.String())
if err != nil {
return nil, err
}
} else {
_, err = io.Copy(&buffer, file)
if err != nil {
return nil, err
}
}
script := &buffer
commandSession.Stdin = script

View File

@ -236,9 +236,8 @@ func ReadConfig(opts *ConfigOpts) *ConfigFile {
}
}
var notificationsMap = make(map[string]interface{})
if backyViper.IsSet("notifications") {
notificationsMap = backyViper.GetStringMap("notifications")
notificationsMap := backyViper.GetStringMap("notifications")
for id := range notificationsMap {
notifConfig := backyViper.Sub(getNestedConfig("notifications", id))
config := &NotificationsConfig{

View File

@ -100,6 +100,8 @@ type (
// Output determines if output is requested.
// Only works if command is in a list.
GetOutput bool `yaml:"getOutput,omitempty"`
ScriptEnvFile string `yaml:"scriptEnvFile"`
}
BackyOptionFunc func(*ConfigOpts)