| |
@@ -0,0 +1,49 @@
|
| |
+ import modulemd
|
| |
+ import os
|
| |
+ import tempfile
|
| |
+ import shutil
|
| |
+ from string import Template
|
| |
+
|
| |
+
|
| |
+ class PercentTemplate(Template):
|
| |
+ delimiter = '%%'
|
| |
+
|
| |
+
|
| |
+ class ModulemdDockerfileGenerator(object):
|
| |
+
|
| |
+ def __init__(self, args=None):
|
| |
+ self.dockerfile_path = args.output
|
| |
+ self.modulemd_path = args.modulemd_file
|
| |
+ self.template_path=args.template
|
| |
+
|
| |
+ def load_modulemd(self):
|
| |
+ self.mmd = modulemd.ModuleMetadata()
|
| |
+ self.mmd.load(self.modulemd_path)
|
| |
+
|
| |
+ self.values = {'NAME': self.mmd.name,'VERSION': self.mmd.version,
|
| |
+ 'DESCRIPTION': self.mmd.description, 'SUMMARY': self.mmd.summary,
|
| |
+ 'API_PACKAGES': ' '.join(self.mmd.api.rpms)}
|
| |
+
|
| |
+ def generate_dockerfile(self):
|
| |
+ tmplFile = open(self.template_path)
|
| |
+ tmpl = PercentTemplate(tmplFile.read())
|
| |
+ self.result = tmpl.safe_substitute(self.values)
|
| |
+
|
| |
+ def save_result(self):
|
| |
+ if self.dockerfile_path is not None:
|
| |
+ output_file = self.dockerfile_path
|
| |
+ else:
|
| |
+ tmp_dir = tempfile.mkdtemp()
|
| |
+ if os.path.isdir(tmp_dir):
|
| |
+ shutil.rmtree(tmp_dir)
|
| |
+ os.makedirs(tmp_dir)
|
| |
+ output_file = os.path.join(tmp_dir, os.path.basename('Dockerfile'))
|
| |
+
|
| |
+ with open(output_file, 'w') as f:
|
| |
+ f.write(self.result)
|
| |
+ print("Modulemd template is generated here: %s" % (output_file))
|
| |
+
|
| |
+ def run(self):
|
| |
+ self.load_modulemd()
|
| |
+ self.generate_dockerfile()
|
| |
+ self.save_result()
|
| |