aboutsummaryrefslogtreecommitdiff
path: root/archive/archive.go
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2017-02-04 18:16:22 -0500
committerMitch Riedstra <mitch@riedstra.us>2017-02-04 18:16:22 -0500
commit0e346bf5ad4852db5db82343b2aca5911c38ad00 (patch)
tree5a2528211318da0c550dfb5ca576a0292ed8176b /archive/archive.go
parent41752a0cf50735bc29dae18271539719f7b59f7c (diff)
downloadsteam-export-0e346bf5ad4852db5db82343b2aca5911c38ad00.tar.gz
steam-export-0e346bf5ad4852db5db82343b2aca5911c38ad00.tar.xz
Moved the libraries around
Diffstat (limited to 'archive/archive.go')
-rw-r--r--archive/archive.go104
1 files changed, 0 insertions, 104 deletions
diff --git a/archive/archive.go b/archive/archive.go
deleted file mode 100644
index 639a864..0000000
--- a/archive/archive.go
+++ /dev/null
@@ -1,104 +0,0 @@
-package archive
-
-import (
- "archive/tar"
- "path/filepath"
-
- "compress/gzip"
-
- "io"
- "os"
-
- "strings"
-)
-
-type Archive struct {
- Output string
- Input []string
- file *os.File
-}
-
-func (a *Archive) Tar(compressionType string) error {
- var err error
- if a.file, err = os.Create(a.Output); err != nil {
- return err
- }
-
- defer a.file.Close()
-
- var twriter *tar.Writer
-
- // Set the compression type... if any
- switch compressionType {
- case "gz":
- gzwriter, err := gzip.NewWriterLevel(a.file, gzip.BestSpeed)
- if err != nil {
- return err
- }
- defer gzwriter.Close()
- // Write to the gzip writer
- twriter = tar.NewWriter(gzwriter)
- default:
- // Write directly to the file
- twriter = tar.NewWriter(a.file)
- }
-
- // Close off the tar writer when we're done
- defer twriter.Close()
-
- for _, v := range a.Input {
- if err := filepath.Walk(v, tarWalkfn(twriter)); err != nil {
- return err
- }
- }
-
- return nil
-
-}
-
-func tarWalkfn(writer *tar.Writer) filepath.WalkFunc {
- // This is an interesting trick to get around scoping issues
- return func(path string, info os.FileInfo, err error) error {
- if err != nil {
- return err
- }
-
- if info.IsDir() {
- return nil
- }
-
- f, err := os.Open(path)
- if err != nil {
- return err
- }
- defer f.Close()
-
- // Convert Windows paths to Unix paths
- path = strings.Replace(path, "\\", "/", -1)
-
- // TODO; See if tar.FileInfoheader() could be used instead
- // without the pathing issues I encountered
- h := &tar.Header{
- Name: path,
- Size: info.Size(),
- // I don't like it... but it helps with platform compatibility
- Mode: 0664,
- ModTime: info.ModTime(),
- }
-
- err = writer.WriteHeader(h)
- if err != nil {
- return err
- }
-
- _, err = io.Copy(writer, f)
- if err != nil {
- // TODO: Figure out how to add more useful information to
- // These errors
- // fmt.Fprintln(os.Stderr, f.Name())
- return err
- }
-
- return nil
- }
-}