MCPcopy
hub / github.com/HelloZeroNet/ZeroNet / saveValue

Method saveValue

src/Config.py:466–508  ·  view source on GitHub ↗
(self, key, value)

Source from the content-addressed store, hash-verified

464 ConfigPlugin(self)
465
466 def saveValue(self, key, value):
467 if not os.path.isfile(self.config_file):
468 content = ""
469 else:
470 content = open(self.config_file).read()
471 lines = content.splitlines()
472
473 global_line_i = None
474 key_line_i = None
475 i = 0
476 for line in lines:
477 if line.strip() == "[global]":
478 global_line_i = i
479 if line.startswith(key + " =") or line == key:
480 key_line_i = i
481 i += 1
482
483 if key_line_i and len(lines) > key_line_i + 1:
484 while True: # Delete previous multiline values
485 is_value_line = lines[key_line_i + 1].startswith(" ") or lines[key_line_i + 1].startswith("\t")
486 if not is_value_line:
487 break
488 del lines[key_line_i + 1]
489
490 if value is None: # Delete line
491 if key_line_i:
492 del lines[key_line_i]
493
494 else: # Add / update
495 if type(value) is list:
496 value_lines = [""] + [str(line).replace("\n", "").replace("\r", "") for line in value]
497 else:
498 value_lines = [str(value).replace("\n", "").replace("\r", "")]
499 new_line = "%s = %s" % (key, "\n ".join(value_lines))
500 if key_line_i: # Already in the config, change the line
501 lines[key_line_i] = new_line
502 elif global_line_i is None: # No global section yet, append to end of file
503 lines.append("[global]")
504 lines.append(new_line)
505 else: # Has global section, append the line after it
506 lines.insert(global_line_i + 1, new_line)
507
508 open(self.config_file, "w").write("\n".join(lines))
509
510 def getServerInfo(self):
511 from Plugin import PluginManager

Callers 5

actionConfigSetMethod · 0.80
__init__Method · 0.80
all.jsFile · 0.80
loadFilesOptionalMethod · 0.80

Calls 2

readMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected