zotregistry.io/zot@v1.4.4-0.20231124084042-02a8ed785457/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.io/zot/errors" 11 "zotregistry.io/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 ) 26 27 const ( 28 SortByRelevance = "relevance" 29 SortByUpdateTime = "update-time" 30 SortByAlphabeticAsc = "alpha-asc" 31 SortByAlphabeticDsc = "alpha-dsc" 32 SortBySeverity = "severity" 33 ) 34 35 const stringType = "string" 36 37 func ImageListSortOptions() []string { 38 return []string{SortByUpdateTime, SortByAlphabeticAsc, SortByAlphabeticDsc} 39 } 40 41 func ImageListSortOptionsStr() string { 42 return strings.Join(ImageListSortOptions(), ", ") 43 } 44 45 func ImageSearchSortOptions() []string { 46 return []string{SortByRelevance, SortByUpdateTime, SortByAlphabeticAsc, SortByAlphabeticDsc} 47 } 48 49 func ImageSearchSortOptionsStr() string { 50 return strings.Join(ImageSearchSortOptions(), ", ") 51 } 52 53 func CVEListSortOptions() []string { 54 return []string{SortByAlphabeticAsc, SortByAlphabeticDsc, SortBySeverity} 55 } 56 57 func CVEListSortOptionsStr() string { 58 return strings.Join(CVEListSortOptions(), ", ") 59 } 60 61 func RepoListSortOptions() []string { 62 return []string{SortByAlphabeticAsc, SortByAlphabeticDsc} 63 } 64 65 func RepoListSortOptionsStr() string { 66 return strings.Join(RepoListSortOptions(), ", ") 67 } 68 69 func Flag2SortCriteria(sortBy string) string { 70 switch sortBy { 71 case SortByRelevance: 72 return "RELEVANCE" 73 case SortByUpdateTime: 74 return "UPDATE_TIME" 75 case SortByAlphabeticAsc: 76 return "ALPHABETIC_ASC" 77 case SortByAlphabeticDsc: 78 return "ALPHABETIC_DSC" 79 case SortBySeverity: 80 return "SEVERITY" 81 default: 82 return "BAD_SORT_CRITERIA" 83 } 84 } 85 86 type CVEListSortFlag string 87 88 func (e *CVEListSortFlag) String() string { 89 return string(*e) 90 } 91 92 func (e *CVEListSortFlag) Set(val string) error { 93 if !common.Contains(CVEListSortOptions(), val) { 94 return fmt.Errorf("%w %s", zerr.ErrFlagValueUnsupported, CVEListSortOptionsStr()) 95 } 96 97 *e = CVEListSortFlag(val) 98 99 return nil 100 } 101 102 func (e *CVEListSortFlag) Type() string { 103 return stringType 104 } 105 106 type ImageListSortFlag string 107 108 func (e *ImageListSortFlag) String() string { 109 return string(*e) 110 } 111 112 func (e *ImageListSortFlag) Set(val string) error { 113 if !common.Contains(ImageListSortOptions(), val) { 114 return fmt.Errorf("%w %s", zerr.ErrFlagValueUnsupported, ImageListSortOptionsStr()) 115 } 116 117 *e = ImageListSortFlag(val) 118 119 return nil 120 } 121 122 func (e *ImageListSortFlag) Type() string { 123 return stringType 124 } 125 126 type ImageSearchSortFlag string 127 128 func (e *ImageSearchSortFlag) String() string { 129 return string(*e) 130 } 131 132 func (e *ImageSearchSortFlag) Set(val string) error { 133 if !common.Contains(ImageSearchSortOptions(), val) { 134 return fmt.Errorf("%w %s", zerr.ErrFlagValueUnsupported, ImageSearchSortOptionsStr()) 135 } 136 137 *e = ImageSearchSortFlag(val) 138 139 return nil 140 } 141 142 func (e *ImageSearchSortFlag) Type() string { 143 return stringType 144 } 145 146 type RepoListSortFlag string 147 148 func (e *RepoListSortFlag) String() string { 149 return string(*e) 150 } 151 152 func (e *RepoListSortFlag) Set(val string) error { 153 if !common.Contains(RepoListSortOptions(), val) { 154 return fmt.Errorf("%w %s", zerr.ErrFlagValueUnsupported, RepoListSortOptionsStr()) 155 } 156 157 *e = RepoListSortFlag(val) 158 159 return nil 160 } 161 162 func (e *RepoListSortFlag) Type() string { 163 return stringType 164 }