func newImageDestination(ref dirReference, compress bool) (types.ImageDestination, error) {
	d := &dirImageDestination{ref: ref, compress: compress}

	// If directory exists check if it is empty
	// if not empty, check whether the contents match that of a container image directory and overwrite the contents
	// if the contents don't match throw an error
	dirExists, err := pathExists(d.ref.resolvedPath)
	if err != nil {
		return nil, errors.Wrapf(err, "error checking for path %q", d.ref.resolvedPath)
	}
	if dirExists {
		isEmpty, err := isDirEmpty(d.ref.resolvedPath)
		if err != nil {
			return nil, err
		}

		if !isEmpty {
			versionExists, err := pathExists(d.ref.versionPath())
			if err != nil {
				return nil, errors.Wrapf(err, "error checking if path exists %q", d.ref.versionPath())
			}
			if versionExists {
				contents, err := ioutil.ReadFile(d.ref.versionPath())
				if err != nil {
					return nil, err
				}
				// check if contents of version file is what we expect it to be
				if string(contents) != version {
					return nil, ErrNotContainerImageDir
				}
			} else {
				return nil, ErrNotContainerImageDir
			}
			// delete directory contents so that only one image is in the directory at a time
			if err = removeDirContents(d.ref.resolvedPath); err != nil {
				return nil, errors.Wrapf(err, "error erasing contents in %q", d.ref.resolvedPath)
			}
			logrus.Debugf("overwriting existing container image directory %q", d.ref.resolvedPath)
		}
	} else {
		// create directory if it doesn't exist
		if err := os.MkdirAll(d.ref.resolvedPath, 0755); err != nil {
			return nil, errors.Wrapf(err, "unable to create directory %q", d.ref.resolvedPath)
		}
	}
	// create version file
	err = ioutil.WriteFile(d.ref.versionPath(), []byte(version), 0644)
	if err != nil {
		return nil, errors.Wrapf(err, "error creating version file %q", d.ref.versionPath())
	}
	return d, nil
}
func newImageDestination(ref dirReference, compress bool) (types.ImageDestination, error) {
	d := &dirImageDestination{ref: ref, compress: compress}

	
	
	
	dirExists, err := pathExists(d.ref.resolvedPath)
	if err != nil {
		return nil, errors.Wrapf(err, "error checking for path %q", d.ref.resolvedPath)
	}
	if dirExists {
		isEmpty, err := isDirEmpty(d.ref.resolvedPath)
		if err != nil {
			return nil, err
		}

		if !isEmpty {
			versionExists, err := pathExists(d.ref.versionPath())
			if err != nil {
				return nil, errors.Wrapf(err, "error checking if path exists %q", d.ref.versionPath())
			}
			if versionExists {
				contents, err := ioutil.ReadFile(d.ref.versionPath())
				if err != nil {
					return nil, err
				}
				
				if string(contents) != version {
					return nil, ErrNotContainerImageDir
				}
			} else {
				return nil, ErrNotContainerImageDir
			}
			
			if err = removeDirContents(d.ref.resolvedPath); err != nil {
				return nil, errors.Wrapf(err, "error erasing contents in %q", d.ref.resolvedPath)
			}
			logrus.Debugf("overwriting existing container image directory %q", d.ref.resolvedPath)
		}
	} else {
		
		if err := os.MkdirAll(d.ref.resolvedPath, 0755); err != nil {
			return nil, errors.Wrapf(err, "unable to create directory %q", d.ref.resolvedPath)
		}
	}
	
	err = ioutil.WriteFile(d.ref.versionPath(), []byte(version), 0644)
	if err != nil {
		return nil, errors.Wrapf(err, "error creating version file %q", d.ref.versionPath())
	}
	return d, nil
}
func newImageDestination ( ref dirReference , compress bool ) ( types . ImageDestination , error ) { d := & dirImageDestination { ref : ref , compress : compress } // If directory exists check if it is empty // if not empty, check whether the contents match that of a container image directory and overwrite the contents // if the contents don't match throw an error dirExists , err := pathExists ( d . ref . resolvedPath ) if err != nil { return nil , errors . Wrapf ( err , " " , d . ref . resolvedPath ) } if dirExists { isEmpty , err := isDirEmpty ( d . ref . resolvedPath ) if err != nil { return nil , err } if ! isEmpty { versionExists , err := pathExists ( d . ref . versionPath ( ) ) if err != nil { return nil , errors . Wrapf ( err , " " , d . ref . versionPath ( ) ) } if versionExists { contents , err := ioutil . ReadFile ( d . ref . versionPath ( ) ) if err != nil { return nil , err } // check if contents of version file is what we expect it to be if string ( contents ) != version { return nil , ErrNotContainerImageDir } } else { return nil , ErrNotContainerImageDir } // delete directory contents so that only one image is in the directory at a time if err = removeDirContents ( d . ref . resolvedPath ) ; err != nil { return nil , errors . Wrapf ( err , " " , d . ref . resolvedPath ) } logrus . Debugf ( " " , d . ref . resolvedPath ) } } else { // create directory if it doesn't exist if err := os . MkdirAll ( d . ref . resolvedPath , 0755 ) ; err != nil { return nil , errors . Wrapf ( err , " " , d . ref . resolvedPath ) } } // create version file err = ioutil . WriteFile ( d . ref . versionPath ( ) , [ ] byte ( version ) , 0644 ) if err != nil { return nil , errors . Wrapf ( err , " " , d . ref . versionPath ( ) ) } return d , nil }
// newImageDestination returns an ImageDestination for writing to a directory.
newImageDestination returns an ImageDestination for writing to a directory .