9
class LiloImage(object):
10
def __init__(self, lines, path):
11
self.reset(lines, path)
18
" initrd: %s\n" %(self.title, self.root, self.kernel,
19
self.args, self.initrd))
20
def reset(self, lines, path):
21
self._initrd = self._kernel = self._readonly = None
27
map(self.set_from_line, lines)
29
def set_from_line(self, line, replace = None):
30
(com, arg) = GrubConf.grub_exact_split(line, 2)
32
if self.commands.has_key(com):
33
if self.commands[com] is not None:
34
setattr(self, self.commands[com], re.sub('^"(.+)"$', r"\1", arg.strip()))
36
logging.info("Ignored image directive %s" %(com,))
38
logging.warning("Unknown image directive %s" %(com,))
40
# now put the line in the list of lines
42
self.lines.append(line)
44
self.lines.pop(replace)
45
self.lines.insert(replace, line)
47
def set_kernel(self, val):
48
self._kernel = (None, self.path + "/" + val)
51
kernel = property(get_kernel, set_kernel)
53
def set_initrd(self, val):
54
self._initrd = (None, self.path + "/" + val)
57
initrd = property(get_initrd, set_initrd)
59
def set_args(self, val):
64
args += " root=" + self.root
68
args = property(get_args, set_args)
70
def set_readonly(self, val):
72
def get_readonly(self):
74
readonly = property(get_readonly, set_readonly)
76
# set up command handlers
77
commands = { "label": "title",
79
"rootnoverify": "root",
83
"read-only": "readonly",
87
class LiloConfigFile(object):
88
def __init__(self, fn = None):
97
def parse(self, buf = None):
99
if self.filename is None:
100
raise ValueError, "No config file defined to parse!"
102
f = open(self.filename, 'r')
103
lines = f.readlines()
106
lines = buf.split("\n")
108
path = os.path.dirname(self.filename)
116
if l.startswith('#'):
119
if l.startswith("image"):
121
self.add_image(LiloImage(img, path))
129
(com, arg) = GrubConf.grub_exact_split(l, 2)
130
if self.commands.has_key(com):
131
if self.commands[com] is not None:
132
setattr(self, self.commands[com], arg.strip())
134
logging.info("Ignored directive %s" %(com,))
136
logging.warning("Unknown directive %s" %(com,))
139
self.add_image(LiloImage(img, path))
141
def hasPassword(self):
144
def hasPasswordAccess(self):
147
def add_image(self, image):
148
self.images.append(image)
150
def _get_default(self):
151
for i in range(len(self.images)):
152
if self.images[i].title == self._default:
155
def _set_default(self, val):
157
default = property(_get_default, _set_default)
159
commands = { "default": "default",
160
"timeout": "timeout",
165
if __name__ == "__main__":
167
raise RuntimeError, "Need a grub.conf to read"
168
g = LiloConfigFile(sys.argv[1])
170
print i #, i.title, i.root, i.kernel, i.args, i.initrd