github.com/pwn-term/docker@v0.0.0-20210616085119-6e977cce2565/moby/api/server/router/build/build.go (about) 1 package build // import "github.com/docker/docker/api/server/router/build" 2 3 import ( 4 "github.com/docker/docker/api/server/router" 5 "github.com/docker/docker/api/types" 6 ) 7 8 // buildRouter is a router to talk with the build controller 9 type buildRouter struct { 10 backend Backend 11 daemon experimentalProvider 12 routes []router.Route 13 features *map[string]bool 14 } 15 16 // NewRouter initializes a new build router 17 func NewRouter(b Backend, d experimentalProvider, features *map[string]bool) router.Router { 18 r := &buildRouter{ 19 backend: b, 20 daemon: d, 21 features: features, 22 } 23 r.initRoutes() 24 return r 25 } 26 27 // Routes returns the available routers to the build controller 28 func (r *buildRouter) Routes() []router.Route { 29 return r.routes 30 } 31 32 func (r *buildRouter) initRoutes() { 33 r.routes = []router.Route{ 34 router.NewPostRoute("/build", r.postBuild), 35 router.NewPostRoute("/build/prune", r.postPrune), 36 router.NewPostRoute("/build/cancel", r.postCancel), 37 } 38 } 39 40 // BuilderVersion derives the default docker builder version from the config 41 // Note: it is valid to have BuilderVersion unset which means it is up to the 42 // client to choose which builder to use. 43 func BuilderVersion(features map[string]bool) types.BuilderVersion { 44 var bv types.BuilderVersion 45 if v, ok := features["buildkit"]; ok { 46 if v { 47 bv = types.BuilderBuildKit 48 } else { 49 bv = types.BuilderV1 50 } 51 } 52 return bv 53 }