change filemode mechanism in gitea.write_when_new
This commit is contained in:
9
gitea.py
9
gitea.py
@ -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
|
||||||
|
Reference in New Issue
Block a user