<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -37,6 +37,20 @@ class Repository(object):
             results.append(dist)
         return results
 
+    def create_dist(self, distinfo):
+        if distinfo['Codename'] in self.get_dists():
+            raise ValueError('Cannot create distribution %s, it already exists' % label)
+
+        dist = ['%s: %s' % (k, v) for k, v in distinfo.items() if k and v]
+        dist.insert(0, '')
+        dist = '\n'.join(dist)
+
+        fd = file(os.path.join(self.path, 'conf/distributions'), 'a')
+        fd.write(dist)
+        fd.close()
+
+        self._reprepro('export')
+
     def get_packages(self, dist):
         # This code is evil and ugly... Don't stare at it for too long
         results = {}
@@ -97,6 +111,20 @@ class RepoHandler(RequestHandler):
         repo = Repository(conf('repository.path'))
         return Response(body=dumps(self.request.params, repo.get_dists()))
 
+    def post(self):
+        repo = Repository(conf('repository.path'))
+        dist = {
+            'Version': '5.0',
+            'Architectures': 'amd64 source any',
+            'Components': 'main contrib non-free',
+            'Description': 'Default package repository',
+        }
+        dist.update(loads(self.request.params, self.request.body))
+        for field in ['Origin', 'Label', 'Suite', 'Codename']:
+            if not field in dist:
+                return Response(status=400, body='Required field %s is missing.' % field)
+        repo.create_dist(dist)
+
 class DistHandler(RequestHandler):
     def get(self, dist=None, action=None):
         repo = Repository(conf('repository.path'))</diff>
      <filename>repoman/repository.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a1e9bea8fc68e337fd5ccb8ca6b73556e0608017</id>
    </parent>
  </parents>
  <author>
    <name>Jeremy Grosser</name>
    <email>synack@digg.com</email>
  </author>
  <url>http://github.com/synack/repoman/commit/b35914706dc0f5d5b46de22cdebe3cad2983679b</url>
  <id>b35914706dc0f5d5b46de22cdebe3cad2983679b</id>
  <committed-date>2009-10-20T11:40:53-07:00</committed-date>
  <authored-date>2009-10-20T11:40:53-07:00</authored-date>
  <message>Allow creating new distributions</message>
  <tree>bb4a1ca0b67ae0b92f6207a834b73c9a2187cfb9</tree>
  <committer>
    <name>Jeremy Grosser</name>
    <email>synack@digg.com</email>
  </committer>
</commit>
