code: func CopyInfoSourcePath(path string, followLink bool) (CopyInfo, error) {
  	// normalize the file path and then evaluate the symbol link
  	// we will use the target file instead of the symbol link if
  	// followLink is set
  	path = normalizePath(path)
  
  	resolvedPath, rebaseName, err := ResolveHostSourcePath(path, followLink)
  	if err != nil {
  		return CopyInfo{}, err
  	}
  
  	stat, err := os.Lstat(resolvedPath)
  	if err != nil {
  		return CopyInfo{}, err
  	}
  
  	return CopyInfo{
  		Path:       resolvedPath,
  		Exists:     true,
  		IsDir:      stat.IsDir(),
  		RebaseName: rebaseName,
  	}, nil
  }
docs: // CopyInfoSourcePath stats the given path to create a CopyInfo
  // struct representing that resource for the source of an archive copy
  // operation. The given path should be an absolute local path. A source path
  // has all symlinks evaluated that appear before the last path separator ("/"
  // on Unix). As it is to be a copy source, the path must exist.