code: def write(path, contents, fatal=True, logger=None):
      
      if not path:
          return 0
  
      if is_dryrun():
          action = "write %s bytes to" % len(contents) if contents else "touch"
          LOG.debug("Would %s %s", action, short(path))
          return 1
  
      ensure_folder(path, fatal=fatal, logger=logger)
      if logger and contents:
          logger("Writing %s bytes to %s", len(contents), short(path))
  
      try:
          with io.open(path, "wt") as fh:
              if contents:
                  fh.write(decode(contents))
              else:
                  os.utime(path, None)
          return 1
  
      except Exception as e:
          return abort("Can't write to %s: %s", short(path), e, fatal=(fatal, -1))
docs: :param str|None path: Path to file
      :param str|None contents: Contents to write
      :param bool|None fatal: Abort execution on failure if True
      :param callable|None logger: Logger to use
      :return int: 1 if effectively done, 0 if no-op, -1 on failure