Skip to content

Commit 9846333

Browse files
committed
initial Azure blob storage
1 parent 77a9fab commit 9846333

File tree

16 files changed

+549
-4
lines changed

16 files changed

+549
-4
lines changed

WORKSPACE

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,69 @@ go_repository(
110110
version = "v1.1.0",
111111
)
112112

113+
go_repository(
114+
name = "com_github_azure_azure_sdk_for_go",
115+
importpath = "github.com/Azure/azure-sdk-for-go",
116+
sum = "h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=",
117+
version = "v68.0.0+incompatible",
118+
)
119+
120+
go_repository(
121+
name = "com_github_azure_azure_sdk_for_go_sdk_storage_azblob",
122+
importpath = "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob",
123+
sum = "h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY=",
124+
version = "v1.0.0",
125+
)
126+
127+
go_repository(
128+
name = "com_github_azure_azure_sdk_for_go_sdk_azidentity",
129+
importpath = "github.com/Azure/azure-sdk-for-go/sdk/azidentity",
130+
sum = "h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg=",
131+
version = "v1.3.0",
132+
)
133+
134+
go_repository(
135+
name = "com_github_azure_azure_sdk_for_go_sdk_azcore",
136+
importpath = "github.com/Azure/azure-sdk-for-go/sdk/azcore",
137+
sum = "h1:8kDqDngH+DmVBiCtIjCFTGa7MBnsIOkF9IccInFEbjk=",
138+
version = "v1.6.0",
139+
)
140+
141+
go_repository(
142+
name = "com_github_azuread_microsoft_authentication_library_for_go",
143+
importpath = "github.com/AzureAD/microsoft-authentication-library-for-go",
144+
sum = "h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY=",
145+
version = "v1.0.0",
146+
)
147+
148+
go_repository(
149+
name = "com_github_azure_azure_sdk_for_go_sdk_internal",
150+
importpath = "github.com/Azure/azure-sdk-for-go/sdk/internal",
151+
sum = "h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY=",
152+
version = "v1.3.0",
153+
)
154+
155+
go_repository(
156+
name = "com_github_kylelemons_godebug",
157+
importpath = "github.com/kylelemons/godebug",
158+
sum = "h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=",
159+
version = "v1.1.0",
160+
)
161+
162+
go_repository(
163+
name = "com_github_pkg_browser",
164+
importpath = "github.com/pkg/browser",
165+
sum = "h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=",
166+
version = "v0.0.0-20210911075715-681adbf594b8",
167+
)
168+
169+
go_repository(
170+
name = "com_github_golang_jwt_jwt_v4",
171+
importpath = "github.com/golang-jwt/jwt/v4",
172+
sum = "h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=",
173+
version = "v4.5.0",
174+
)
175+
113176
bazel_skylib_workspace()
114177

115178
load("//:repositories.bzl", "go_repositories")

add-bazel-dep.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
go get $1
12
bazel run //:gazelle -- update-repos $1

