# Copyright (c) 2020 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

"""
Helper functions used by gen_kconfig_rest.py and gen_devicetree_rest.py.
"""

import errno

def write_if_updated(path, s):
    """
    Writes 's' as the contents of <out_dir>/<filename>, but only if it
    differs from the current contents of the file. This avoids unnecessary
    timestamp updates, which trigger documentation rebuilds.

    Returns True if the file was updated, False otherwise.
    """

    try:
        with open(path, "r", encoding="utf-8") as f:
            if s == f.read():
                return False
    except OSError as e:
        if e.errno != errno.ENOENT:
            raise

    with open(path, "w", encoding="utf-8") as f:
        f.write(s)
    return True
