E2E delete command using list API (#4)

* Completed List cmd and added API calls

* Minor comments and add delete code to pass linting

* Typo in descriptions

* Added delete functionality using existing list API

* Updated limit param for list api to default 30

* Minor refactoring

* Linting fixes for survey output

* Implemented review comments

* Handling 404 response when confirm flag is passed

* Added COMMAND back to delete CLI

* Minor comments

* Check http err statuscode for 404

* Validations

* Validations-1

* improved branch flag validation

* removed build

* String match made case insensitive

* Added TODO for error handling

* Updated error message when args are not provided

* Worked on review comments

* Argument length check updated

* Separated direct and indirect dependencies

* Used SPrintF for formatting strings

* Updated lastAccessed time logic

* Removed extra variable userConfirmation

* Removed unnecessary computations

* Printing and formatting changes

* Passed key from input in queryparams

* Scan List API iteratively to get exact matches

* Added pretty print for trimmed list

* Update page number instead of re-generating params

* Added listAllCaches method and moved it to utils

* Moved redTick to utils

* Update internal/utils.go

Co-authored-by: Bishal Prasad <bishal-pdmsft@github.com>

* Limited scope of `sb` to `if` block

* Fixed pretty print issue

* Error type checked for httpError

* Added PrintOneOrMore fn, moved listAll to service

* Implemented `Goment` for last accessed time

* Used percentage based on window size for printing

* Removed stringbuilder and updated fn name

* Made `ListAllCaches` member of `actions_cache.go`

* Updated prettyPrint logic cover better content

* Using PrettyPrint for List command as well.

* Separated direct and indirect modules

Co-authored-by: t-dedah <t-dedah@github.com>
Co-authored-by: Deepak Dahiya <59823596+t-dedah@users.noreply.github.com>
Co-authored-by: Bishal Prasad <bishal-pdmsft@github.com>
This commit is contained in:
Sankalp Kotewar
2022-06-28 14:40:11 +05:30
committed by GitHub
parent 9e752991d6
commit c98ebfe90b
8 changed files with 269 additions and 61 deletions

View File

@@ -1,9 +1,12 @@
package service
import (
"errors"
"fmt"
"log"
"math"
"net/url"
"strconv"
"github.com/actions/gh-actions-cache/types"
gh "github.com/cli/go-gh"
@@ -15,6 +18,7 @@ type ArtifactCacheService interface {
GetCacheUsage() float64
ListCaches(queryParams url.Values) types.ListApiResponse
DeleteCaches(queryParams url.Values) int
ListAllCaches(queryParams url.Values, key string) []types.ActionsCache
}
type ArtifactCache struct {
@@ -61,8 +65,27 @@ func (a *ArtifactCache) DeleteCaches(queryParams url.Values) int {
var apiResults types.DeleteApiResponse
err := a.HttpClient.Delete(pathComponent+"?"+queryParams.Encode(), &apiResults)
if err != nil {
log.Fatal(err)
var httpError api.HTTPError
if errors.As(err, &httpError) && httpError.StatusCode == 404 {
return 0
} else {
log.Fatal(err)
}
}
return apiResults.TotalCount
}
func (a *ArtifactCache) ListAllCaches(queryParams url.Values, key string) []types.ActionsCache {
var listApiResponse types.ListApiResponse
listApiResponse = a.ListCaches(queryParams)
caches := listApiResponse.ActionsCaches
totalCaches := listApiResponse.TotalCount
if totalCaches > 100 {
for page := 2; page <= int(math.Ceil(float64(listApiResponse.TotalCount)/100)); page++ {
queryParams.Set("page", strconv.Itoa(page))
listApiResponse = a.ListCaches(queryParams)
caches = append(caches, listApiResponse.ActionsCaches...)
}
}
return caches
}