+ # url = urlparse(release.package.repo)
+ # if url.netloc == "github.com":
+ # return makeVCSReleaseFromGithub(id, branch, release, url)
+
+ gitDir, repo = cloneRepo(release.package.repo, ref=branch, recursive=True)
+
+ try:
+ tree = build_tree(gitDir, expected_type=ContentType[release.package.type.name], \
+ author=release.package.author.username, name=release.package.name)
+ except MinetestCheckError as err:
+ raise TaskError(str(err))
+
+ try:
+ filename = randomString(10) + ".zip"
+ destPath = os.path.join(app.config["UPLOAD_DIR"], filename)
+
+ assert(not os.path.isfile(destPath))
+ archiver = GitArchiver(force_sub=True, main_repo_abspath=gitDir)
+ archiver.create(destPath)
+ assert(os.path.isfile(destPath))
+
+ release.url = "/uploads/" + filename
+ release.task_id = None
+ release.commit_hash = repo.head.object.hexsha
+ release.approve(release.package.author)
+ print(release.url)
+ db.session.commit()
+
+ return release.url
+ finally:
+ shutil.rmtree(gitDir)
+
+@celery.task()
+def importRepoScreenshot(id):
+ package = Package.query.get(id)
+ if package is None or package.soft_deleted:
+ raise Exception("Unexpected none package")
+
+ # Get URL Maker
+ try:
+ gitDir, _ = cloneRepo(package.repo)
+ except TaskError as e:
+ # ignore download errors
+ print(e)
+ return None
+
+ # Find and import screenshot
+ try:
+ for ext in ["png", "jpg", "jpeg"]:
+ sourcePath = gitDir + "/screenshot." + ext
+ if os.path.isfile(sourcePath):
+ filename = randomString(10) + "." + ext
+ destPath = os.path.join(app.config["UPLOAD_DIR"], filename)
+ shutil.copyfile(sourcePath, destPath)
+
+ ss = PackageScreenshot()
+ ss.approved = True
+ ss.package = package
+ ss.title = "screenshot.png"
+ ss.url = "/uploads/" + filename
+ db.session.add(ss)
+ db.session.commit()
+
+ return "/uploads/" + filename
+ finally:
+ shutil.rmtree(gitDir)
+
+ print("screenshot.png does not exist")
+ return None
+
+