Fixed conflicts from version vs dev
[invirt/packages/invirt-dev.git] / invirt-submit-build
index 8175865..f202c3d 100755 (executable)
@@ -24,6 +24,8 @@ import sys
 import tempfile
 import uuid
 
+from invirt.config import structs as config
+import invirt.common as c
 import invirt.builder as b
 
 
@@ -41,9 +43,18 @@ def main():
                                      uuid.uuid4()))
 
     try:
+        # TODO: clean up this interface.
+        b.ensureValidPackage(package)
+        if config.build.get('mirror'):
+            c.captureOutput(['git', 'fetch'], cwd=b.getRepo(package))
+        commit = b.canonicalize_commit(package, commit)
         b.validateBuild(pocket, package, commit)
     except b.InvalidBuild, e:
-        print >>sys.stderr, "E: %s" % e
+        msg = "E: %s" % e
+        print >>sys.stderr, msg
+        # Prevent an attack by submitting excessively long arguments
+        args = [arg[:min(len(arg), 80)] for arg in (pocket, package, commit)]
+        b.runHook('failed-submit', args + [principal], stdin_str=msg)
         sys.exit(1)
 
     # To keep from triggering the Invirtibuilder before we've actually
@@ -54,6 +65,9 @@ def main():
     print >>q, "%s %s %s %s" % (pocket, package, commit, principal)
     q.close()
     os.rename(q_name, q_path)
+    short_commit = b.canonicalize_commit(package, commit, shorten=True)
+    b.runHook('post-submit', [pocket, package, short_commit, principal])
+    print '%s, your job to build %s for %s:%s has been submitted!' % (principal, short_commit, package, pocket)
 
 
 if __name__ == '__main__':