fix untargz
parent
becfbe08c7
commit
654332673c
|
@ -12,6 +12,7 @@ install:
|
|||
- go get github.com/mitchellh/go-homedir
|
||||
- go get github.com/caddyserver/caddydev
|
||||
- go get github.com/caddyserver/caddyext
|
||||
- go get github.com/pivotal-golang/archiver
|
||||
- go install github.com/caddyserver/caddydev
|
||||
- go install github.com/caddyserver/caddyext
|
||||
- go install github.com/mitchellh/gox
|
||||
|
|
95
hugo/hugo.go
95
hugo/hugo.go
|
@ -1,8 +1,6 @@
|
|||
package hugo
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"compress/gzip"
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
|
@ -16,6 +14,7 @@ import (
|
|||
"runtime"
|
||||
|
||||
"github.com/mitchellh/go-homedir"
|
||||
"github.com/pivotal-golang/archiver/extractor"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -80,9 +79,11 @@ func GetPath() string {
|
|||
// Unzip or Ungzip the file
|
||||
switch runtime.GOOS {
|
||||
case "darwin", "windows":
|
||||
err = unzip(tempfile, temp)
|
||||
zp := extractor.NewZip()
|
||||
zp.Extract(tempfile, temp)
|
||||
default:
|
||||
err = ungzip(tempfile, temp)
|
||||
gz := extractor.NewTgz()
|
||||
gz.Extract(tempfile, temp)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
@ -199,89 +200,3 @@ func checkSHA256() {
|
|||
|
||||
fmt.Println("checked!")
|
||||
}
|
||||
|
||||
func unzip(src, dest string) error {
|
||||
r, err := zip.OpenReader(src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
if err := r.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
os.MkdirAll(dest, 0755)
|
||||
|
||||
// Closure to address file descriptors issue with all the deferred .Close() methods
|
||||
extractAndWriteFile := func(f *zip.File) error {
|
||||
rc, err := f.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
if err := rc.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
path := filepath.Join(dest, f.Name)
|
||||
|
||||
if f.FileInfo().IsDir() {
|
||||
os.MkdirAll(path, f.Mode())
|
||||
} else {
|
||||
if _, err := os.Stat(filepath.Dir(path)); os.IsNotExist(err) {
|
||||
os.MkdirAll(filepath.Dir(path), 0755)
|
||||
}
|
||||
|
||||
f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
if err := f.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
_, err = io.Copy(f, rc)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, f := range r.File {
|
||||
err := extractAndWriteFile(f)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ungzip(source, target string) error {
|
||||
reader, err := os.Open(source)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer reader.Close()
|
||||
|
||||
archive, err := gzip.NewReader(reader)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer archive.Close()
|
||||
|
||||
target = filepath.Join(target, archive.Name)
|
||||
writer, err := os.Create(target)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer writer.Close()
|
||||
|
||||
_, err = io.Copy(writer, archive)
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue