docs: def update_file(filename, items):
      '''Edits the given file in place, replacing any instances of {key} with the
      appropriate value from the provided items dict. If the given filename ends
      with ".xml" values will be quoted and escaped for XML.
      '''
      # TODO: Implement something in the templates to denote whether the value
      # being replaced is an XML attribute or a value. Perhaps move to dyanmic
      # XML tree building rather than string replacement.
      should_escape = filename.endswith('addon.xml')
  
      with open(filename, 'r') as inp:
          text = inp.read()
  
      for key, val in items.items():
          if should_escape:
              val = saxutils.quoteattr(val)
          text = text.replace('{%s}' % key, val)
      output = text
  
      with open(filename, 'w') as out:
          out.write(output)