Store bug reports in separate directories

pull/3150/head
Kegan Dougal 2017-02-06 16:18:08 +00:00
parent 1f0b4853be
commit 678eccf33d
1 changed files with 5 additions and 4 deletions

View File

@ -37,8 +37,9 @@ func respond(code int, w http.ResponseWriter) {
w.Write([]byte("{}")) w.Write([]byte("{}"))
} }
func gzipAndSave(data []byte, fpath string) error { func gzipAndSave(data []byte, dirname, fpath string) error {
fpath = filepath.Join("bugs", fpath) _ = os.Mkdir(filepath.Join("bugs", dirname), os.ModePerm)
fpath = filepath.Join("bugs", dirname, fpath)
if _, err := os.Stat(fpath); err == nil { if _, err := os.Stat(fpath); err == nil {
return fmt.Errorf("file already exists") // the user can just retry return fmt.Errorf("file already exists") // the user can just retry
@ -93,12 +94,12 @@ func main() {
summary := fmt.Sprintf( summary := fmt.Sprintf(
"%s\n\nNumber of logs: %d\nVersion: %s\nUser-Agent: %s\n", p.Text, len(p.Logs), p.Version, p.UserAgent, "%s\n\nNumber of logs: %d\nVersion: %s\nUser-Agent: %s\n", p.Text, len(p.Logs), p.Version, p.UserAgent,
) )
if err := gzipAndSave([]byte(summary), prefix+".log.gz"); err != nil { if err := gzipAndSave([]byte(summary), prefix, "details.log.gz"); err != nil {
respond(500, w) respond(500, w)
return return
} }
for i, log := range p.Logs { for i, log := range p.Logs {
if err := gzipAndSave([]byte(log.Lines), fmt.Sprintf("%s-%d.log.gz", prefix, i)); err != nil { if err := gzipAndSave([]byte(log.Lines), prefix, fmt.Sprintf("logs-%d.log.gz", i)); err != nil {
respond(500, w) respond(500, w)
return // TODO: Rollback? return // TODO: Rollback?
} }