diff options
Diffstat (limited to 'misc/dashboard/app/build/init.go')
| -rw-r--r-- | misc/dashboard/app/build/init.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/misc/dashboard/app/build/init.go b/misc/dashboard/app/build/init.go new file mode 100644 index 000000000..5311688b7 --- /dev/null +++ b/misc/dashboard/app/build/init.go @@ -0,0 +1,57 @@ +// Copyright 2012 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. + +package build + +import ( + "fmt" + "net/http" + + "appengine" + "appengine/datastore" + "cache" +) + +// defaultPackages specifies the Package records to be created by initHandler. +var defaultPackages = []*Package{ + {Name: "Go", Kind: "go"}, +} + +// subRepos specifies the Go project sub-repositories. +var subRepos = []string{ + "codereview", + "crypto", + "image", + "net", +} + +// Put subRepos into defaultPackages. +func init() { + for _, name := range subRepos { + p := &Package{ + Kind: "subrepo", + Name: "go." + name, + Path: "code.google.com/p/go." + name, + } + defaultPackages = append(defaultPackages, p) + } +} + +func initHandler(w http.ResponseWriter, r *http.Request) { + c := appengine.NewContext(r) + defer cache.Tick(c) + for _, p := range defaultPackages { + if err := datastore.Get(c, p.Key(c), new(Package)); err == nil { + continue + } else if err != datastore.ErrNoSuchEntity { + logErr(w, r, err) + return + } + if _, err := datastore.Put(c, p.Key(c), p); err != nil { + logErr(w, r, err) + return + } + } + fmt.Fprint(w, "OK") +} |
