Browse Source

Serve HTML via HTTP

Lucas Stadler 8 years ago
parent
commit
3bcc093139
1 changed files with 14 additions and 36 deletions
  1. 14 36
      quit.go

+ 14 - 36
quit.go

@ -1,10 +1,11 @@
1 1
package main
2 2
3 3
import (
4
	"fmt"
4
	"bytes"
5 5
	"html/template"
6
	"io"
6 7
	"log"
7
	"os"
8
	"net/http"
8 9
	"strings"
9 10
	"time"
10 11
@ -17,44 +18,21 @@ func main() {
17 18
		log.Fatal("opening repository: ", err)
18 19
	}
19 20
20
	head, err := repo.Head()
21
	if err != nil {
22
		log.Fatal("getting HEAD: ", err)
23
	}
24
25
	commit, err := repo.LookupCommit(head.Target())
26
	if err != nil {
27
		log.Fatal("resolving HEAD: ", err)
28
	}
29
30
	fmt.Printf("Commit: %s\nAuthor: %s\nDate: %s\n\n%s", commit.TreeId(), commit.Author().Name, commit.Author().When, commit.Message())
31
32
	tree, err := commit.Tree()
33
	if err != nil {
34
		log.Fatal("getting tree: ", err)
35
	}
36
37
	err = tree.Walk(func(name string, entry *git.TreeEntry) int {
38
		obj, err := repo.Lookup(entry.Id)
21
	http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
22
		buf := new(bytes.Buffer)
23
		err = repoTmpl.Execute(buf, map[string]interface{}{
24
			"RepoPath": "~/t/libgit2",
25
			"Repo":     NewFancyRepo(repo),
26
		})
39 27
		if err != nil {
40
			log.Fatal("lookup: ", err)
28
			log.Println("rendering repo: ", err)
29
			http.Error(w, "internal server error", http.StatusInternalServerError)
30
			return
41 31
		}
42
		fmt.Printf("%s (%s)\n", entry.Name, obj.Type())
43
		return 1
32
		io.Copy(w, buf)
44 33
	})
45
	if err != nil {
46
		log.Fatal("walking tree: ", err)
47
	}
48 34
49
	fmt.Printf("\n\n\n")
50
51
	err = repoTmpl.Execute(os.Stdout, map[string]interface{}{
52
		"RepoPath": "~/t/libgit2",
53
		"Repo":     NewFancyRepo(repo),
54
	})
55
	if err != nil {
56
		log.Fatal("rendering repo: ", err)
57
	}
35
	log.Fatal(http.ListenAndServe("localhost:12345", nil))
58 36
}
59 37
60 38
type FancyRepo struct {