mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-25 07:40:19 +00:00
171ba6a65d
Bumps the github-dependencies group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/IBM/keyprotect-go-client](https://github.com/IBM/keyprotect-go-client) | `0.12.2` | `0.14.1` | | [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) | `1.53.14` | `1.54.6` | | [github.com/aws/aws-sdk-go-v2/service/sts](https://github.com/aws/aws-sdk-go-v2) | `1.28.1` | `1.29.1` | | [github.com/hashicorp/vault/api](https://github.com/hashicorp/vault) | `1.12.0` | `1.14.0` | | [github.com/kubernetes-csi/csi-lib-utils](https://github.com/kubernetes-csi/csi-lib-utils) | `0.17.0` | `0.18.1` | | [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) | `2.17.1` | `2.19.0` | | [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) | `1.18.0` | `1.19.1` | | [github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go) | `1.6.0` | `1.7.0` | Updates `github.com/IBM/keyprotect-go-client` from 0.12.2 to 0.14.1 - [Release notes](https://github.com/IBM/keyprotect-go-client/releases) - [Changelog](https://github.com/IBM/keyprotect-go-client/blob/master/CHANGELOG.md) - [Commits](https://github.com/IBM/keyprotect-go-client/compare/v0.12.2...v0.14.1) Updates `github.com/aws/aws-sdk-go` from 1.53.14 to 1.54.6 - [Release notes](https://github.com/aws/aws-sdk-go/releases) - [Commits](https://github.com/aws/aws-sdk-go/compare/v1.53.14...v1.54.6) Updates `github.com/aws/aws-sdk-go-v2/service/sts` from 1.28.1 to 1.29.1 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ecr/v1.28.1...service/s3/v1.29.1) Updates `github.com/hashicorp/vault/api` from 1.12.0 to 1.14.0 - [Release notes](https://github.com/hashicorp/vault/releases) - [Changelog](https://github.com/hashicorp/vault/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/vault/compare/v1.12.0...v1.14.0) Updates `github.com/kubernetes-csi/csi-lib-utils` from 0.17.0 to 0.18.1 - [Release notes](https://github.com/kubernetes-csi/csi-lib-utils/releases) - [Commits](https://github.com/kubernetes-csi/csi-lib-utils/compare/v0.17.0...v0.18.1) Updates `github.com/onsi/ginkgo/v2` from 2.17.1 to 2.19.0 - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.17.1...v2.19.0) Updates `github.com/onsi/gomega` from 1.32.0 to 1.33.1 - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.32.0...v1.33.1) Updates `github.com/prometheus/client_golang` from 1.18.0 to 1.19.1 - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.18.0...v1.19.1) Updates `github.com/Azure/azure-sdk-for-go/sdk/azidentity` from 1.6.0 to 1.7.0 - [Release notes](https://github.com/Azure/azure-sdk-for-go/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md) - [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.6.0...sdk/azcore/v1.7.0) --- updated-dependencies: - dependency-name: github.com/IBM/keyprotect-go-client dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/aws/aws-sdk-go dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/aws/aws-sdk-go-v2/service/sts dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/hashicorp/vault/api dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/kubernetes-csi/csi-lib-utils dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/Azure/azure-sdk-for-go/sdk/azidentity dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
229 lines
4.1 KiB
Go
229 lines
4.1 KiB
Go
package sprig
|
|
|
|
import (
|
|
"fmt"
|
|
"math"
|
|
"reflect"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// toFloat64 converts 64-bit floats
|
|
func toFloat64(v interface{}) float64 {
|
|
if str, ok := v.(string); ok {
|
|
iv, err := strconv.ParseFloat(str, 64)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
return iv
|
|
}
|
|
|
|
val := reflect.Indirect(reflect.ValueOf(v))
|
|
switch val.Kind() {
|
|
case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:
|
|
return float64(val.Int())
|
|
case reflect.Uint8, reflect.Uint16, reflect.Uint32:
|
|
return float64(val.Uint())
|
|
case reflect.Uint, reflect.Uint64:
|
|
return float64(val.Uint())
|
|
case reflect.Float32, reflect.Float64:
|
|
return val.Float()
|
|
case reflect.Bool:
|
|
if val.Bool() {
|
|
return 1
|
|
}
|
|
return 0
|
|
default:
|
|
return 0
|
|
}
|
|
}
|
|
|
|
func toInt(v interface{}) int {
|
|
//It's not optimal. Bud I don't want duplicate toInt64 code.
|
|
return int(toInt64(v))
|
|
}
|
|
|
|
// toInt64 converts integer types to 64-bit integers
|
|
func toInt64(v interface{}) int64 {
|
|
if str, ok := v.(string); ok {
|
|
iv, err := strconv.ParseInt(str, 10, 64)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
return iv
|
|
}
|
|
|
|
val := reflect.Indirect(reflect.ValueOf(v))
|
|
switch val.Kind() {
|
|
case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int:
|
|
return val.Int()
|
|
case reflect.Uint8, reflect.Uint16, reflect.Uint32:
|
|
return int64(val.Uint())
|
|
case reflect.Uint, reflect.Uint64:
|
|
tv := val.Uint()
|
|
if tv <= math.MaxInt64 {
|
|
return int64(tv)
|
|
}
|
|
// TODO: What is the sensible thing to do here?
|
|
return math.MaxInt64
|
|
case reflect.Float32, reflect.Float64:
|
|
return int64(val.Float())
|
|
case reflect.Bool:
|
|
if val.Bool() {
|
|
return 1
|
|
}
|
|
return 0
|
|
default:
|
|
return 0
|
|
}
|
|
}
|
|
|
|
func max(a interface{}, i ...interface{}) int64 {
|
|
aa := toInt64(a)
|
|
for _, b := range i {
|
|
bb := toInt64(b)
|
|
if bb > aa {
|
|
aa = bb
|
|
}
|
|
}
|
|
return aa
|
|
}
|
|
|
|
func maxf(a interface{}, i ...interface{}) float64 {
|
|
aa := toFloat64(a)
|
|
for _, b := range i {
|
|
bb := toFloat64(b)
|
|
aa = math.Max(aa, bb)
|
|
}
|
|
return aa
|
|
}
|
|
|
|
func min(a interface{}, i ...interface{}) int64 {
|
|
aa := toInt64(a)
|
|
for _, b := range i {
|
|
bb := toInt64(b)
|
|
if bb < aa {
|
|
aa = bb
|
|
}
|
|
}
|
|
return aa
|
|
}
|
|
|
|
func minf(a interface{}, i ...interface{}) float64 {
|
|
aa := toFloat64(a)
|
|
for _, b := range i {
|
|
bb := toFloat64(b)
|
|
aa = math.Min(aa, bb)
|
|
}
|
|
return aa
|
|
}
|
|
|
|
func until(count int) []int {
|
|
step := 1
|
|
if count < 0 {
|
|
step = -1
|
|
}
|
|
return untilStep(0, count, step)
|
|
}
|
|
|
|
func untilStep(start, stop, step int) []int {
|
|
v := []int{}
|
|
|
|
if stop < start {
|
|
if step >= 0 {
|
|
return v
|
|
}
|
|
for i := start; i > stop; i += step {
|
|
v = append(v, i)
|
|
}
|
|
return v
|
|
}
|
|
|
|
if step <= 0 {
|
|
return v
|
|
}
|
|
for i := start; i < stop; i += step {
|
|
v = append(v, i)
|
|
}
|
|
return v
|
|
}
|
|
|
|
func floor(a interface{}) float64 {
|
|
aa := toFloat64(a)
|
|
return math.Floor(aa)
|
|
}
|
|
|
|
func ceil(a interface{}) float64 {
|
|
aa := toFloat64(a)
|
|
return math.Ceil(aa)
|
|
}
|
|
|
|
func round(a interface{}, p int, rOpt ...float64) float64 {
|
|
roundOn := .5
|
|
if len(rOpt) > 0 {
|
|
roundOn = rOpt[0]
|
|
}
|
|
val := toFloat64(a)
|
|
places := toFloat64(p)
|
|
|
|
var round float64
|
|
pow := math.Pow(10, places)
|
|
digit := pow * val
|
|
_, div := math.Modf(digit)
|
|
if div >= roundOn {
|
|
round = math.Ceil(digit)
|
|
} else {
|
|
round = math.Floor(digit)
|
|
}
|
|
return round / pow
|
|
}
|
|
|
|
// converts unix octal to decimal
|
|
func toDecimal(v interface{}) int64 {
|
|
result, err := strconv.ParseInt(fmt.Sprint(v), 8, 64)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
return result
|
|
}
|
|
|
|
func seq(params ...int) string {
|
|
increment := 1
|
|
switch len(params) {
|
|
case 0:
|
|
return ""
|
|
case 1:
|
|
start := 1
|
|
end := params[0]
|
|
if end < start {
|
|
increment = -1
|
|
}
|
|
return intArrayToString(untilStep(start, end+increment, increment), " ")
|
|
case 3:
|
|
start := params[0]
|
|
end := params[2]
|
|
step := params[1]
|
|
if end < start {
|
|
increment = -1
|
|
if step > 0 {
|
|
return ""
|
|
}
|
|
}
|
|
return intArrayToString(untilStep(start, end+increment, step), " ")
|
|
case 2:
|
|
start := params[0]
|
|
end := params[1]
|
|
step := 1
|
|
if end < start {
|
|
step = -1
|
|
}
|
|
return intArrayToString(untilStep(start, end+step, step), " ")
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func intArrayToString(slice []int, delimeter string) string {
|
|
return strings.Trim(strings.Join(strings.Fields(fmt.Sprint(slice)), delimeter), "[]")
|
|
}
|