in container/go/cmd/flattener/flattener.go [39:74]
func main() {
flag.Var(&layers, "layer", "One or more layers with the following comma separated values (Compressed layer tarball, Uncompressed layer tarball, digest file, diff ID file). e.g., --layer layer.tar.gz,layer.tar,<file with digest>,<file with diffID>.")
flag.Parse()
if *outTarball == "" {
log.Fatalln("Option --filesystem is required.")
}
if *outConfig == "" {
log.Fatalln("Option --metadata is required.")
}
if *imgConfig == "" {
log.Fatalln("Option --config is required.")
}
imgParts, err := compat.ImagePartsFromArgs(*imgConfig, *baseManifest, *imgTarball, layers)
if err != nil {
log.Fatalf("Unable to determine parts of the image from the specified arguments: %v", err)
}
img, err := compat.ReadImage(imgParts)
if err != nil {
log.Fatalf("Error reading image: %v", err)
}
c, err := img.RawConfigFile()
if err != nil {
log.Fatalf("Unable to get config from image: %v", err)
}
if err := ioutil.WriteFile(*outConfig, c, os.ModePerm); err != nil {
log.Fatalf("Unable to write image config to %s: %v", *outConfig, err)
}
o := mutate.Extract(img)
f, err := os.Create(*outTarball)
if err != nil {
log.Fatalf("Unable to create output flattened tarball file %s: %v", *outTarball, err)
}
if _, err := io.Copy(f, o); err != nil {
log.Fatalf("Unable to write to output flattened tarball file %s: %v", *outTarball, err)
}
}