1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# Solaris 11 IPC
# Automate package creation
from pprint import pprint
import shlex
import ConfigParser
import argparse
import string
class FakeSecHead(object):
"""Found on stackoverflow, public domain code"""
def __init__(self, fp):
self.fp = fp
self.sechead = '[IPC]\n'
def readline(self):
if self.sechead:
try:
return self.sechead
finally:
self.sechead = None
else:
return self.fp.readline()
'''
class IPC_Config(object):
def __init__(self, ipcfile):
self._header = 'IPC'
self.config = ConfigParser.SafeConfigParser()
self._config_read(ipcfile)
print("{0:s} parsed".format(ipcfile))
def __iter__(self):
for i in self.config.items(self._header):
yield i
def __getitem__(self, option):
return self.config.get(self._header, option)
def _config_read(self, ipcfile):
"""Wrapper for FakeSecHead"""
self.config.readfp(FakeSecHead(open(ipcfile)))
'''
class IPC_Config(object):
def __init__(self, ipcfile):
key_dict = {
'name': '',
'version': '',
'release': '',
'maintainer': '',
'upstream_url': '',
'description': '',
'arch': '',
'license': ''
}
script_dict = {
'build': [],
'prep': [],
'install': [],
'files': []
}
for key in key_dict:
for line in file(ipcfile).readlines():
parts = shlex.split(line)
if key + ":" in parts:
key_dict[key] = parts[1]
found_data = False
code_section = ['%build', '%prep', '%install', '%files']
for section in code_section:
for line in file(ipcfile).readlines():
parts = shlex.split(line)
if '%end' in parts:
found_data = False
if section in parts:
found_data = True
continue
if found_data:
script_dict[section.strip('%')].append(parts)
self.key_dict = key_dict
self.script_dict = script_dict
class IPC_Build(IPC_Config):
def __init__(self, ipcfile):
super(IPC_Build, self).__init__(ipcfile)
print(self.key_dict['name'])
testfile = "test.ipc"
build = IPC_Build(testfile)
|