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  }