diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2013-04-17 09:06:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2013-04-17 09:06:52 -0400 |
commit | a332d3db796261e5cc5dec457c8ae0997c7257b4 (patch) | |
tree | 44427c4643642ef3dbbeda4da2fc069f02a35c1b /ipsbuild.py | |
parent | edf6846069effba5b7c88bc96bd4cd852a4d7f2f (diff) | |
download | ipsutils-a332d3db796261e5cc5dec457c8ae0997c7257b4.tar.gz |
IPC should be IPS. I was tired.
Diffstat (limited to 'ipsbuild.py')
-rw-r--r-- | ipsbuild.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/ipsbuild.py b/ipsbuild.py new file mode 100644 index 0000000..af53bdb --- /dev/null +++ b/ipsbuild.py @@ -0,0 +1,72 @@ +# Solaris 11 IPS +# Automate package creation + +from pprint import pprint +from collections import deque +import subprocess +import shlex +import ConfigParser +import argparse +import string + +class IPS_Config(object): + def __init__(self, ipsfile): + + 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(ipsfile).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(ipsfile).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 IPS_Task(object): + def __init__(self, task): + if type(task) is not type(list): + TypeError("task must be a list") + +class IPS_Build(IPS_Config): + def __init__(self, ipsfile): + super(IPS_Build, self).__init__(ipsfile) + self.task_queue = deque() + for key in self.script_dict: + for i in self.script_dict[key]: + self.task_queue.append(IPS_Task(i)) + + + +testfile = "test.ips" +build = IPS_Build(testfile) +print build.task_queue |