aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/public/static/package_create.js12
-rw-r--r--app/public/static/tagselector.js26
-rw-r--r--app/tasks/importtasks.py29
3 files changed, 56 insertions, 11 deletions
diff --git a/app/public/static/package_create.js b/app/public/static/package_create.js
index 2b992f5..771d0fd 100644
--- a/app/public/static/package_create.js
+++ b/app/public/static/package_create.js
@@ -26,13 +26,25 @@ $(function() {
$(".pkg_wiz_2").show()
$(".pkg_repo").hide()
+ function setSpecial(id, value) {
+ if (value != "") {
+ var ele = $(id);
+ ele.val(value);
+ ele.trigger("change")
+ }
+ }
+
performTask("/tasks/getmeta/new/?url=" + encodeURI(repoURL)).then(function(result) {
$("#name").val(result.name || "")
+ setSpecial("#provides_str", result.name || "")
$("#title").val(result.title || "")
$("#repo").val(result.repo || repoURL)
$("#issueTracker").val(result.issueTracker || "")
$("#desc").val(result.description || "")
$("#shortDesc").val(result.short_description || "")
+ setSpecial("#harddep_str", result.depends || "")
+ setSpecial("#softdep_str", result.optional_depends || "")
+ $("#shortDesc").val(result.short_description || "")
if (result.forumId) {
$("#forums").val(result.forumId)
}
diff --git a/app/public/static/tagselector.js b/app/public/static/tagselector.js
index 32e4882..2c69e6d 100644
--- a/app/public/static/tagselector.js
+++ b/app/public/static/tagselector.js
@@ -91,14 +91,6 @@
lookup[source[i].id] = source[i];
}
- var selected_raw = result.val().split(",");
- for (var i = 0; i < selected_raw.length; i++) {
- var raw = selected_raw[i].trim();
- if (lookup[raw]) {
- selected.push(raw);
- }
- }
-
selector.click(function() { input.focus(); })
.delegate('.tag a', 'click', function() {
var id = $(this).parent().data("id");
@@ -110,7 +102,6 @@
recreate();
});
-
function selectItem(id) {
for (var i = 0; i < selected.length; i++) {
if (selected[i] == id) {
@@ -139,7 +130,22 @@
}
result.val(selected.join(","))
}
- recreate();
+
+ function readFromResult() {
+ selected = [];
+ var selected_raw = result.val().split(",");
+ for (var i = 0; i < selected_raw.length; i++) {
+ var raw = selected_raw[i].trim();
+ if (lookup[raw] || raw.match(/^([a-z0-9_]+)$/)) {
+ selected.push(raw);
+ }
+ }
+
+ recreate();
+ }
+ readFromResult();
+
+ result.change(readFromResult);
input.keydown(function(e) {
if (e.keyCode === $.ui.keyCode.TAB && $(this).data('ui-autocomplete').menu.active)
diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py
index db992b3..022f9b3 100644
--- a/app/tasks/importtasks.py
+++ b/app/tasks/importtasks.py
@@ -55,6 +55,9 @@ class GithubURLMaker:
def getDescURL(self):
return self.baseUrl + "/description.txt"
+ def getDependsURL(self):
+ return self.baseUrl + "/depends.txt"
+
def getScreenshotURL(self):
return self.baseUrl + "/screenshot.png"
@@ -161,7 +164,7 @@ def getMeta(urlstr, author):
try:
contents = urllib.request.urlopen(urlmaker.getModConfURL()).read().decode("utf-8")
conf = parseConf(contents)
- for key in ["name", "description", "title"]:
+ for key in ["name", "description", "title", "depends", "optional_depends"]:
try:
result[key] = conf[key]
except KeyError:
@@ -179,16 +182,40 @@ def getMeta(urlstr, author):
except HTTPError:
print("description.txt does not exist!")
+ import re
+ pattern = re.compile("^([a-z0-9_]+)\??$")
+ if not "depends" in result and not "optional_depends" in result:
+ try:
+ contents = urllib.request.urlopen(urlmaker.getDependsURL()).read().decode("utf-8")
+ soft = []
+ hard = []
+ for line in contents.split("\n"):
+ line = line.strip()
+ if pattern.match(line):
+ if line[len(line) - 1] == "?":
+ soft.append( line[:-1])
+ else:
+ hard.append(line)
+
+ result["depends"] = ",".join(hard)
+ result["optional_depends"] = ",".join(soft)
+
+
+ except HTTPError:
+ print("depends.txt does not exist!")
+
if "description" in result:
desc = result["description"]
idx = desc.find(".") + 1
cutIdx = min(len(desc), 200 if idx < 5 else idx)
result["short_description"] = desc[:cutIdx]
+
info = findModInfo(author, result.get("name"), result["repo"])
if info is not None:
result["forumId"] = info.get("topicId")
+ print(result)
return result