podman
1// Copyright 2019 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package packages
6
7import (
8"fmt"
9"strings"
10)
11
12var allModes = []LoadMode{
13NeedName,
14NeedFiles,
15NeedCompiledGoFiles,
16NeedImports,
17NeedDeps,
18NeedExportFile,
19NeedTypes,
20NeedSyntax,
21NeedTypesInfo,
22NeedTypesSizes,
23}
24
25var modeStrings = []string{
26"NeedName",
27"NeedFiles",
28"NeedCompiledGoFiles",
29"NeedImports",
30"NeedDeps",
31"NeedExportFile",
32"NeedTypes",
33"NeedSyntax",
34"NeedTypesInfo",
35"NeedTypesSizes",
36}
37
38func (mod LoadMode) String() string {
39m := mod
40if m == 0 {
41return "LoadMode(0)"
42}
43var out []string
44for i, x := range allModes {
45if x > m {
46break
47}
48if (m & x) != 0 {
49out = append(out, modeStrings[i])
50m = m ^ x
51}
52}
53if m != 0 {
54out = append(out, "Unknown")
55}
56return fmt.Sprintf("LoadMode(%s)", strings.Join(out, "|"))
57}
58