]> git.lizzy.rs Git - cheatdb.git/commitdiff
Make git error public, delete dir after clone
authorrubenwardy <rw@rubenwardy.com>
Tue, 5 Jun 2018 18:47:02 +0000 (19:47 +0100)
committerrubenwardy <rw@rubenwardy.com>
Tue, 5 Jun 2018 18:47:02 +0000 (19:47 +0100)
app/tasks/importtasks.py

index c39a008deeb3955cabe67facf5f3ceceb2ee9d02..c2460d24b804ec3ba76710f040ddc07a90d37854 100644 (file)
@@ -15,7 +15,8 @@
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 
-import flask, json, os, git, tempfile
+import flask, json, os, git, tempfile, shutil
+from git import GitCommandError
 from flask.ext.sqlalchemy import SQLAlchemy
 from urllib.error import HTTPError
 import urllib.request
@@ -246,10 +247,23 @@ def getMeta(urlstr, author):
        url = urlparse(urlstr)
 
        gitDir = tempfile.gettempdir() + "/" + randomString(10)
-       git.Repo.clone_from(urlstr, gitDir, progress=None, env=None, depth=1)
+
+       err = None
+
+       try:
+               git.Repo.clone_from(urlstr, gitDir, progress=None, env=None, depth=1)
+       except GitCommandError as e:
+               err = e.stderr
+
+       if err is not None:
+               raise TaskError(err.replace("stderr: ", "") \
+                               .replace("Cloning into '" + gitDir + "'...", "") \
+                               .strip())
 
        tree = PackageTreeNode(gitDir, author=author, repo=urlstr)
 
+       shutil.rmtree(gitDir)
+
        result = {}
        result["name"] = tree.name
        result["provides"] = tree.fold("name")