| // Copyright 2013 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // +build appengine |
| |
| package build |
| |
| import ( |
| "net/http" |
| "strings" |
| |
| "appengine" |
| ) |
| |
| // Dashboard describes a unique build dashboard. |
| type Dashboard struct { |
| Name string // This dashboard's name and namespace |
| RelPath string // The relative url path |
| Packages []*Package // The project's packages to build |
| } |
| |
| // dashboardForRequest returns the appropriate dashboard for a given URL path. |
| func dashboardForRequest(r *http.Request) *Dashboard { |
| if strings.HasPrefix(r.URL.Path, gccgoDash.RelPath) { |
| return gccgoDash |
| } |
| return goDash |
| } |
| |
| // Context returns a namespaced context for this dashboard, or panics if it |
| // fails to create a new context. |
| func (d *Dashboard) Context(c appengine.Context) appengine.Context { |
| // No namespace needed for the original Go dashboard. |
| if d.Name == "Go" { |
| return c |
| } |
| n, err := appengine.Namespace(c, d.Name) |
| if err != nil { |
| panic(err) |
| } |
| return n |
| } |
| |
| // the currently known dashboards. |
| var dashboards = []*Dashboard{goDash, gccgoDash} |
| |
| // goDash is the dashboard for the main go repository. |
| var goDash = &Dashboard{ |
| Name: "Go", |
| RelPath: "/", |
| Packages: goPackages, |
| } |
| |
| // goPackages is a list of all of the packages built by the main go repository. |
| var goPackages = []*Package{ |
| { |
| Kind: "go", |
| Name: "Go", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.blog", |
| Path: "code.google.com/p/go.blog", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.codereview", |
| Path: "code.google.com/p/go.codereview", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.crypto", |
| Path: "code.google.com/p/go.crypto", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.exp", |
| Path: "code.google.com/p/go.exp", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.image", |
| Path: "code.google.com/p/go.image", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.net", |
| Path: "code.google.com/p/go.net", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.sys", |
| Path: "code.google.com/p/go.sys", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.talks", |
| Path: "code.google.com/p/go.talks", |
| }, |
| { |
| Kind: "subrepo", |
| Name: "go.tools", |
| Path: "code.google.com/p/go.tools", |
| }, |
| } |
| |
| // gccgoDash is the dashboard for gccgo. |
| var gccgoDash = &Dashboard{ |
| Name: "Gccgo", |
| RelPath: "/gccgo/", |
| Packages: []*Package{ |
| { |
| Kind: "gccgo", |
| Name: "Gccgo", |
| }, |
| }, |
| } |