example finding a block.
start string and reverse search up to next string. then replacing a line inside the block
python example
#!/usr/bin/pythonimport reimport sys
#v0.9.6fileName="listener_test.yml"dir="./unregister"variable="bar"block_start='CodeUri: ' + dirblock_end='AWS::Serverless::Function'rtext = ' AutoPublishCodeSha256: ' + variable + '\n'
with open("listener_test.yml") as ofile: lines=ofile.readlines() i = len(lines) - 1 AWSFound = False CodeUriFound = False AutoFound = False unum = 0 while i >= 0 and not AWSFound: if block_start in lines[i]: CodeUriFound = True unum = i if "AutoPublishCodeSha256:" in lines[i]: AutoFound = True unum = i if block_end in lines[i] and CodeUriFound: AWSFound = True
i -= 1
if AutoFound: lines[unum] = rtextelse: lines.insert(unum - 1, rtext)
with open('listener_test_new.yml', 'w') as file: lines = "".join(lines) file.write(lines)