summaryrefslogtreecommitdiff
path: root/misc/dashboard/app/build/init.go
diff options
context:
space:
mode:
Diffstat (limited to 'misc/dashboard/app/build/init.go')
-rw-r--r--misc/dashboard/app/build/init.go57
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")
+}