mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-18 17:19:58 +00:00
47 lines
943 B
Go
47 lines
943 B
Go
|
package getter
|
||
|
|
||
|
import "context"
|
||
|
|
||
|
// A ClientOption allows to configure a client
|
||
|
type ClientOption func(*Client) error
|
||
|
|
||
|
// Configure configures a client with options.
|
||
|
func (c *Client) Configure(opts ...ClientOption) error {
|
||
|
if c.Ctx == nil {
|
||
|
c.Ctx = context.Background()
|
||
|
}
|
||
|
c.Options = opts
|
||
|
for _, opt := range opts {
|
||
|
err := opt(c)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
// Default decompressor values
|
||
|
if c.Decompressors == nil {
|
||
|
c.Decompressors = Decompressors
|
||
|
}
|
||
|
// Default detector values
|
||
|
if c.Detectors == nil {
|
||
|
c.Detectors = Detectors
|
||
|
}
|
||
|
// Default getter values
|
||
|
if c.Getters == nil {
|
||
|
c.Getters = Getters
|
||
|
}
|
||
|
|
||
|
for _, getter := range c.Getters {
|
||
|
getter.SetClient(c)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// WithContext allows to pass a context to operation
|
||
|
// in order to be able to cancel a download in progress.
|
||
|
func WithContext(ctx context.Context) func(*Client) error {
|
||
|
return func(c *Client) error {
|
||
|
c.Ctx = ctx
|
||
|
return nil
|
||
|
}
|
||
|
}
|