go.mod

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ require (
2424
cloud.google.com/go/compute/metadata v0.2.3 // indirect
2525
cloud.google.com/go/iam v1.0.1 // indirect
2626
cloud.google.com/go/pubsub v1.30.1 // indirect
27+
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
28+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 // indirect
29+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 // indirect
30+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect
31+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 // indirect
32+
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect
2733
github.com/aws/aws-sdk-go v1.44.256 // indirect
2834
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 // indirect
2935
github.com/aws/aws-sdk-go-v2/credentials v1.12.21 // indirect
@@ -44,6 +50,7 @@ require (
4450
github.com/felixge/httpsnoop v1.0.2 // indirect
4551
github.com/fsnotify/fsnotify v1.6.0 // indirect
4652
github.com/fsouza/fake-gcs-server v1.45.1 // indirect
53+
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
4754
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
4855
github.com/golang/protobuf v1.5.3 // indirect
4956
github.com/google/go-cmp v0.5.9 // indirect
@@ -60,9 +67,11 @@ require (
6067
github.com/inconshreveable/mousetrap v1.1.0 // indirect
6168
github.com/jmespath/go-jmespath v0.4.0 // indirect
6269
github.com/johannesboyne/gofakes3 v0.0.0-20230506070712-04da935ef877 // indirect
70+
github.com/kylelemons/godebug v1.1.0 // indirect
6371
github.com/magiconair/properties v1.8.7 // indirect
6472
github.com/mitchellh/mapstructure v1.5.0 // indirect
6573
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
74+
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
6675
github.com/pkg/xattr v0.4.9 // indirect
6776
github.com/pmezard/go-difflib v1.0.0 // indirect
6877
github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 // indirect

go.sum

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,18 @@ cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi
5858
cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM=
5959
cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E=
6060
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
61+
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
62+
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
63+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 h1:8kDqDngH+DmVBiCtIjCFTGa7MBnsIOkF9IccInFEbjk=
64+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q=
65+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg=
66+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U=
67+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY=
68+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM=
69+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY=
70+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag=
71+
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY=
72+
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o=
6173
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
6274
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
6375
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
@@ -137,6 +149,8 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME
137149
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
138150
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
139151
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
152+
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
153+
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
140154
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
141155
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
142156
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -257,6 +271,8 @@ github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
257271
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
258272
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
259273
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
274+
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
275+
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
260276
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
261277
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
262278
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
@@ -265,6 +281,8 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua
265281
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
266282
github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
267283
github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
284+
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
285+
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
268286
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
269287
github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
270288
github.com/pkg/xattr v0.4.9 h1:5883YPCtkSd8LFbs13nXplj9g9tlrwoJRjgpgMu1/fE=
@@ -478,6 +496,7 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
478496
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
479497
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
480498
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
499+
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
481500
golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
482501
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
483502
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

internal/cli/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ go_library(
1717
"//internal/metadata",
1818
"//internal/program",
1919
"//internal/stores",
20+
"@com_github_azure_azure_sdk_for_go_sdk_storage_azblob//:azblob",
2021
"@com_github_google_logger//:logger",
2122
"@com_github_spf13_afero//:afero",
2223
"@com_github_spf13_cobra//:cobra",

internal/cli/helpers.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"path/filepath"
99
"strings"
1010

11+
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
1112
"github.com/discentem/cavorite/internal/config"
1213
"github.com/discentem/cavorite/internal/stores"
1314
"github.com/google/logger"
@@ -54,6 +55,17 @@ func initStoreFromConfig(ctx context.Context, cfg config.Config, fsys afero.Fs,
5455
return nil, fmt.Errorf("improper stores.GCSClient init: %v", err)
5556
}
5657
s = stores.Store(gcs)
58+
case stores.StoreTypeAzureBlob:
59+
az, err := stores.NewAzureBlobStore(
60+
ctx,
61+
fsys,
62+
opts,
63+
azblob.ClientOptions{},
64+
)
65+
if err != nil {
66+
return nil, fmt.Errorf("improper stores.AzureBlobStore init: %v", err)
67+
}
68+
s = stores.Store(az)
5769
default:
5870
return nil, fmt.Errorf("type %s is not supported", cfg.StoreType)
5971
}

internal/cli/init.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,17 @@ import (
1414

1515
func initCmd() *cobra.Command {
1616
initCmd := &cobra.Command{
17-
Use: "init",
18-
Short: fmt.Sprintf("Initialize a new %s repo", program.Name),
19-
Long: fmt.Sprintf("Initialize a new %s repo", program.Name),
20-
Args: cobra.ExactArgs(1),
17+
Use: "init",
18+
Short: fmt.Sprintf("Initialize a new %s repo", program.Name),
19+
Long: fmt.Sprintf("Initialize a new %s repo", program.Name),
20+
Args: func(cmd *cobra.Command, args []string) error {
21+
fn := cobra.ExactArgs(1)
22+
err := fn(cmd, args)
23+
if err != nil {
24+
return fmt.Errorf("you must specify a path to a repo you want %s to track", program.Name)
25+
}
26+
return nil
27+
},
2128
PreRunE: initPreExecFn,
2229
RunE: initFn,
2330
}
@@ -99,6 +106,14 @@ func initFn(cmd *cobra.Command, args []string) error {
99106
backendAddress,
100107
opts,
101108
)
109+
case stores.StoreTypeAzureBlob:
110+
cfg = config.InitializeStoreTypeAzureBlob(
111+
cmd.Context(),
112+
fsys,
113+
repoToInit,
114+
backendAddress,
115+
opts,
116+
)
102117
default:
103118
return config.ErrUnsupportedStore
104119
}

internal/cli/root.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/discentem/cavorite/internal/metadata"
99
"github.com/discentem/cavorite/internal/program"
1010
"github.com/discentem/cavorite/internal/stores"
11+
"github.com/google/logger"
1112
"github.com/spf13/cobra"
1213
"github.com/spf13/viper"
1314
)
@@ -74,6 +75,10 @@ func rootCmd() *cobra.Command {
7475
viper.SetDefault("store_type", stores.StoreTypeUndefined)
7576
viper.SetDefault("metadata_file_extension", metadata.MetadataFileExtension)
7677

78+
if vv {
79+
logger.SetLevel(2)
80+
}
81+
7782
// Import subCmds into the rootCmd
7883
rootCmd.AddCommand(
7984
initCmd(),

internal/config/config.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,21 @@ func InitializeStoreTypeGCS(
6464
}
6565
}
6666

67+
func InitializeStoreTypeAzureBlob(
68+
ctx context.Context,
69+
fsys afero.Fs,
70+
sourceRepo, backendAddress string,
71+
opts stores.Options,
72+
) Config {
73+
return Config{
74+
StoreType: stores.StoreTypeAzureBlob,
75+
Options: opts,
76+
Validate: func() error {
77+
return nil
78+
},
79+
}
80+
}
81+
6782
func (c *Config) Write(fsys afero.Fs, sourceRepo string) error {
6883
if c.Validate == nil {
6984
return ErrValidateNil

internal/fileutils/BUILD.bazel

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
2+
3+
go_library(
4+
name = "fileutils",
5+
srcs = ["fileutils.go"],
6+
importpath = "github.com/discentem/cavorite/internal/fileutils",
7+
visibility = ["//:__subpackages__"],
8+
deps = ["@com_github_spf13_afero//:afero"],
9+
)

internal/fileutils/fileutils.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package fileutils
2+
3+
import (
4+
"fmt"
5+
"io"
6+
7+
"github.com/spf13/afero"
8+
)
9+
10+
func BytesFromAferoFile(f afero.File) ([]byte, error) {
11+
_, err := f.Seek(0, io.SeekStart)
12+
if err != nil {
13+
return nil, err
14+
}
15+
objInfo, err := f.Stat()
16+
if err != nil {
17+
return nil, err
18+
}
19+
b := make([]byte, objInfo.Size())
20+
_, err = f.Read(b)
21+
if err != nil {
22+
return nil, fmt.Errorf("failed to read bytes from objectHandle: %w", err)
23+
}
24+
return b, nil
25+
}

internal/stores/BUILD.bazel

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
33
go_library(
44
name = "stores",
55
srcs = [
6+
"azure.go",
67
"gcs.go",
78
"options.go",
89
"s3.go",
@@ -16,6 +17,10 @@ go_library(
1617
"@com_github_aws_aws_sdk_go_v2_config//:config",
1718
"@com_github_aws_aws_sdk_go_v2_feature_s3_manager//:manager",
1819
"@com_github_aws_aws_sdk_go_v2_service_s3//:s3",
20+
"@com_github_azure_azure_sdk_for_go_sdk_azidentity//:azidentity",
21+
"@com_github_azure_azure_sdk_for_go_sdk_storage_azblob//:azblob",
22+
"@com_github_azure_azure_sdk_for_go_sdk_storage_azblob//blob",
23+
"@com_github_azure_azure_sdk_for_go_sdk_storage_azblob//blockblob",
1924
"@com_github_google_logger//:logger",
2025
"@com_github_hashicorp_go_multierror//:go-multierror",
2126
"@com_github_spf13_afero//:afero",
@@ -27,6 +32,7 @@ go_library(
2732
go_test(
2833
name = "stores_test",
2934
srcs = [
35+
"azure_test.go",
3036
"gcs_test.go",
3137
"s3_test.go",
3238
"stores_test.go",
@@ -36,9 +42,12 @@ go_test(
3642
"//internal/testutils",
3743
"@com_github_aws_aws_sdk_go_v2_feature_s3_manager//:manager",
3844
"@com_github_aws_aws_sdk_go_v2_service_s3//:s3",
45+
"@com_github_azure_azure_sdk_for_go_sdk_storage_azblob//:azblob",
46+
"@com_github_azure_azure_sdk_for_go_sdk_storage_azblob//blob",
3947
"@com_github_fsouza_fake_gcs_server//fakestorage",
4048
"@com_github_spf13_afero//:afero",
4149
"@com_github_stretchr_testify//assert",
50+
"@com_github_stretchr_testify//require",
4251
"@com_google_cloud_go_storage//:storage",
4352
"@org_golang_google_api//option",
4453
],

0 commit comments

Comments
 (0)