]> jfr.im git - yt-dlp.git/commitdiff
[update] Set executable bit-mask
authorpukkandan <redacted>
Sun, 14 Aug 2022 13:33:58 +0000 (19:03 +0530)
committerpukkandan <redacted>
Sun, 14 Aug 2022 13:52:35 +0000 (19:22 +0530)
Closes #4621

yt_dlp/update.py

index a04518c9b643fda11da4db0f68078b116ff2203c..a5cd11150c79e1fb9ad6ae536fed7df885693c7f 100644 (file)
@@ -9,7 +9,7 @@
 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 @@ def update(self):
         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