zotregistry.dev/zot@v1.4.4-0.20240314164342-eec277e14d20/pkg/cli/client/flags.go (about) 1 //go:build search 2 // +build search 3 4 package client 5 6 import ( 7 "fmt" 8 "strings" 9 10 zerr "zotregistry.dev/zot/errors" 11 "zotregistry.dev/zot/pkg/common" 12 ) 13 14 const ( 15 URLFlag = "url" 16 ConfigFlag = "config" 17 UserFlag = "user" 18 OutputFormatFlag = "format" 19 FixedFlag = "fixed" 20 VerboseFlag = "verbose" 21 VersionFlag = "version" 22 DebugFlag = "debug" 23 SearchedCVEID = "cve-id" 24 SortByFlag = "sort-by" 25 PlatformFlag = "platform" 26 ) 27 28 const ( 29 SortByRelevance = "relevance" 30 SortByUpdateTime = "update-time" 31 SortByAlphabeticAsc = "alpha-asc" 32 SortByAlphabeticDsc = "alpha-dsc" 33 SortBySeverity = "severity" 34 ) 35 36 const stringType = "string" 37 38 func ImageListSortOptions() []string { 39 return []string{SortByUpdateTime, SortByAlphabeticAsc, SortByAlphabeticDsc} 40 } 41 42 func ImageListSortOptionsStr() string { 43 return strings.Join(ImageListSortOptions(), ", ") 44 } 45 46 func ImageSearchSortOptions() []string { 47 return []string{SortByRelevance, SortByUpdateTime, SortByAlphabeticAsc, SortByAlphabeticDsc} 48 } 49 50 func ImageSearchSortOptionsStr() string { 51 return strings.Join(ImageSearchSortOptions(), ", ") 52 } 53 54 func CVEListSortOptions() []string { 55 return []string{SortByAlphabeticAsc, SortByAlphabeticDsc, SortBySeverity} 56 } 57 58 func CVEListSortOptionsStr() string { 59 return strings.Join(CVEListSortOptions(), ", ") 60 } 61 62 func RepoListSortOptions() []string { 63 return []string{SortByAlphabeticAsc, SortByAlphabeticDsc} 64 } 65 66 func RepoListSortOptionsStr() string { 67 return strings.Join(RepoListSortOptions(), ", ") 68 } 69 70 func Flag2SortCriteria(sortBy string) string { 71 switch sortBy { 72 case SortByRelevance: 73 return "RELEVANCE" 74 case SortByUpdateTime: 75 return "UPDATE_TIME" 76 case SortByAlphabeticAsc: 77 return "ALPHABETIC_ASC" 78 case SortByAlphabeticDsc: 79 return "ALPHABETIC_DSC" 80 case SortBySeverity: 81 return "SEVERITY" 82 default: 83 return "BAD_SORT_CRITERIA" 84 } 85 } 86 87 type CVEListSortFlag string 88 89 func (e *CVEListSortFlag) String() string { 90 return string(*e) 91 } 92 93 func (e *CVEListSortFlag) Set(val string) error { 94 if !common.Contains(CVEListSortOptions(), val) { 95 return fmt.Errorf("%w %s", zerr.ErrFlagValueUnsupported, CVEListSortOptionsStr()) 96 } 97 98 *e = CVEListSortFlag(val) 99 100 return nil 101 } 102 103 func (e *CVEListSortFlag) Type() string { 104 return stringType 105 } 106 107 type ImageListSortFlag string 108 109 func (e *ImageListSortFlag) String() string { 110 return string(*e) 111 } 112 113 func (e *ImageListSortFlag) Set(val string) error { 114 if !common.Contains(ImageListSortOptions(), val) { 115 return fmt.Errorf("%w %s", zerr.ErrFlagValueUnsupported, ImageListSortOptionsStr()) 116 } 117 118 *e = ImageListSortFlag(val) 119 120 return nil 121 } 122 123 func (e *ImageListSortFlag) Type() string { 124 return stringType 125 } 126 127 type ImageSearchSortFlag string 128 129 func (e *ImageSearchSortFlag) String() string { 130 return string(*e) 131 } 132 133 func (e *ImageSearchSortFlag) Set(val string) error { 134 if !common.Contains(ImageSearchSortOptions(), val) { 135 return fmt.Errorf("%w %s", zerr.ErrFlagValueUnsupported, ImageSearchSortOptionsStr()) 136 } 137 138 *e = ImageSearchSortFlag(val) 139 140 return nil 141 } 142 143 func (e *ImageSearchSortFlag) Type() string { 144 return stringType 145 } 146 147 type RepoListSortFlag string 148 149 func (e *RepoListSortFlag) String() string { 150 return string(*e) 151 } 152 153 func (e *RepoListSortFlag) Set(val string) error { 154 if !common.Contains(RepoListSortOptions(), val) { 155 return fmt.Errorf("%w %s", zerr.ErrFlagValueUnsupported, RepoListSortOptionsStr()) 156 } 157 158 *e = RepoListSortFlag(val) 159 160 return nil 161 } 162 163 func (e *RepoListSortFlag) Type() string { 164 return stringType 165 }