fix untargz
parent
becfbe08c7
commit
654332673c
|
@ -12,6 +12,7 @@ install:
|
||||||
- go get github.com/mitchellh/go-homedir
|
- go get github.com/mitchellh/go-homedir
|
||||||
- go get github.com/caddyserver/caddydev
|
- go get github.com/caddyserver/caddydev
|
||||||
- go get github.com/caddyserver/caddyext
|
- go get github.com/caddyserver/caddyext
|
||||||
|
- go get github.com/pivotal-golang/archiver
|
||||||
- go install github.com/caddyserver/caddydev
|
- go install github.com/caddyserver/caddydev
|
||||||
- go install github.com/caddyserver/caddyext
|
- go install github.com/caddyserver/caddyext
|
||||||
- go install github.com/mitchellh/gox
|
- go install github.com/mitchellh/gox
|
||||||
|
|
95
hugo/hugo.go
95
hugo/hugo.go
|
@ -1,8 +1,6 @@
|
||||||
package hugo
|
package hugo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/zip"
|
|
||||||
"compress/gzip"
|
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -16,6 +14,7 @@ import (
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/mitchellh/go-homedir"
|
"github.com/mitchellh/go-homedir"
|
||||||
|
"github.com/pivotal-golang/archiver/extractor"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -80,9 +79,11 @@ func GetPath() string {
|
||||||
// Unzip or Ungzip the file
|
// Unzip or Ungzip the file
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "darwin", "windows":
|
case "darwin", "windows":
|
||||||
err = unzip(tempfile, temp)
|
zp := extractor.NewZip()
|
||||||
|
zp.Extract(tempfile, temp)
|
||||||
default:
|
default:
|
||||||
err = ungzip(tempfile, temp)
|
gz := extractor.NewTgz()
|
||||||
|
gz.Extract(tempfile, temp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -199,89 +200,3 @@ func checkSHA256() {
|
||||||
|
|
||||||
fmt.Println("checked!")
|
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