From 7fef5ed4877f382509154127e899cf629624e777 Mon Sep 17 00:00:00 2001 From: Wenbo Han Date: Sun, 9 Jun 2024 17:53:43 +0800 Subject: [PATCH] release: v1.2.0 (#39) * release: v1.2.0 * release: v1.2.0 * update mod * remove codecov, don't over cloudinary limit --- .github/workflows/codecov.yml | 27 ------ .github/workflows/test.yml | 2 +- README.md | 8 +- cloudinary.go | 11 ++- cloudinary_test.go | 26 +++-- go.mod | 45 ++------- go.sum | 175 ++++------------------------------ logo.png | Bin 15182 -> 10853 bytes 8 files changed, 64 insertions(+), 230 deletions(-) delete mode 100644 .github/workflows/codecov.yml diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml deleted file mode 100644 index b4776f8..0000000 --- a/.github/workflows/codecov.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Codecov -on: - push: - branches: - - master - pull_request: -env: - CLOUDINARY_ACCESS_KEY_ID: ${{ secrets.CLOUDINARY_ACCESS_KEY_ID }} - CLOUDINARY_ACCESS_KEY_SECRET: ${{ secrets.CLOUDINARY_ACCESS_KEY_SECRET }} - CLOUDINARY_CLOUD: ${{ secrets.CLOUDINARY_CLOUD }} -jobs: - codecov: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: 'stable' - - name: Install dependencies 📦 - run: go mod tidy - - name: Run tests with coverage ✅ - run: go test -v -coverprofile="coverage.out" ./... - - name: Upload coverage report to Codecov 📝 - uses: codecov/codecov-action@v4 - with: - file: ./coverage.out - token: ${{ secrets.CODECOV }} \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 29ec9b7..c837645 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: test: strategy: matrix: - go: [ '1.20' ] + go: [ '1.21' ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index 0074ab3..d8b607b 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,10 @@ A cloudinary driver for `facades.Storage()` of Goravel. ## Version -| goravel/cloudinary | cloudinary | goravel/framework | -|--------------------|------------|-------------------| -| v1.1.* | v2.4.0 | v1.13.* | +| goravel/cloudinary | goravel/framework | +|--------------------|-------------------| +| v1.2.* | v1.14.* | +| v1.1.* | v1.13.* | ## Install @@ -29,6 +30,7 @@ import "github.com/goravel/cloudinary" ``` 3. Add cloudinary disk to `config/filesystems.go` file + ```go // config/filesystems.go ... diff --git a/cloudinary.go b/cloudinary.go index c9d7826..ae44da3 100644 --- a/cloudinary.go +++ b/cloudinary.go @@ -199,13 +199,22 @@ func (r *Cloudinary) Files(path string) ([]string, error) { // Get returns the contents of a file. func (r *Cloudinary) Get(file string) (string, error) { - rawContent, err := GetRawContent(r.Url(file)) + rawContent, err := r.GetBytes(file) if err != nil { return "", err } return string(rawContent), nil } +// GetBytes returns the byte of a file. +func (r *Cloudinary) GetBytes(file string) ([]byte, error) { + rawContent, err := GetRawContent(r.Url(file)) + if err != nil { + return nil, err + } + return rawContent, nil +} + // LastModified returns the last modified time of a file. func (r *Cloudinary) LastModified(file string) (time.Time, error) { resource, err := r.getAsset(file) diff --git a/cloudinary_test.go b/cloudinary_test.go index 2193723..7420db6 100644 --- a/cloudinary_test.go +++ b/cloudinary_test.go @@ -13,8 +13,8 @@ import ( "time" "github.com/gookit/color" - configmocks "github.com/goravel/framework/contracts/config/mocks" - contractsfilesystem "github.com/goravel/framework/contracts/filesystem" + filesystemcontract "github.com/goravel/framework/contracts/filesystem" + configmock "github.com/goravel/framework/mocks/config" "github.com/goravel/framework/support/carbon" "github.com/stretchr/testify/assert" ) @@ -27,12 +27,12 @@ func TestStorage(t *testing.T) { assert.Nil(t, os.WriteFile("test.txt", []byte("Goravel"), 0644)) - mockConfig := &configmocks.Config{} + mockConfig := &configmock.Config{} mockConfig.On("GetString", "filesystems.disks.cloudinary.key").Return(os.Getenv("CLOUDINARY_ACCESS_KEY_ID")) mockConfig.On("GetString", "filesystems.disks.cloudinary.secret").Return(os.Getenv("CLOUDINARY_ACCESS_KEY_SECRET")) mockConfig.On("GetString", "filesystems.disks.cloudinary.cloud").Return(os.Getenv("CLOUDINARY_CLOUD")) - var driver contractsfilesystem.Driver + var driver filesystemcontract.Driver randNum, err := rand.Int(rand.Reader, big.NewInt(1000)) rootFolder := randNum.String() + "/" assert.Nil(t, err) @@ -200,6 +200,20 @@ func TestStorage(t *testing.T) { assert.Nil(t, driver.DeleteDirectory(rootFolder+"Get")) }, }, + { + name: "GetBytes", + setup: func() { + assert.Nil(t, driver.Put("GetBytes/1.txt", "Goravel")) + assert.True(t, driver.Exists("GetBytes/1.txt")) + data, err := driver.GetBytes("GetBytes/1.txt") + assert.Nil(t, err) + assert.Equal(t, []byte("Goravel"), data) + length, err := driver.Size("GetBytes/1.txt") + assert.Nil(t, err) + assert.Equal(t, int64(7), length) + assert.Nil(t, driver.DeleteDirectory("GetBytes")) + }, + }, { name: "LastModified", setup: func() { @@ -211,7 +225,7 @@ func TestStorage(t *testing.T) { l, err := time.LoadLocation("UTC") assert.Nil(t, err) - assert.Equal(t, carbon.Now().ToStdTime().In(l).Format("2006-01-02 15"), date.Format("2006-01-02 15")) + assert.Equal(t, carbon.Now().StdTime().In(l).Format("2006-01-02 15"), date.Format("2006-01-02 15")) assert.Nil(t, driver.DeleteDirectory(rootFolder+"LastModified")) }, }, @@ -383,7 +397,7 @@ type File struct { path string } -func (f *File) Disk(disk string) contractsfilesystem.File { +func (f *File) Disk(disk string) filesystemcontract.File { return &File{} } diff --git a/go.mod b/go.mod index 4d353b1..d9d74cd 100644 --- a/go.mod +++ b/go.mod @@ -1,56 +1,29 @@ module github.com/goravel/cloudinary -go 1.20 +go 1.21 require ( github.com/cloudinary/cloudinary-go/v2 v2.7.0 github.com/gookit/color v1.5.4 - github.com/goravel/framework v1.13.1 + github.com/goravel/framework v1.14.0 github.com/stretchr/testify v1.9.0 golang.org/x/net v0.26.0 ) require ( - github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect - github.com/cenkalti/backoff/v4 v4.2.0 // indirect - github.com/containerd/continuity v0.3.0 // indirect github.com/creasty/defaults v1.5.1 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/cli v20.10.22+incompatible // indirect - github.com/docker/docker v20.10.24+incompatible // indirect - github.com/docker/go-connections v0.4.0 // indirect - github.com/docker/go-units v0.5.0 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-module/carbon/v2 v2.2.6 // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/golang-module/carbon/v2 v2.3.12 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/gorilla/schema v1.2.0 // indirect - github.com/imdario/mergo v0.3.13 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/moby/term v0.5.0 // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.2 // indirect - github.com/opencontainers/runc v1.1.5 // indirect - github.com/ory/dockertest/v3 v3.10.0 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect - google.golang.org/grpc v1.58.0 // indirect - google.golang.org/protobuf v1.31.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/grpc v1.64.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 232344b..9070e48 100644 --- a/go.sum +++ b/go.sum @@ -1,101 +1,30 @@ -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/bytedance/sonic v1.10.0 h1:qtNZduETEIWJVIyDl01BeNxur2rW9OwTQ/yBqFRkKEk= -github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= -github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= -github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0= -github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/cloudinary/cloudinary-go/v2 v2.7.0 h1:8Fuh/SOen6IQgqH8CLso2E+kuKi2xjbdiyXOspwXFTM= github.com/cloudinary/cloudinary-go/v2 v2.7.0/go.mod h1:jtSxa6xbzvu4IwChRJVDcXwVXrTRczhbvq3Z1VSoFdk= -github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= -github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creasty/defaults v1.5.1 h1:j8WexcS3d/t4ZmllX4GEkl4wIB/trOr035ajcLHCISM= github.com/creasty/defaults v1.5.1/go.mod h1:FPZ+Y0WNrbqOVw+c6av63eyHUAl6pMHZwqLPvXUZGfY= -github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/cli v20.10.22+incompatible h1:0E7UqWPcn4SlvLImMHyh6xwyNRUGdPxhstpHeh0bFL0= -github.com/docker/cli v20.10.22+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/docker v20.10.24+incompatible h1:Ugvxm7a8+Gz6vqQYQQ2W7GYq5EUPaAiuPgIfVyI3dYE= -github.com/docker/docker v20.10.24+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-module/carbon/v2 v2.2.6 h1:4nHkIx7A7d+aoRDAGLwxZEJWAAZpmH5Bm/pVUl58FXI= -github.com/golang-module/carbon/v2 v2.2.6/go.mod h1:XDALX7KgqmHk95xyLeaqX9/LJGbfLATyruTziq68SZ8= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/golang-module/carbon/v2 v2.3.12 h1:VC1DwN1kBwJkh5MjXmTFryjs5g4CWyoM8HAHffZPX/k= +github.com/golang-module/carbon/v2 v2.3.12/go.mod h1:HNsedGzXGuNciZImYP2OMnpiwq/vhIstR/vn45ib5cI= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= -github.com/goravel/framework v1.13.1 h1:3VM0ZEqbPtHN5llrtB1Mtw9Vr4VK/wPcupzNU7dreSs= -github.com/goravel/framework v1.13.1/go.mod h1:CKsMPL8D72wKEZILHUo8Zzi6I9GDW424GpoLAMlB9b8= +github.com/goravel/framework v1.14.0 h1:UhlFBTLkLJwKgJTCSmnExXmBkgQsP0RTvQnE0+1m7DA= +github.com/goravel/framework v1.14.0/go.mod h1:rScDXGQZdoVfyxemNPmijlz/2a+lWNOa4jTuak5GGVg= github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/heimdalr/dag v1.0.1/go.mod h1:t+ZkR+sjKL4xhlE1B9rwpvwfo+x+2R0363efS+Oghns= -github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= -github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= -github.com/ory/dockertest/v3 v3.10.0 h1:4K3z2VMe8Woe++invjaTB7VRyQXQy5UY+loujO4aNE4= -github.com/ory/dockertest/v3 v3.10.0/go.mod h1:nr57ZbRWMqfsdGdFNLHz5jjNdDb7VVFnzAeW1n5N1Lg= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -103,8 +32,6 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -112,89 +39,25 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 h1:MDc5xs78ZrZr3HMQugiXOAkSZtfTpbJLDr/lwfgO53E= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= -google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.3.0 h1:MfDY1b1/0xN1CyMlQDac0ziEy9zJQd9CXBRRDHw2jJo= diff --git a/logo.png b/logo.png index 1d68459eee7363c2c401e57baf58c983de5feeec..2103c8d67a2265ba1ddd2ebf1cec71028d2b0d42 100644 GIT binary patch literal 10853 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 BBai?9 literal 15182 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