mirror of
https://github.com/containers/podman.git
synced 2025-06-20 17:13:43 +08:00
Merge pull request #8276 from Luap99/search-json
Add support for podman search --format json
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
package images
|
package images
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"text/tabwriter"
|
"text/tabwriter"
|
||||||
"text/template"
|
"text/template"
|
||||||
@ -81,7 +82,7 @@ func init() {
|
|||||||
// searchFlags set the flags for the pull command.
|
// searchFlags set the flags for the pull command.
|
||||||
func searchFlags(flags *pflag.FlagSet) {
|
func searchFlags(flags *pflag.FlagSet) {
|
||||||
flags.StringSliceVarP(&searchOptions.Filters, "filter", "f", []string{}, "Filter output based on conditions provided (default [])")
|
flags.StringSliceVarP(&searchOptions.Filters, "filter", "f", []string{}, "Filter output based on conditions provided (default [])")
|
||||||
flags.StringVar(&searchOptions.Format, "format", "", "Change the output format to a Go template")
|
flags.StringVar(&searchOptions.Format, "format", "", "Change the output format to JSON or a Go template")
|
||||||
flags.IntVar(&searchOptions.Limit, "limit", 0, "Limit the number of results")
|
flags.IntVar(&searchOptions.Limit, "limit", 0, "Limit the number of results")
|
||||||
flags.BoolVar(&searchOptions.NoTrunc, "no-trunc", false, "Do not truncate the output")
|
flags.BoolVar(&searchOptions.NoTrunc, "no-trunc", false, "Do not truncate the output")
|
||||||
flags.StringVar(&searchOptions.Authfile, "authfile", auth.GetDefaultAuthFile(), "Path of the authentication file. Use REGISTRY_AUTH_FILE environment variable to override")
|
flags.StringVar(&searchOptions.Authfile, "authfile", auth.GetDefaultAuthFile(), "Path of the authentication file. Use REGISTRY_AUTH_FILE environment variable to override")
|
||||||
@ -135,6 +136,13 @@ func imageSearch(cmd *cobra.Command, args []string) error {
|
|||||||
return errors.Errorf("filters are not applicable to list tags result")
|
return errors.Errorf("filters are not applicable to list tags result")
|
||||||
}
|
}
|
||||||
row = "{{.Name}}\t{{.Tag}}\n"
|
row = "{{.Name}}\t{{.Tag}}\n"
|
||||||
|
case report.IsJSON(searchOptions.Format):
|
||||||
|
prettyJSON, err := json.MarshalIndent(searchReport, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Println(string(prettyJSON))
|
||||||
|
return nil
|
||||||
case cmd.Flags().Changed("format"):
|
case cmd.Flags().Changed("format"):
|
||||||
renderHeaders = parse.HasTable(searchOptions.Format)
|
renderHeaders = parse.HasTable(searchOptions.Format)
|
||||||
row = report.NormalizeFormat(searchOptions.Format)
|
row = report.NormalizeFormat(searchOptions.Format)
|
||||||
|
@ -116,6 +116,14 @@ registries = ['{{.Host}}:{{.Port}}']`
|
|||||||
Expect(search.LineInOutputContains("docker.io/library/alpine")).To(BeTrue())
|
Expect(search.LineInOutputContains("docker.io/library/alpine")).To(BeTrue())
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("podman search format json", func() {
|
||||||
|
search := podmanTest.Podman([]string{"search", "--format", "json", "alpine"})
|
||||||
|
search.WaitWithDefaultTimeout()
|
||||||
|
Expect(search.ExitCode()).To(Equal(0))
|
||||||
|
Expect(search.IsJSONOutputValid()).To(BeTrue())
|
||||||
|
Expect(search.OutputToString()).To(ContainSubstring("docker.io/library/alpine"))
|
||||||
|
})
|
||||||
|
|
||||||
It("podman search no-trunc flag", func() {
|
It("podman search no-trunc flag", func() {
|
||||||
search := podmanTest.Podman([]string{"search", "--no-trunc", "alpine"})
|
search := podmanTest.Podman([]string{"search", "--no-trunc", "alpine"})
|
||||||
search.WaitWithDefaultTimeout()
|
search.WaitWithDefaultTimeout()
|
||||||
|
Reference in New Issue
Block a user