Files
gh-actions-cache/types/options.go
Sankalp Kotewar 8365ebe619 Bugbash fixes and refactoring (#14)
* Completed List cmd and added API calls

* Minor comments and add delete code to pass linting

* Typo in descriptions

* Minor comments

* Validations

* Validations-1

* improved branch flag validation

* removed build

* working after refactory with bad names

* Command working, test not working

* Corrected creation of service

* Finalized structure using service

* Deleted tests

* cleanup

* cleanup

* cleanup

* removed space with tab

* aligned types in model.go

* Update model.go

* resolved comments

* Refactor

* removed long descriptions

* Working incomplete tests

* Completed tests

* cleanup

* checks

* PR comments

* PR comments

* minor comment issue

* minor comment issue

* Added test cases for Delete

* updated tests to work with workflow

* Added missing error condition

* Updated tests to support new option service

* Improved eror handling for list

* Fixed test case

* Improved error handling

* Error handling and test cases for delete API calls

* Added test case for user confirmation delete.

* Removed unused import from test

* Fixed test case for error scenario

* Upgraded go-gh

* reusing rest client error

* Fix for failing windows test cases

* help cmd removed when cache isnt present on delete

* Pretty print ratio and space between cols modified

* Error handling wrapping

* Reverted back error message after silencing help

* Bugbash fixes for int limit, zero cache list msg

* Test case fixes for error message changes

* Handling no cache list scenario with(out) key

* Minor Refactoring and avoided code duplication

* Removed unused inputs after resolving conflicts

* Formatted test file

* removed err5xx as they all have same value.

* Removed err5xx from list as well

* Help and error message enhancements for list.

* changing commandname to avoid conflicts

* Ran `go fmt` formatter against all .go files

* Removed command from root.go

* Updated version to 1.0.0

Co-authored-by: t-dedah <t-dedah@github.com>
Co-authored-by: Deepak Dahiya <59823596+t-dedah@users.noreply.github.com>
2022-07-18 14:51:28 +05:30

79 lines
1.6 KiB
Go

package types
import (
"fmt"
"net/url"
"strconv"
"strings"
)
var SORT_INPUT_TO_QUERY_MAP = map[string]string{
"created-at": "created_at",
"last-used": "last_accessed_at",
"size": "size_in_bytes",
}
type BaseOptions struct {
Repo string
Branch string
Key string
}
type ListOptions struct {
BaseOptions
Limit int
Order string
Sort string
}
type DeleteOptions struct {
BaseOptions
Confirm bool
}
func (o *ListOptions) Validate() error {
if o.Order != "" && o.Order != "asc" && o.Order != "desc" {
return fmt.Errorf(fmt.Sprintf("%s is not a valid value for order flag. Allowed values: asc/desc", o.Order))
}
if o.Sort != "" && o.Sort != "last-used" && o.Sort != "size" && o.Sort != "created-at" {
return fmt.Errorf(fmt.Sprintf("%s is not a valid value for sort flag. Allowed values: last-used/size/created-at", o.Sort))
}
if o.Limit < 1 || o.Limit > 100 {
return fmt.Errorf(fmt.Sprintf("%d is not a valid integer value for limit flag. Allowed values: 1-100", o.Limit))
}
return nil
}
func (o *BaseOptions) GenerateBaseQueryParams(query url.Values) {
if o.Branch != "" {
if strings.HasPrefix(o.Branch, "refs/") {
query.Add("ref", o.Branch)
} else {
query.Add("ref", fmt.Sprintf("refs/heads/%s", o.Branch))
}
}
if o.Key != "" {
query.Add("key", o.Key)
}
}
func (o *ListOptions) GenerateQueryParams(query url.Values) {
if o.Limit != 30 {
query.Add("per_page", strconv.Itoa(o.Limit))
}
if o.Order != "" {
query.Add("direction", o.Order)
}
if o.Sort != "" {
query.Add("sort", SORT_INPUT_TO_QUERY_MAP[o.Sort])
}
o.GenerateBaseQueryParams(query)
}