distil/puppet_generate.py

53 lines
1.2 KiB
Python

import sys
# pip install requirements-parser
import requirements
class Requirements(object):
def __init__(self):
self.reqs = []
def parse(self, stream):
self.reqs = requirements.parse(stream)
def package_list(self):
final = """"""
for req in self.reqs:
final += """
package {"%(package)s":
ensure => "%(version)s",
provider => pip
}
""" % {"package": req.name, "version": req.specs[0][1] }
return final
def requirement_list(self):
return ",\n".join( [ """Package[%(package)s]""" %
{"package": req.name } for req in self.reqs ] )
if __name__ == '__main__':
import argparse
a = argparse.ArgumentParser()
a.add_argument("-f", dest="filename")
a.add_argument("-l", dest="list_", action="store_true")
args = a.parse_args()
if args.filename == "-":
# We're following standardized posix thing
fh = sys.stdin
else:
try:
fh = open(args.filename)
except IOError as e:
print "Couldn't open %s" % args.filename
sys.exit(1)
r = Requirements()
r.parse(fh)
if args.list_:
print r.requirement_list()
sys.exit(0)
print r.package_list()