xref: /OK3568_Linux_fs/yocto/poky/meta/lib/oeqa/utils/ftools.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1#
2# SPDX-License-Identifier: MIT
3#
4
5import os
6import re
7import errno
8
9def write_file(path, data):
10    # In case data is None, return immediately
11    if data is None:
12        return
13    wdata = data.rstrip() + "\n"
14    with open(path, "w") as f:
15        f.write(wdata)
16
17def append_file(path, data):
18    # In case data is None, return immediately
19    if data is None:
20        return
21    wdata = data.rstrip() + "\n"
22    with open(path, "a") as f:
23            f.write(wdata)
24
25def read_file(path):
26    data = None
27    with open(path) as f:
28        data = f.read()
29    return data
30
31def remove_from_file(path, data):
32    # In case data is None, return immediately
33    if data is None:
34        return
35    try:
36        rdata = read_file(path)
37    except IOError as e:
38        # if file does not exit, just quit, otherwise raise an exception
39        if e.errno == errno.ENOENT:
40            return
41        else:
42            raise
43
44    contents = rdata.strip().splitlines()
45    for r in data.strip().splitlines():
46        try:
47            contents.remove(r)
48        except ValueError:
49            pass
50    write_file(path, "\n".join(contents))
51