istio

Форк
0
/
sysexits.go 
59 строк · 1.9 Кб
1
// Copyright Istio Authors
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15
package cmd
16

17
import (
18
	"strings"
19

20
	"istio.io/istio/istioctl/pkg/analyze"
21
	"istio.io/istio/istioctl/pkg/util"
22
)
23

24
// Values should try to use sendmail-style values as in <sysexits.h>
25
// See e.g. https://man.openbsd.org/sysexits.3
26
// or `less /usr/includes/sysexits.h` if you're on Linux
27
//
28
// Picking the right range is tricky--there are a lot of reserved ones (see
29
// https://www.tldp.org/LDP/abs/html/exitcodes.html#EXITCODESREF) and then some
30
// used by convention (see sysexits).
31
//
32
// The intention here is to use 64-78 in a way that matches the attempt in
33
// sysexits to signify some error running istioctl, and use 79-125 as custom
34
// error codes for other info that we'd like to use to pass info on.
35
const (
36
	ExitUnknownError   = 1 // for compatibility with existing exit code
37
	ExitIncorrectUsage = 64
38
	ExitDataError      = 65 // some format error with input data
39

40
	// below here are non-zero exit codes that don't indicate an error with istioctl itself
41
	ExitAnalyzerFoundIssues = 79 // istioctl analyze found issues, for CI/CD
42
)
43

44
func GetExitCode(e error) int {
45
	if strings.Contains(e.Error(), "unknown command") {
46
		e = util.CommandParseError{Err: e}
47
	}
48

49
	switch e.(type) {
50
	case util.CommandParseError:
51
		return ExitIncorrectUsage
52
	case analyze.FileParseError:
53
		return ExitDataError
54
	case analyze.AnalyzerFoundIssuesError:
55
		return ExitAnalyzerFoundIssues
56
	default:
57
		return ExitUnknownError
58
	}
59
}
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.