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  }