This commit is contained in:
parent
866e7fd9e1
commit
a16182e004
38
file.go
38
file.go
|
@ -18,6 +18,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
@ -200,31 +201,40 @@ func (f *File) writeToZip(zw *zip.Writer) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var err error
|
var (
|
||||||
|
err error
|
||||||
|
files, tempFiles []string
|
||||||
|
)
|
||||||
f.Pkg.Range(func(path, content interface{}) bool {
|
f.Pkg.Range(func(path, content interface{}) bool {
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if _, ok := f.streams[path.(string)]; ok {
|
if _, ok := f.streams[path.(string)]; ok {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
var fi io.Writer
|
files = append(files, path.(string))
|
||||||
if fi, err = zw.Create(path.(string)); err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
_, err = fi.Write(content.([]byte))
|
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
sort.Strings(files)
|
||||||
|
for _, path := range files {
|
||||||
|
var fi io.Writer
|
||||||
|
if fi, err = zw.Create(path); err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
content, _ := f.Pkg.Load(path)
|
||||||
|
_, err = fi.Write(content.([]byte))
|
||||||
|
}
|
||||||
f.tempFiles.Range(func(path, content interface{}) bool {
|
f.tempFiles.Range(func(path, content interface{}) bool {
|
||||||
if _, ok := f.Pkg.Load(path); ok {
|
if _, ok := f.Pkg.Load(path); ok {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
var fi io.Writer
|
tempFiles = append(tempFiles, path.(string))
|
||||||
if fi, err = zw.Create(path.(string)); err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
_, err = fi.Write(f.readBytes(path.(string)))
|
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
sort.Strings(tempFiles)
|
||||||
|
for _, path := range tempFiles {
|
||||||
|
var fi io.Writer
|
||||||
|
if fi, err = zw.Create(path); err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
_, err = fi.Write(f.readBytes(path))
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue