feat: Add cache key option to gh cache list
Add `key` option to `gh cache list` command. ``` -K, --key string Filter by cache key prefix ``` > An explicit key or prefix for identifying the cache ref. https://docs.github.com/en/rest/actions/cache?apiVersion=2022-11-28#list-github-actions-caches-for-a-repository - Add key option related tests to `TestNewCmdList`
This commit is contained in:
parent
201842d75c
commit
8252e59f17
3 changed files with 23 additions and 1 deletions
4
pkg/cmd/cache/list/list.go
vendored
4
pkg/cmd/cache/list/list.go
vendored
|
|
@ -27,6 +27,7 @@ type ListOptions struct {
|
|||
Limit int
|
||||
Order string
|
||||
Sort string
|
||||
Key string
|
||||
}
|
||||
|
||||
func NewCmdList(f *cmdutil.Factory, runF func(*ListOptions) error) *cobra.Command {
|
||||
|
|
@ -69,6 +70,7 @@ func NewCmdList(f *cmdutil.Factory, runF func(*ListOptions) error) *cobra.Comman
|
|||
cmd.Flags().IntVarP(&opts.Limit, "limit", "L", 30, "Maximum number of caches to fetch")
|
||||
cmdutil.StringEnumFlag(cmd, &opts.Order, "order", "O", "desc", []string{"asc", "desc"}, "Order of caches returned")
|
||||
cmdutil.StringEnumFlag(cmd, &opts.Sort, "sort", "S", "last_accessed_at", []string{"created_at", "last_accessed_at", "size_in_bytes"}, "Sort fetched caches")
|
||||
cmd.Flags().StringVarP(&opts.Key, "key", "K", "", "Filter by cache key prefix")
|
||||
cmdutil.AddJSONFlags(cmd, &opts.Exporter, shared.CacheFields)
|
||||
|
||||
return cmd
|
||||
|
|
@ -87,7 +89,7 @@ func listRun(opts *ListOptions) error {
|
|||
client := api.NewClientFromHTTP(httpClient)
|
||||
|
||||
opts.IO.StartProgressIndicator()
|
||||
result, err := shared.GetCaches(client, repo, shared.GetCachesOptions{Limit: opts.Limit, Sort: opts.Sort, Order: opts.Order})
|
||||
result, err := shared.GetCaches(client, repo, shared.GetCachesOptions{Limit: opts.Limit, Sort: opts.Sort, Order: opts.Order, Key: opts.Key})
|
||||
opts.IO.StopProgressIndicator()
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s Failed to get caches: %w", opts.IO.ColorScheme().FailureIcon(), err)
|
||||
|
|
|
|||
15
pkg/cmd/cache/list/list_test.go
vendored
15
pkg/cmd/cache/list/list_test.go
vendored
|
|
@ -30,6 +30,7 @@ func TestNewCmdList(t *testing.T) {
|
|||
Limit: 30,
|
||||
Order: "desc",
|
||||
Sort: "last_accessed_at",
|
||||
Key: "",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -39,6 +40,7 @@ func TestNewCmdList(t *testing.T) {
|
|||
Limit: 100,
|
||||
Order: "desc",
|
||||
Sort: "last_accessed_at",
|
||||
Key: "",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -53,6 +55,7 @@ func TestNewCmdList(t *testing.T) {
|
|||
Limit: 30,
|
||||
Order: "desc",
|
||||
Sort: "created_at",
|
||||
Key: "",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -62,6 +65,17 @@ func TestNewCmdList(t *testing.T) {
|
|||
Limit: 30,
|
||||
Order: "asc",
|
||||
Sort: "last_accessed_at",
|
||||
Key: "",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "with key",
|
||||
input: "--key cache-key-prefix-",
|
||||
wants: ListOptions{
|
||||
Limit: 30,
|
||||
Order: "desc",
|
||||
Sort: "last_accessed_at",
|
||||
Key: "cache-key-prefix-",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -90,6 +104,7 @@ func TestNewCmdList(t *testing.T) {
|
|||
assert.Equal(t, tt.wants.Limit, gotOpts.Limit)
|
||||
assert.Equal(t, tt.wants.Sort, gotOpts.Sort)
|
||||
assert.Equal(t, tt.wants.Order, gotOpts.Order)
|
||||
assert.Equal(t, tt.wants.Key, gotOpts.Key)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
5
pkg/cmd/cache/shared/shared.go
vendored
5
pkg/cmd/cache/shared/shared.go
vendored
|
|
@ -2,6 +2,7 @@ package shared
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/cli/cli/v2/api"
|
||||
|
|
@ -38,6 +39,7 @@ type GetCachesOptions struct {
|
|||
Limit int
|
||||
Order string
|
||||
Sort string
|
||||
Key string
|
||||
}
|
||||
|
||||
// Return a list of caches for a repository. Pass a negative limit to request
|
||||
|
|
@ -57,6 +59,9 @@ func GetCaches(client *api.Client, repo ghrepo.Interface, opts GetCachesOptions)
|
|||
if opts.Order != "" {
|
||||
path += fmt.Sprintf("&direction=%s", opts.Order)
|
||||
}
|
||||
if opts.Key != "" {
|
||||
path += fmt.Sprintf("&key=%s", url.QueryEscape(opts.Key))
|
||||
}
|
||||
|
||||
var result *CachePayload
|
||||
pagination:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue