File: exit_code.go

package info (click to toggle)
packer 1.6.6%2Bds2-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 33,156 kB
  • sloc: sh: 1,154; python: 619; makefile: 251; ruby: 205; xml: 97
file content (39 lines) | stat: -rw-r--r-- 729 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package shell

import "fmt"

func (p *Provisioner) ValidExitCode(code int) error {
	// Check exit code against allowed codes (likely just 0)
	validCodes := p.ValidExitCodes
	if len(validCodes) == 0 {
		validCodes = []int{0}
	}
	validExitCode := false
	for _, v := range validCodes {
		if code == v {
			validExitCode = true
			break
		}
	}
	if !validExitCode {
		return &ErrorInvalidExitCode{
			Code:    code,
			Allowed: validCodes,
		}
	}
	return nil
}

type ErrorInvalidExitCode struct {
	Code    int
	Allowed []int
}

func (e *ErrorInvalidExitCode) Error() string {
	if e == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Script exited with non-zero exit status: %d."+
		"Allowed exit codes are: %v",
		e.Code, e.Allowed)
}