From 2f721f8ec69c52202815cd1b543ca4bf535c0901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 25 Feb 2020 21:40:02 +0100 Subject: Add basic "post resource publish support" Fixes #7146 --- deps/deps.go | 26 +++++++++++++++++--------- deps/deps_test.go | 10 ++++++++++ 2 files changed, 27 insertions(+), 9 deletions(-) (limited to 'deps') diff --git a/deps/deps.go b/deps/deps.go index e482b2df7..82a16ba59 100644 --- a/deps/deps.go +++ b/deps/deps.go @@ -2,6 +2,7 @@ package deps import ( "sync" + "sync/atomic" "time" "github.com/pkg/errors" @@ -92,8 +93,9 @@ type Deps struct { // BuildStartListeners will be notified before a build starts. BuildStartListeners *Listeners - // Atomic flags set during a build. - BuildFlags *BuildFlags + // Atomic values set during a build. + // This is common/global for all sites. + BuildState *BuildState *globalErrHandler } @@ -236,8 +238,9 @@ func New(cfg DepsCfg) (*Deps, error) { } errorHandler := &globalErrHandler{} + buildState := &BuildState{} - resourceSpec, err := resources.NewSpec(ps, fileCaches, logger, errorHandler, cfg.OutputFormats, cfg.MediaTypes) + resourceSpec, err := resources.NewSpec(ps, fileCaches, buildState, logger, errorHandler, cfg.OutputFormats, cfg.MediaTypes) if err != nil { return nil, err } @@ -275,7 +278,7 @@ func New(cfg DepsCfg) (*Deps, error) { Site: cfg.Site, FileCaches: fileCaches, BuildStartListeners: &Listeners{}, - BuildFlags: &BuildFlags{}, + BuildState: buildState, Timeout: time.Duration(timeoutms) * time.Millisecond, globalErrHandler: errorHandler, } @@ -308,7 +311,7 @@ func (d Deps) ForLanguage(cfg DepsCfg, onCreated func(d *Deps) error) (*Deps, er // The resource cache is global so reuse. // TODO(bep) clean up these inits. resourceCache := d.ResourceSpec.ResourceCache - d.ResourceSpec, err = resources.NewSpec(d.PathSpec, d.ResourceSpec.FileCaches, d.Log, d.globalErrHandler, cfg.OutputFormats, cfg.MediaTypes) + d.ResourceSpec, err = resources.NewSpec(d.PathSpec, d.ResourceSpec.FileCaches, d.BuildState, d.Log, d.globalErrHandler, cfg.OutputFormats, cfg.MediaTypes) if err != nil { return nil, err } @@ -376,10 +379,15 @@ type DepsCfg struct { Running bool } -// BuildFlags are flags that may be turned on during a build. -type BuildFlags struct { +// BuildState are flags that may be turned on during a build. +type BuildState struct { + counter uint64 } -func NewBuildFlags() BuildFlags { - return BuildFlags{} +func (b *BuildState) Incr() int { + return int(atomic.AddUint64(&b.counter, uint64(1))) +} + +func NewBuildState() BuildState { + return BuildState{} } diff --git a/deps/deps_test.go b/deps/deps_test.go index a7450a41c..5c58ed7a3 100644 --- a/deps/deps_test.go +++ b/deps/deps_test.go @@ -15,8 +15,18 @@ package deps import ( "testing" + + qt "github.com/frankban/quicktest" ) func TestBuildFlags(t *testing.T) { + c := qt.New(t) + var bf BuildState + bf.Incr() + bf.Incr() + bf.Incr() + + c.Assert(bf.Incr(), qt.Equals, 4) + } -- cgit v1.2.3