| // Copyright 2014 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. |
| |
| //go:build go1.16 && !prod |
| // +build go1.16,!prod |
| |
| package main |
| |
| import ( |
| "fmt" |
| "log" |
| "net/http" |
| "os" |
| "path/filepath" |
| "runtime" |
| |
| // This package registers "/compile" and "/share" handlers |
| // that redirect to the golang.org playground. |
| _ "golang.org/x/tools/playground" |
| ) |
| |
| func earlySetup() { |
| _, file, _, ok := runtime.Caller(0) |
| if !ok { |
| fmt.Fprintln(os.Stderr, "runtime.Caller failed: cannot find templates for -a mode.") |
| os.Exit(2) |
| } |
| dir := filepath.Join(file, "../../../_content") |
| if _, err := os.Stat(filepath.Join(dir, "lib/godoc/godoc.html")); err != nil { |
| log.Printf("warning: cannot find template dir; using embedded copy") |
| return |
| } |
| *templateDir = dir |
| } |
| |
| func lateSetup(mux *http.ServeMux) { |
| // Register a redirect handler for /dl/ to the golang.org download page. |
| mux.Handle("/dl/", http.RedirectHandler("https://golang.org/dl/", http.StatusFound)) |
| } |