2021-11-21 10:52:29 +00:00
|
|
|
import pprint
|
|
|
|
import os
|
|
|
|
|
|
|
|
class ServerProps:
|
|
|
|
|
|
|
|
def __init__(self, filepath):
|
|
|
|
self.filepath = filepath
|
|
|
|
self.props = self._parse()
|
|
|
|
|
|
|
|
def _parse(self):
|
|
|
|
"""Loads and parses the file specified in self.filepath"""
|
|
|
|
with open(self.filepath) as fp:
|
|
|
|
line = fp.readline()
|
|
|
|
d = {}
|
|
|
|
if os.path.exists(".header"):
|
|
|
|
os.remove(".header")
|
|
|
|
while line:
|
|
|
|
if '#' != line[0]:
|
|
|
|
s = line
|
|
|
|
s1 = s[:s.find('=')]
|
|
|
|
if '\n' in s:
|
|
|
|
s2 = s[s.find('=')+1:s.find('\n')]
|
|
|
|
else:
|
|
|
|
s2 = s[s.find('=')+1:]
|
|
|
|
d[s1] = s2
|
|
|
|
else:
|
|
|
|
with open(".header", "a+") as h:
|
|
|
|
h.write(line)
|
|
|
|
line = fp.readline()
|
|
|
|
return d
|
|
|
|
|
|
|
|
def print(self):
|
|
|
|
"""Prints the properties dictionary (using pprint)"""
|
|
|
|
pprint.pprint(self.props)
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
"""Returns the properties dictionary"""
|
|
|
|
return self.props
|
|
|
|
|
|
|
|
def update(self, key, val):
|
|
|
|
"""Updates property in the properties dictionary [ update("pvp", "true") ] and returns boolean condition"""
|
|
|
|
if key in self.props.keys():
|
|
|
|
self.props[key] = val
|
|
|
|
return True
|
|
|
|
else:
|
|
|
|
return False
|
|
|
|
|
|
|
|
def save(self):
|
|
|
|
"""Writes to the new file"""
|
|
|
|
with open(self.filepath, "a+") as f:
|
|
|
|
f.truncate(0)
|
|
|
|
with open(".header") as header:
|
|
|
|
line = header.readline()
|
|
|
|
while line:
|
|
|
|
f.write(line)
|
|
|
|
line = header.readline()
|
|
|
|
header.close()
|
|
|
|
for key, value in self.props.items():
|
|
|
|
f.write(key + "=" + value + "\n")
|
|
|
|
if os.path.exists(".header"):
|
|
|
|
os.remove(".header")
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def cleanup():
|
|
|
|
if os.path.exists(".header"):
|
|
|
|
os.remove(".header")
|