Last active
November 6, 2015 01:27
-
-
Save alecthomas/73172a9d50889836a0ce to your computer and use it in GitHub Desktop.
What would Go code look like with Swift 2.0-style error handling?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// before | |
func CreateZipWithWriter(writer io.Writer, sourceRoot string) error { | |
zf := zip.NewWriter(writer) | |
defer zf.Close() | |
return filepath.Walk(sourceRoot, func(p string, info os.FileInfo, err error) error { | |
if err != nil || info.IsDir() { | |
return err | |
} | |
relPath, err := filepath.Rel(sourceRoot, p) | |
if err != nil { | |
return err | |
} | |
zh, err := zip.FileInfoHeader(info) | |
if err != nil { | |
return err | |
} | |
zh.Name = relPath | |
wf, err := zf.CreateHeader(zh) | |
if err != nil { | |
return err | |
} | |
rf, err := os.Open(p) | |
if err != nil { | |
return err | |
} | |
defer rf.Close() | |
_, err = io.Copy(wf, rf) | |
if err != nil { | |
return err | |
} | |
return nil | |
}) | |
} | |
// after | |
func CreateZipWithWriter(writer io.Writer, sourceRoot string) error { | |
zf := zip.NewWriter(writer) | |
defer zf.Close() | |
return filepath.Walk(sourceRoot, func(p string, info os.FileInfo, err error) error { | |
if err != nil || info.IsDir() { | |
return err | |
} | |
relPath := try filepath.Rel(sourceRoot, p) | |
zh := try zip.FileInfoHeader(info) | |
zh.Name = relPath | |
wf := try zf.CreateHeader(zh) | |
rf := try os.Open(p) | |
defer rf.Close() | |
try io.Copy(wf, rf) | |
return nil | |
}) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment