aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/update.py
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-08-14 19:03:58 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-08-14 19:22:35 +0530
commita6125983ab4434fc4079f575a4bf22042411ea5e (patch)
tree8912ee1a2a44a15dd10ef982ca775a961b7a0b91 /yt_dlp/update.py
parent8f84770acd7b70e7f6876f9ea8c5b1f4f0497b66 (diff)
downloadhypervideo-pre-a6125983ab4434fc4079f575a4bf22042411ea5e.tar.lz
hypervideo-pre-a6125983ab4434fc4079f575a4bf22042411ea5e.tar.xz
hypervideo-pre-a6125983ab4434fc4079f575a4bf22042411ea5e.zip
[update] Set executable bit-mask
Closes #4621
Diffstat (limited to 'yt_dlp/update.py')
-rw-r--r--yt_dlp/update.py36
1 files changed, 22 insertions, 14 deletions
diff --git a/yt_dlp/update.py b/yt_dlp/update.py
index a04518c9b..a5cd11150 100644
--- a/yt_dlp/update.py
+++ b/yt_dlp/update.py
@@ -9,7 +9,7 @@ import sys
from zipimport import zipimporter
from .compat import functools # isort: split
-from .compat import compat_realpath
+from .compat import compat_realpath, compat_shlex_quote
from .utils import (
Popen,
cached_method,
@@ -229,24 +229,32 @@ class Updater:
except OSError:
return self._report_permission_error(new_filename)
- try:
- if old_filename:
+ if old_filename:
+ try:
os.rename(self.filename, old_filename)
- except OSError:
- return self._report_error('Unable to move current version')
- try:
- if old_filename:
+ except OSError:
+ return self._report_error('Unable to move current version')
+
+ try:
os.rename(new_filename, self.filename)
- except OSError:
- self._report_error('Unable to overwrite current version')
- return os.rename(old_filename, self.filename)
+ except OSError:
+ self._report_error('Unable to overwrite current version')
+ return os.rename(old_filename, self.filename)
- if detect_variant() not in ('win32_exe', 'py2exe'):
- if old_filename:
- os.remove(old_filename)
- else:
+ if detect_variant() in ('win32_exe', 'py2exe'):
atexit.register(Popen, f'ping 127.0.0.1 -n 5 -w 1000 & del /F "{old_filename}"',
shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+ elif old_filename:
+ try:
+ os.remove(old_filename)
+ except OSError:
+ self._report_error('Unable to remove the old version')
+
+ try:
+ os.chmod(self.filename, 0o777)
+ except OSError:
+ return self._report_error(
+ f'Unable to set permissions. Run: sudo chmod a+rx {compat_shlex_quote(self.filename)}')
self.ydl.to_screen(f'Updated yt-dlp to version {self.new_version}')
return True