docs: def update_file(self, force=None):
          """
          Update the file with the contents of the files in the ``.d`` directory.
  
          :param force: Override the value of :attr:`force` (a boolean or
                        :data:`None`).
          :raises: :exc:`RefuseToOverwrite` when :attr:`force` is :data:`False`
                   and the contents of :attr:`filename` were modified.
          """
          if force is None:
              force = self.force
          if not self.context.is_directory(self.directory):
              # Create the .d directory.
              logger.info("Creating directory %s ..", format_path(self.directory))
              self.context.execute('mkdir', '-p', self.directory, tty=False)
              # Move the original file into the .d directory.
              local_file = os.path.join(self.directory, 'local')
              logger.info("Moving %s to %s ..", format_path(self.filename), format_path(local_file))
              self.context.execute('mv', self.filename, local_file, tty=False)
          # Read the modular configuration file(s).
          blocks = []
          for entry in natsort(self.context.list_entries(self.directory)):
              if not entry.startswith('.'):
                  filename = os.path.join(self.directory, entry)
                  if self.context.is_executable(filename):
                      blocks.append(self.execute_file(filename))
                  else:
                      blocks.append(self.read_file(filename))
          contents = b"\n\n".join(blocks)
          # Make sure the generated file was not modified? We skip this on the
          # first run, when the original file was just moved into the newly
          # created directory (see above).
          if all(map(self.context.is_file, (self.filename, self.checksum_file))):
              logger.info("Checking for local changes to %s ..", format_path(self.filename))
              if self.new_checksum != self.old_checksum:
                  if force:
                      logger.warning(compact(
                          """
                          The contents of the file to generate ({filename})
                          were modified but --force was used so overwriting
                          anyway!
                          """,
                          filename=format_path(self.filename),
                      ))
                  else:
                      raise RefuseToOverwrite(compact(
                          """
                          The contents of the file to generate ({filename})
                          were modified and I'm refusing to overwrite it! If
                          you're sure you want to proceed, use the --force
                          option or delete the file {checksum_file} and
                          retry.
                          """,
                          filename=format_path(self.filename),
                          checksum_file=format_path(self.checksum_file),
                      ))
          # Update the generated configuration file.
          self.write_file(self.filename, contents)
          # Update the checksum file.
          self.context.write_file(self.checksum_file, self.new_checksum)