File: update_file.py

package info (click to toggle)
python3.9 3.9.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 102,508 kB
  • sloc: python: 606,145; ansic: 515,486; xml: 31,209; sh: 4,917; cpp: 3,781; makefile: 1,885; asm: 1,486; objc: 761; lisp: 502; pascal: 360; javascript: 177; csh: 11
file content (28 lines) | stat: -rw-r--r-- 762 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"""
A script that replaces an old file with a new one, only if the contents
actually changed.  If not, the new file is simply deleted.

This avoids wholesale rebuilds when a code (re)generation phase does not
actually change the in-tree generated code.
"""

import os
import sys


def main(old_path, new_path):
    with open(old_path, 'rb') as f:
        old_contents = f.read()
    with open(new_path, 'rb') as f:
        new_contents = f.read()
    if old_contents != new_contents:
        os.replace(new_path, old_path)
    else:
        os.unlink(new_path)


if __name__ == '__main__':
    if len(sys.argv) != 3:
        print("Usage: %s <path to be updated> <path with new contents>" % (sys.argv[0],))
        sys.exit(1)
    main(sys.argv[1], sys.argv[2])