github.com/chenchun/docker@v1.3.2-0.20150629222414-20467faf132b/pkg/chrootarchive/diff_windows.go (about) 1 package chrootarchive 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 9 "github.com/docker/docker/pkg/archive" 10 ) 11 12 func ApplyLayer(dest string, layer archive.ArchiveReader) (size int64, err error) { 13 dest = filepath.Clean(dest) 14 decompressed, err := archive.DecompressStream(layer) 15 if err != nil { 16 return 0, err 17 } 18 defer decompressed.Close() 19 20 tmpDir, err := ioutil.TempDir(os.Getenv("temp"), "temp-docker-extract") 21 if err != nil { 22 return 0, fmt.Errorf("ApplyLayer failed to create temp-docker-extract under %s. %s", dest, err) 23 } 24 25 s, err := archive.UnpackLayer(dest, decompressed) 26 os.RemoveAll(tmpDir) 27 if err != nil { 28 return 0, fmt.Errorf("ApplyLayer %s failed UnpackLayer to %s", err, dest) 29 } 30 31 return s, nil 32 }