buidlet, gomote: implement put single file
Change-Id: I2b1decc2907edde7a52a4eb3584c327a7a233fa7
Reviewed-on: https://go-review.googlesource.com/4360
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/buildlet/buildletclient.go b/buildlet/buildletclient.go
index adcb475..1f88078 100644
--- a/buildlet/buildletclient.go
+++ b/buildlet/buildletclient.go
@@ -15,6 +15,7 @@
"net"
"net/http"
"net/url"
+ "os"
"strings"
"time"
@@ -117,6 +118,19 @@
return c.doOK(req)
}
+// Put writes the provided file to path (relative to workdir) and sets mode.
+func (c *Client) Put(r io.Reader, path string, mode os.FileMode) error {
+ param := url.Values{
+ "path": {path},
+ "mode": {fmt.Sprint(int64(mode))},
+ }
+ req, err := http.NewRequest("PUT", c.URL()+"/write?"+param.Encode(), r)
+ if err != nil {
+ return err
+ }
+ return c.doOK(req)
+}
+
// GetTar returns a .tar.gz stream of the given directory, relative to the buildlet's work dir.
// The provided dir may be empty to get everything.
func (c *Client) GetTar(dir string) (tgz io.ReadCloser, err error) {