// Renders a templated asset in dev-mode. This simply embeds external script tags // for the source elements. func renderForDev(w io.Writer, root string, c *content, cfg *config.Config) error { t, err := template.ParseFiles( filepath.Join(root, c.template)) if err != nil { return err } json, err := cfg.ToJsonString() if err != nil { return err } var buf bytes.Buffer fmt.Fprintf( &buf, "<script src=\"/js/JSXTransformer-%s.js\"></script>\n", ReactVersion) for _, path := range c.sources { fmt.Fprintf( &buf, "<script type=\"text/jsx\" src=\"/%s\"></script>", path) } return t.Execute(w, map[string]interface{}{ "ReactVersion": ReactVersion, "jQueryVersion": JQueryVersion, "ReposAsJson": json, "Source": template.HTML(buf.String()), }) }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) info_log = log.New(os.Stdout, "", log.LstdFlags) error_log = log.New(os.Stderr, "", log.LstdFlags) flagConf := flag.String("conf", "config.json", "") flagAddr := flag.String("addr", ":6080", "") flagDev := flag.Bool("dev", false, "") flag.Parse() var cfg config.Config if err := cfg.LoadFromFile(*flagConf); err != nil { panic(err) } idx, ok, err := makeSearchers(&cfg) if err != nil { log.Panic(err) } if !ok { info_log.Println("Some repos failed to index, see output above") } else { info_log.Println("All indexes built!") } host := *flagAddr if strings.HasPrefix(host, ":") { host = "localhost" + host } info_log.Printf("running server at http://%s...\n", host) if err := runHttp(*flagAddr, *flagDev, &cfg, idx); err != nil { panic(err) } }
// Create an http.Handler for prd-mode. func newPrdHandler(cfg *config.Config) (http.Handler, error) { for _, cnt := range contents { a, err := Asset(cnt.template) if err != nil { return nil, err } cnt.tpl, err = template.New(cnt.template).Parse(string(a)) if err != nil { return nil, err } } json, err := cfg.ToJsonString() if err != nil { return nil, err } return &prdHandler{ content: contents, cfg: cfg, cfgJson: json, }, nil }