diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-11-02 18:53:20 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-11-02 18:53:20 -0400 |
commit | 7d5f4e73158cfc4837e6fe1ccf609c931c4f87b7 (patch) | |
tree | 8af98da31237013c251b9de490c4d88aa5755195 | |
parent | 1a7dd9bd692ff9db64cea670fa0feaa79c82706d (diff) |
views
-rw-r--r-- | got/deleted.got | 6 | ||||
-rw-r--r-- | got/modified.got | 6 | ||||
-rw-r--r-- | got/view_blob.got | 8 | ||||
-rw-r--r-- | got/view_tree.got | 2 | ||||
-rw-r--r-- | src/edit/git.go | 9 | ||||
-rw-r--r-- | src/edit/posthack.go | 2 | ||||
-rw-r--r-- | src/edit/util.go | 18 | ||||
-rw-r--r-- | src/edit/views.go | 24 |
8 files changed, 68 insertions, 7 deletions
diff --git a/got/deleted.got b/got/deleted.got index e69de29..b1aa645 100644 --- a/got/deleted.got +++ b/got/deleted.got @@ -0,0 +1,6 @@ +<!-- -*- Mode: HTML -*- --> +<h1>Deleted: {{.path | html}}</h1> +<p>File has successfully been deleted.</p> +<script> +window.location += "/.." +</script> diff --git a/got/modified.got b/got/modified.got index e69de29..f62b21d 100644 --- a/got/modified.got +++ b/got/modified.got @@ -0,0 +1,6 @@ +<!-- -*- Mode: HTML -*- --> +<h1>Modified: {{.path | html}}</h1> +<p>File has successfully been modified.</p> +<script> +window.location += "/.." +</script> diff --git a/got/view_blob.got b/got/view_blob.got index a1d7e2c..63039f2 100644 --- a/got/view_blob.got +++ b/got/view_blob.got @@ -24,3 +24,11 @@ </label> <input type="submit" value="Upload"> </form> +<form method="POST" enctype="multipart/form-data"> + <input type="hidden" name="_method" value="DELETE"> + <label> + Description of change: + <input type="text" value="_message" /> + </label> + <input type="submit" value="Delete"> +</form> diff --git a/got/view_tree.got b/got/view_tree.got index 46f4af7..e4539a7 100644 --- a/got/view_tree.got +++ b/got/view_tree.got @@ -11,6 +11,8 @@ <td><a href="{{$name | html}}">{{$name | html}}</a></td> <td>{{$file.Type | html}}</td> <td>{{if lt $file.Size 0}}-{{else}}{{$file.Size | html}}{{end}}</td> + <td><form action="{{$name | html}}" method="GET"><input type="submit" value="Edit"/></form></td> + <td><form action="{{$name | html}}" method="POST"><input type="hidden" name="_method" value="DELETE" /><input type="submit" value="Delete"/></form></td> </tr> {{end}} </table> diff --git a/src/edit/git.go b/src/edit/git.go index 715a703..25d46cc 100644 --- a/src/edit/git.go +++ b/src/edit/git.go @@ -10,12 +10,17 @@ import ( "time" ) +// Use .Output() instead of .Run() so that it populates +// ExitError.Stderr. + func GitPull() error { - return exec.Command("git", "fetch").Run() + _, err := exec.Command("git", "fetch").Output() + return err } func GitPush() error { - return exec.Command("git", "push").Run() + _, err := exec.Command("git", "push").Output() + return err } type Edit struct { diff --git a/src/edit/posthack.go b/src/edit/posthack.go index 062903f..9e4759e 100644 --- a/src/edit/posthack.go +++ b/src/edit/posthack.go @@ -28,7 +28,7 @@ func PostHack(req *http.Request) { req.PostForm.Del("_message") } // _body - if file, header, err := req.FormFile("_body"); err != nil { + if file, header, err := req.FormFile("_body"); err == nil { req.Body = file for k, v := range header.Header { req.Header[k] = v diff --git a/src/edit/util.go b/src/edit/util.go index 519e46c..566796c 100644 --- a/src/edit/util.go +++ b/src/edit/util.go @@ -1,7 +1,25 @@ package main +import ( + "os/exec" +) + +type exitError exec.ExitError + +func (e *exitError) Error() string { + ret := e.ProcessState.String() + if len(e.Stderr) > 0 { + ret += "\n" + string(e.Stderr) + } + return ret +} + func errcheck(err error) { if err != nil { + if ee, ok := err.(*exec.ExitError); ok { + ee2 := exitError(*ee) + err = &ee2 + } panic(err) } } diff --git a/src/edit/views.go b/src/edit/views.go index d5ad985..81a6945 100644 --- a/src/edit/views.go +++ b/src/edit/views.go @@ -73,11 +73,27 @@ func renderViewBlob(w io.Writer, upath string, file GitFile) error { } func renderModified(w io.Writer, upath string) error { - // TODO - return nil + // Component render + var buf bytes.Buffer + err := tmplModified.Execute(&buf, map[string]string{ + "path": upath, + }) + if err != nil { + return err + } + // Page render + return renderPage(w, upath, "", buf.String()) } func renderDeleted(w io.Writer, upath string) error { - // TODO - return nil + // Component render + var buf bytes.Buffer + err := tmplDeleted.Execute(&buf, map[string]string{ + "path": upath, + }) + if err != nil { + return err + } + // Page render + return renderPage(w, upath, "", buf.String()) } |