Add a '--verbose' flag to the 'zot images' output

- Show individual layers with size and digest under each image
- Include config digest for each image

See example below
```
IMAGE NAME                        TAG                       DIGEST    CONFIG    LAYERS    SIZE
test/godev                        0.4.7                     7d38d8ca  05b9f86e            519MB
                                                                                f824a027  65MB
                                                                                a98af0f5  52MB
                                                                                ba5b2bc4  163MB
                                                                                58b1ca8d  228MB
                                                                                67d798ee  12MB
test/cdev                         test                      2292b4ae  cf6f6c77            280MB
                                                                                f824a027  65MB
                                                                                a98af0f5  52MB
                                                                                ba5b2bc4  163MB
test/cdev                         0.4.7                     2292b4ae  cf6f6c77            280MB
                                                                                f824a027  65MB
                                                                                a98af0f5  52MB
                                                                                ba5b2bc4  163MB

Note the new layers and config fields will be visible in the json/yaml format regardless of the value of the verbose flag
```
This commit is contained in:
Andrei Aaron
2021-05-28 19:27:17 +03:00
committed by Ramkumar Chinchani
parent 519ea75d9a
commit c1dd7878e4
6 changed files with 131 additions and 27 deletions
+5 -3
View File
@@ -18,7 +18,7 @@ func NewImageCommand(searchService SearchService) *cobra.Command {
var servURL, user, outputFormat string
var isSpinner, verifyTLS bool
var isSpinner, verifyTLS, verbose bool
var imageCmd = &cobra.Command{
Use: "images [config-name]",
@@ -70,6 +70,7 @@ func NewImageCommand(searchService SearchService) *cobra.Command {
servURL: &servURL,
user: &user,
outputFormat: &outputFormat,
verbose: &verbose,
spinner: spinnerState{spin, isSpinner},
verifyTLS: &verifyTLS,
resultWriter: cmd.OutOrStdout(),
@@ -86,7 +87,7 @@ func NewImageCommand(searchService SearchService) *cobra.Command {
},
}
setupImageFlags(imageCmd, searchImageParams, &servURL, &user, &outputFormat)
setupImageFlags(imageCmd, searchImageParams, &servURL, &user, &outputFormat, &verbose)
imageCmd.SetUsageTemplate(imageCmd.UsageTemplate() + usageFooter)
return imageCmd
@@ -107,7 +108,7 @@ func parseBooleanConfig(configPath, configName, configParam string) (bool, error
}
func setupImageFlags(imageCmd *cobra.Command, searchImageParams map[string]*string,
servURL, user, outputFormat *string) {
servURL, user, outputFormat *string, verbose *bool) {
searchImageParams["imageName"] = imageCmd.Flags().StringP("name", "n", "", "List image details by name")
searchImageParams["digest"] = imageCmd.Flags().StringP("digest", "d", "",
"List images containing a specific manifest, config, or layer digest")
@@ -115,6 +116,7 @@ func setupImageFlags(imageCmd *cobra.Command, searchImageParams map[string]*stri
imageCmd.Flags().StringVar(servURL, "url", "", "Specify zot server URL if config-name is not mentioned")
imageCmd.Flags().StringVarP(user, "user", "u", "", `User Credentials of zot server in "username:password" format`)
imageCmd.Flags().StringVarP(outputFormat, "output", "o", "", "Specify output format [text/json/yaml]")
imageCmd.Flags().BoolVar(verbose, "verbose", false, "Show verbose output")
}
func searchImage(searchConfig searchConfig) error {