11import copy
22import os
33import subprocess
4+ import sys
45from typing import Optional , Union
56
67from deploy .Windows .logger import logger
@@ -80,12 +81,6 @@ def __init__(self, file=DEPLOY_CONFIG):
8081 self .config_template = {}
8182 self .read ()
8283
83- # Bypass webui.config.DeployConfig.__setattr__()
84- # Don't write these into deploy.yaml
85- super ().__setattr__ ('GitOverCdn' , self .Repository in ['cn' ])
86- if self .Repository in ['global' , 'cn' ]:
87- super ().__setattr__ ('Repository' , 'https://github.com/LmeSzinc/StarRailCopilot' )
88-
8984 self .write ()
9085 self .show_config ()
9186
@@ -109,9 +104,21 @@ def read(self):
109104 if hasattr (self , key ):
110105 super ().__setattr__ (key , value )
111106
107+ self .config_redirect ()
108+
112109 def write (self ):
113110 poor_yaml_write (self .config , self .file )
114111
112+ def config_redirect (self ):
113+ """
114+ Redirect deploy config, must be called after each `read()`
115+ """
116+ # Bypass webui.config.DeployConfig.__setattr__()
117+ # Don't write these into deploy.yaml
118+ super ().__setattr__ ('GitOverCdn' , self .Repository in ['cn' ])
119+ if self .Repository in ['global' , 'cn' ]:
120+ super ().__setattr__ ('Repository' , 'https://github.com/LmeSzinc/StarRailCopilot' )
121+
115122 def filepath (self , path ):
116123 """
117124 Args:
@@ -143,7 +150,7 @@ def adb(self) -> str:
143150 if os .path .exists (exe ):
144151 return exe
145152
146- logger .warning (f'AdbExecutable: { exe } does not exists , use `adb` instead' )
153+ logger .warning (f'AdbExecutable: { exe } does not exist , use `adb` instead' )
147154 return 'adb'
148155
149156 @cached_property
@@ -152,12 +159,18 @@ def git(self) -> str:
152159 if os .path .exists (exe ):
153160 return exe
154161
155- logger .warning (f'GitExecutable: { exe } does not exists , use `git` instead' )
162+ logger .warning (f'GitExecutable: { exe } does not exist , use `git` instead' )
156163 return 'git'
157164
158165 @cached_property
159166 def python (self ) -> str :
160- return self .filepath (self .PythonExecutable )
167+ exe = self .filepath (self .PythonExecutable )
168+ if os .path .exists (exe ):
169+ return exe
170+
171+ current = sys .executable .replace ("\\ " , "/" )
172+ logger .warning (f'PythonExecutable: { exe } does not exist, use current python instead: { current } ' )
173+ return current
161174
162175 @cached_property
163176 def requirements_file (self ) -> str :
0 commit comments