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 }