diff --git a/plugin.go b/plugin.go index 2a79cd1..18e26e6 100644 --- a/plugin.go +++ b/plugin.go @@ -207,11 +207,12 @@ func (p Plugin) scriptCommands() []string { commands := make([]string, 0) for _, cmd := range scripts { + cmd = strings.TrimSpace(cmd) if strings.TrimSpace(cmd) == "" { continue } commands = append(commands, cmd) - if p.Config.ScriptStop { + if p.Config.ScriptStop && cmd[(len(cmd)-1):] != "\\" { commands = append(commands, "DRONE_SSH_PREV_COMMAND_EXIT_CODE=$? ; if [ $DRONE_SSH_PREV_COMMAND_EXIT_CODE -ne 0 ]; then exit $DRONE_SSH_PREV_COMMAND_EXIT_CODE; fi;") } } diff --git a/plugin_test.go b/plugin_test.go index 663f587..be1cf54 100644 --- a/plugin_test.go +++ b/plugin_test.go @@ -646,6 +646,17 @@ func TestPlugin_scriptCommands(t *testing.T) { }, want: []string{"mkdir a", "DRONE_SSH_PREV_COMMAND_EXIT_CODE=$? ; if [ $DRONE_SSH_PREV_COMMAND_EXIT_CODE -ne 0 ]; then exit $DRONE_SSH_PREV_COMMAND_EXIT_CODE; fi;", "mkdir c", "DRONE_SSH_PREV_COMMAND_EXIT_CODE=$? ; if [ $DRONE_SSH_PREV_COMMAND_EXIT_CODE -ne 0 ]; then exit $DRONE_SSH_PREV_COMMAND_EXIT_CODE; fi;", "mkdir b", "DRONE_SSH_PREV_COMMAND_EXIT_CODE=$? ; if [ $DRONE_SSH_PREV_COMMAND_EXIT_CODE -ne 0 ]; then exit $DRONE_SSH_PREV_COMMAND_EXIT_CODE; fi;"}, }, + // See: https://github.com/appleboy/ssh-action/issues/75#issuecomment-668314271 + { + name: "Multiline SSH commands interpreted as single lines", + fields: fields{ + Config: Config{ + Script: []string{"ls \\ ", "-lah", "mkdir a"}, + ScriptStop: true, + }, + }, + want: []string{"ls \\", "-lah", "DRONE_SSH_PREV_COMMAND_EXIT_CODE=$? ; if [ $DRONE_SSH_PREV_COMMAND_EXIT_CODE -ne 0 ]; then exit $DRONE_SSH_PREV_COMMAND_EXIT_CODE; fi;", "mkdir a", "DRONE_SSH_PREV_COMMAND_EXIT_CODE=$? ; if [ $DRONE_SSH_PREV_COMMAND_EXIT_CODE -ne 0 ]; then exit $DRONE_SSH_PREV_COMMAND_EXIT_CODE; fi;"}, + }, { name: "trim space", fields: fields{