diff --git a/chomp.go b/chomp.go index 809ee51..cacfdcf 100644 --- a/chomp.go +++ b/chomp.go @@ -54,10 +54,22 @@ func Chomp(a interface{}) string { return perlChomp(s) case []uint8: log.Printf("shell.Chomp() FOUND []uint8") - var u8s []uint8 - u8s = a.([]uint8) + var tmp []uint8 + tmp = a.([]uint8) - s := string(u8s) + s := string(tmp) + return perlChomp(s) + case uint64: + log.Printf("shell.Chomp() FOUND []uint64") + var tmp uint64 + tmp = a.(uint64) + s := string(tmp) + return perlChomp(s) + case int64: + log.Printf("shell.Chomp() FOUND []uint64") + var tmp int64 + tmp = a.(int64) + s := string(tmp) return perlChomp(s) case *bytes.Buffer: log.Printf("shell.Chomp() FOUND *bytes.Buffer") diff --git a/wget.go b/wget.go new file mode 100644 index 0000000..68ad12d --- /dev/null +++ b/wget.go @@ -0,0 +1,78 @@ +package shell + +/* + This simply parses the command line arguments using the default golang + package called 'flag'. This can be used as a simple template to parse + command line arguments in other programs. + + It puts everything in a 'config' Protobuf which I think is a good + wrapper around the 'flags' package and doesn't need a whole mess of + global variables +*/ + +import "io" +import "os" +import "bytes" +import "strings" +import "net/http" + +/* +import "git.wit.com/wit/shell" +import "github.com/davecgh/go-spew/spew" +*/ + +func Wget(url string) (*bytes.Buffer) { + buf := new(bytes.Buffer) + + // Get the data + resp, err := http.Get(url) + if err != nil { + handleError(err, -1) + return nil + } + defer resp.Body.Close() + + buf.ReadFrom(resp.Body) + return buf +} + +func WgetToFile(filepath string, url string) error { + // Get the data + resp, err := http.Get(url) + if err != nil { + handleError(err, -1) + return err + } + defer resp.Body.Close() + + // Create the file + out, err := os.Create(filepath) + if err != nil { + handleError(err, -1) + return err + } + defer out.Close() + + // Write the body to file + _, err = io.Copy(out, resp.Body) + return err +} + +func Write(filepath string, data string) bool { + // Create the file + out, err := os.Create(filepath) + if err != nil { + return false + } + defer out.Close() + + // Write the body to file + // _, err = io.Copy(out, resp.Body) + count, err := io.Copy(out, strings.NewReader(data)) + if err != nil { + handleError(err, -1) + return false + } + handleError(nil, int(count)) + return true +}