diff options
Diffstat (limited to 'scripts/lib/devtool/__init__.py')
| -rw-r--r-- | scripts/lib/devtool/__init__.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py index b231e46b16..14170cb69e 100644 --- a/scripts/lib/devtool/__init__.py +++ b/scripts/lib/devtool/__init__.py | |||
| @@ -261,3 +261,39 @@ def get_bbclassextend_targets(recipefile, pn): | |||
| 261 | targets.append('%s-%s' % (pn, variant)) | 261 | targets.append('%s-%s' % (pn, variant)) |
| 262 | return targets | 262 | return targets |
| 263 | 263 | ||
| 264 | def replace_from_file(path, old, new): | ||
| 265 | """Replace strings on a file""" | ||
| 266 | |||
| 267 | def read_file(path): | ||
| 268 | data = None | ||
| 269 | with open(path) as f: | ||
| 270 | data = f.read() | ||
| 271 | return data | ||
| 272 | |||
| 273 | def write_file(path, data): | ||
| 274 | if data is None: | ||
| 275 | return | ||
| 276 | wdata = data.rstrip() + "\n" | ||
| 277 | with open(path, "w") as f: | ||
| 278 | f.write(wdata) | ||
| 279 | |||
| 280 | # In case old is None, return immediately | ||
| 281 | if old is None: | ||
| 282 | return | ||
| 283 | try: | ||
| 284 | rdata = read_file(path) | ||
| 285 | except IOError as e: | ||
| 286 | # if file does not exit, just quit, otherwise raise an exception | ||
| 287 | if e.errno == errno.ENOENT: | ||
| 288 | return | ||
| 289 | else: | ||
| 290 | raise | ||
| 291 | |||
| 292 | old_contents = rdata.splitlines() | ||
| 293 | new_contents = [] | ||
| 294 | for old_content in old_contents: | ||
| 295 | try: | ||
| 296 | new_contents.append(old_content.replace(old, new)) | ||
| 297 | except ValueError: | ||
| 298 | pass | ||
| 299 | write_file(path, "\n".join(new_contents)) | ||
