github.com/ggreg80/ketos@v0.0.0-20171109040536-049616f51ddb/testdata/tar-untar/tar.go (about)

     1  package main
     2  
     3  import (
     4  	"archive/tar"
     5  	"os"
     6  )
     7  
     8  func main() {
     9  
    10  	file, err := os.OpenFile("./taste.tar",
    11  		os.O_CREATE|os.O_WRONLY, os.ModePerm)
    12  	if err != nil {
    13  		panic(err)
    14  	}
    15  	defer file.Close()
    16  
    17  	tarw := tar.NewWriter(file)
    18  	defer tarw.Close()
    19  
    20  	asset1_content := []byte("this is asset1")
    21  	asset1 := tar.Header{
    22  		Name: "assets/asset1.txt",
    23  		Size: int64(len(asset1_content)),
    24  		Mode: int64(os.ModePerm),
    25  	}
    26  
    27  	err = tarw.WriteHeader(&asset1)
    28  	if err != nil {
    29  		panic(err)
    30  	}
    31  	_, err = tarw.Write(asset1_content)
    32  	if err != nil {
    33  		panic(err)
    34  	}
    35  
    36  	asset2_content := []byte("this is an etc file")
    37  	asset2 := tar.Header{
    38  		Name: "etc/config.yaml",
    39  		Size: int64(len(asset2_content)),
    40  		Mode: int64(os.ModePerm),
    41  	}
    42  
    43  	err = tarw.WriteHeader(&asset2)
    44  	if err != nil {
    45  		panic(err)
    46  	}
    47  	_, err = tarw.Write(asset2_content)
    48  	if err != nil {
    49  		panic(err)
    50  	}
    51  
    52  	asset_dir := tar.Header{
    53  		Name:     "abc/bbc",
    54  		Typeflag: tar.TypeDir,
    55  		Mode:     int64(os.ModePerm),
    56  	}
    57  	err = tarw.WriteHeader(&asset_dir)
    58  	if err != nil {
    59  		panic(err)
    60  	}
    61  }