change filemode mechanism in gitea.write_when_new

This commit is contained in:
2025-04-17 16:36:17 +02:00
parent cddf70bcdd
commit 9c707e2375

View File

@ -47,8 +47,7 @@ fi
""" """
def write_when_new(doit, filename, content, executable=False): def write_when_new(doit, filename, content, executable=False):
if executable: newmode = 0o755 is executable else 0o644
executable = 0o100 # file mode u+x
if content is None: if content is None:
lines = [] lines = []
else: else:
@ -61,14 +60,14 @@ def write_when_new(doit, filename, content, executable=False):
filemode = os.stat(filename).st_mode filemode = os.stat(filename).st_mode
except FileNotFoundError: except FileNotFoundError:
old = None old = None
filemode = 0o644 filemode = 0
if old == content and (filemode & executable == executable): if old == content and (filemode | newmode == filemode):
return False return False
if doit: if doit:
if lines: if lines:
with open(filename, 'w') as fil: with open(filename, 'w') as fil:
fil.write(content) fil.write(content)
os.chmod(filename, filemode + executable) os.chmod(filename, newmode)
else: else:
os.remove(filename) os.remove(filename)
return True return True