code: func cpDir(src, dst string, filter []string) error {
  	return filepath.Walk(src, func(fullpath string, fi os.FileInfo, err error) error {
  		if err != nil {
  			return err
  		}
  		for _, suffix := range filter {
  			if strings.HasSuffix(fi.Name(), suffix) {
  				return nil
  			}
  		}
  		suffix, err := filepath.Rel(src, fullpath)
  		if err != nil {
  			return fmt.Errorf("Failed to find Rel(%q, %q): %v", src, fullpath, err)
  		}
  		if fi.IsDir() {
  			return nil
  		}
  		return cpFile(fullpath, filepath.Join(dst, suffix))
  	})
  }
docs: // cpDir copies the contents of src dir into dst dir.
  // filter is a list of file suffixes to skip. ex: ".go"