diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-08-14 19:03:58 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-08-14 19:22:35 +0530 |
commit | a6125983ab4434fc4079f575a4bf22042411ea5e (patch) | |
tree | 8912ee1a2a44a15dd10ef982ca775a961b7a0b91 /yt_dlp/update.py | |
parent | 8f84770acd7b70e7f6876f9ea8c5b1f4f0497b66 (diff) | |
download | hypervideo-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.py | 36 |
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 |