MCPcopy Index your code
hub / github.com/BasicProtein/AugmentCode-Free / apply_patch

Method apply_patch

augment_tools_core/patch_manager.py:151–213  ·  view source on GitHub ↗

应用补丁到指定文件

(self, file_path: str, patch_mode: PatchMode)

Source from the content-addressed store, hash-verified

149 return re.search(pattern, content)
150
151 def apply_patch(self, file_path: str, patch_mode: PatchMode) -> PatchResult:
152 """应用补丁到指定文件"""
153 try:
154 # 检查文件是否存在
155 if not os.path.exists(file_path):
156 return PatchResult(False, f"文件不存在: {file_path}")
157
158 print_info(f"开始补丁文件: {file_path}")
159 print_info(f"补丁模式: {patch_mode.value} - {self.get_patch_description(patch_mode)}")
160
161 # 读取文件内容
162 try:
163 with open(file_path, 'r', encoding='utf-8') as f:
164 content = f.read()
165 except Exception as e:
166 return PatchResult(False, f"读取文件失败: {e}")
167
168 # 检查是否已被补丁
169 if self._is_already_patched(content):
170 return PatchResult(False, "文件已被补丁,跳过操作")
171
172 # 查找callApi函数
173 match = self._find_callapi_function(content)
174 if not match:
175 return PatchResult(False, "未找到async callApi函数")
176
177 # 创建备份
178 backup_success, backup_path = self._create_backup(file_path)
179 if not backup_success:
180 return PatchResult(False, "创建备份失败")
181
182 # 生成完整补丁代码
183 patch_code = self.patches[patch_mode] + self._generate_session_randomizer()
184
185 # 应用补丁
186 func_start = match.end()
187 patched_content = content[:func_start] + patch_code + content[func_start:]
188
189 # 写入补丁后的内容
190 try:
191 with open(file_path, 'w', encoding='utf-8') as f:
192 f.write(patched_content)
193
194 print_success(f"补丁应用成功: {file_path}")
195 print_info(f"效果: {self.get_patch_description(patch_mode)}")
196 print_info("隐私保护已启用!")
197
198 return PatchResult(True, "补丁应用成功", file_path, backup_path)
199
200 except Exception as e:
201 # 尝试从备份恢复
202 try:
203 shutil.copy2(backup_path, file_path)
204 print_warning("已从备份恢复原始文件")
205 except:
206 print_error("恢复原始文件失败!")
207
208 # 生成详细的错误信息

Callers 2

runMethod · 0.80
runMethod · 0.80

Calls 11

get_patch_descriptionMethod · 0.95
_is_already_patchedMethod · 0.95
_create_backupMethod · 0.95
PatchResultClass · 0.85
print_infoFunction · 0.85
print_successFunction · 0.85
print_warningFunction · 0.85
print_errorFunction · 0.85

Tested by

no test coverage detected