blob: 287e286d3ddb03f16c9ac0fc403ae434b28de9cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
from ...core.main import Models, Step
from ...core.sdk import ContinueSDK
from ...models.filesystem_edit import FileEdit, Range
class FindAndReplaceStep(Step):
name: str = "Find and replace"
filepath: str
pattern: str
replacement: str
async def describe(self, models: Models):
return f"Replaced all instances of `{self.pattern}` with `{self.replacement}` in `{self.filepath}`"
async def run(self, sdk: ContinueSDK):
file_content = await sdk.ide.readFile(self.filepath)
while self.pattern in file_content:
start_index = file_content.index(self.pattern)
end_index = start_index + len(self.pattern)
await sdk.ide.applyFileSystemEdit(
FileEdit(
filepath=self.filepath,
range=Range.from_indices(file_content, start_index, end_index - 1),
replacement=self.replacement,
)
)
file_content = (
file_content[:start_index] + self.replacement + file_content[end_index:]
)
await sdk.ide.saveFile(self.filepath)
|