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:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user