]> jfr.im git - yt-dlp.git/commitdiff
[update] Do not restart into versions without `--update-to`
authorpukkandan <redacted>
Tue, 20 Jun 2023 22:42:01 +0000 (04:12 +0530)
committerpukkandan <redacted>
Wed, 21 Jun 2023 00:40:40 +0000 (06:10 +0530)
yt_dlp/update.py

index 6c9bdaf1c7bfe6616c7d9d839b616730b2379554..4790075eb631980c2ccd87632d6b405219752340 100644 (file)
@@ -149,7 +149,7 @@ def __init__(self, ydl, target=None):
                     f'You are switching to an {self.ydl._format_err("unofficial", "red")} executable '
                     f'from {self.ydl._format_err(self._target_repo, self.ydl.Styles.EMPHASIS)}. '
                     f'Run {self.ydl._format_err("at your own risk", "light red")}')
-                self.restart = self._blocked_restart
+                self._block_restart('Automatically restarting into custom builds is disabled for security reasons')
         else:
             self._target_repo = UPDATE_SOURCES.get(self.target_channel)
             if not self._target_repo:
@@ -294,6 +294,7 @@ def update(self):
         if (_VERSION_RE.fullmatch(self.target_tag[5:])
                 and version_tuple(self.target_tag[5:]) < (2023, 3, 2)):
             self.ydl.report_warning('You are downgrading to a version without --update-to')
+            self._block_restart('Cannot automatically restart to a version without --update-to')
 
         directory = os.path.dirname(self.filename)
         if not os.access(self.filename, os.W_OK):
@@ -381,11 +382,11 @@ def restart(self):
         _, _, returncode = Popen.run(self.cmd)
         return returncode
 
-    def _blocked_restart(self):
-        self._report_error(
-            'Automatically restarting into custom builds is disabled for security reasons. '
-            'Restart yt-dlp to use the updated version', expected=True)
-        return self.ydl._download_retcode
+    def _block_restart(self, msg):
+        def wrapper():
+            self._report_error(f'{msg}. Restart yt-dlp to use the updated version', expected=True)
+            return self.ydl._download_retcode
+        self.restart = wrapper
 
 
 def run_update(ydl):