code: func Render(i *RenderInput) (*RenderResult, error) {
  	existing, err := ioutil.ReadFile(i.Path)
  	if err != nil && !os.IsNotExist(err) {
  		return nil, errors.Wrap(err, "failed reading file")
  	}
  
  	if bytes.Equal(existing, i.Contents) {
  		return &RenderResult{
  			DidRender:   false,
  			WouldRender: true,
  			Contents:    existing,
  		}, nil
  	}
  
  	if i.Dry {
  		fmt.Fprintf(i.DryStream, "> %s\n%s", i.Path, i.Contents)
  	} else {
  		if err := AtomicWrite(i.Path, i.CreateDestDirs, i.Contents, i.Perms, i.Backup); err != nil {
  			return nil, errors.Wrap(err, "failed writing file")
  		}
  	}
  
  	return &RenderResult{
  		DidRender:   true,
  		WouldRender: true,
  		Contents:    i.Contents,
  	}, nil
  }
docs: // Render atomically renders a file contents to disk, returning a result of
  // whether it would have rendered and actually did render.