diff --git a/main.go b/main.go index baed8f5..62930fb 100644 --- a/main.go +++ b/main.go @@ -116,6 +116,13 @@ func main() { Name: "env-file", Usage: "source env file", }, + cli.IntFlag{ + Name: "max-concurrency", + Usage: "customize number concurrent files to process", + Value: 100, + EnvVar: "PLUGIN_MAX_CONCURRENCY", + + }, } if err := app.Run(os.Args); err != nil { @@ -145,6 +152,7 @@ func run(c *cli.Context) error { Redirects: c.Generic("redirects").(*MapFlag).Get(), CloudFrontDistribution: c.String("cloudfront-distribution"), DryRun: c.Bool("dry-run"), + MaxConcurrency: c.Int("max-concurrency"), } return plugin.Exec() diff --git a/plugin.go b/plugin.go index d0040ee..2834a21 100644 --- a/plugin.go +++ b/plugin.go @@ -28,10 +28,9 @@ type Plugin struct { PathStyle bool client AWS jobs []job + MaxConcurrency int } -const maxConcurrent = 100 - type job struct { local string remote string @@ -156,7 +155,7 @@ func (p *Plugin) createInvalidateJob() { func (p *Plugin) runJobs() { client := p.client - jobChan := make(chan struct{}, maxConcurrent) + jobChan := make(chan struct{}, p.MaxConcurrency) results := make(chan *result, len(p.jobs)) var invalidateJob *job