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  }