// 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, "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.
	http.Handle("/dl/", http.RedirectHandler("https://golang.org/dl/", http.StatusFound))
}
