Repository navigation
Expand file tree
/
Copy pathexit_code_option.go
More file actions
59 lines (48 loc) · 1.62 KB
/
Copy pathexit_code_option.go
File metadata and controls
59 lines (48 loc) · 1.62 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
Copyright 2022 The Katanomi Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package options
import (
"fmt"
"os"
"strings"
"github.com/spf13/pflag"
)
// ExitCodeOption adds a generic option to store different cli paths
type ExitCodeOption struct {
// ExitCodePath direct path for exitCodefile
ExitCodePath string
// FlagName to be used to store
FlagName string
}
// AddFlags adds flags for option
func (p *ExitCodeOption) AddFlags(flags *pflag.FlagSet) {
if p.FlagName == "" {
p.FlagName = "exit-code-path"
}
flags.StringVar(&p.ExitCodePath, p.FlagName, "", "specify the exit status code to save the file.")
}
// Succeed judging whether the execution status is successful or not according to the exit file.
func (m *ExitCodeOption) Succeed() (bool, string, error) {
if m.ExitCodePath == "" {
return false, "", fmt.Errorf("exit code file not set")
}
data, err := os.ReadFile(m.ExitCodePath)
if err != nil {
return false, "", fmt.Errorf("failed to read exit code file[%s], error: %s", m.ExitCodePath, err.Error())
}
code := string(data)
if code != "" && strings.TrimSpace(code) != "0" {
return false, code, nil
}
return true, code, nil
}