mirror of
https://github.com/minetest/contentdb.git
synced 2024-11-10 09:33:44 +01:00
552e35f6aa
Fixes #11
107 lines
2.3 KiB
JavaScript
107 lines
2.3 KiB
JavaScript
$(function() {
|
|
function readConfig(text) {
|
|
var retval = {}
|
|
|
|
const lines = text.split("\n")
|
|
for (var i = 0; i < lines.length; i++) {
|
|
const idx = lines[i].indexOf("=")
|
|
if (idx > 0) {
|
|
const name = lines[i].substring(0, idx - 1).trim()
|
|
const value = lines[i].substring(idx + 1).trim()
|
|
retval[name] = value
|
|
}
|
|
}
|
|
|
|
return retval
|
|
}
|
|
|
|
function finish() {
|
|
$(".pkg_wiz_1").hide()
|
|
$(".pkg_wiz_2").hide()
|
|
$(".pkg_repo").show()
|
|
$(".pkg_meta").show()
|
|
}
|
|
|
|
function repoIsSupported(url) {
|
|
try {
|
|
return URI(url).hostname() == "github.com"
|
|
} catch(e) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
function getFile(url) {
|
|
return new Promise(function(resolve, reject) {
|
|
fetch(url).then(function(response) {
|
|
response.text().then(resolve).catch(reject)
|
|
}).catch(reject)
|
|
})
|
|
}
|
|
|
|
function getInfo(baseUrl) {
|
|
return new Promise(function(resolve, reject) {
|
|
getFile(baseUrl + "/mod.conf").then(function(text) {
|
|
var config = readConfig(text)
|
|
|
|
if (config["name"]) {
|
|
$("#name").val(config["name"])
|
|
}
|
|
|
|
if (config["description"]) {
|
|
const desc = config["description"]
|
|
const idx = desc.indexOf(".")
|
|
$("#shortDesc").val((idx < 5 || idx > 100) ? desc.substring(0, 100) : desc.substring(0, idx))
|
|
$("#desc").val(desc)
|
|
}
|
|
|
|
resolve()
|
|
}).catch(function() {
|
|
reject()
|
|
})
|
|
})
|
|
}
|
|
|
|
function importInfo(urlstr) {
|
|
// Convert to HTTPs
|
|
try {
|
|
var url = URI(urlstr).scheme("https")
|
|
.username("")
|
|
.password("")
|
|
} catch(e) {
|
|
return Promise.reject(e)
|
|
}
|
|
// Change domain
|
|
url = url.hostname("raw.githubusercontent.com")
|
|
|
|
// Rewrite path
|
|
const re = /^\/([^\/]+)\/([^\/]+)\/?$/
|
|
const results = re.exec(url.path())
|
|
if (results == null || results.length != 3) {
|
|
return Promise.reject("Unable to parse URL - please provide a direct URL to the repo")
|
|
}
|
|
url.path("/" + results[1] + "/" + results[2].replace(".git", "") + "/master")
|
|
|
|
return getInfo(url.toString())
|
|
}
|
|
|
|
$(".pkg_meta").hide()
|
|
$(".pkg_wiz_1").show()
|
|
$("#pkg_wiz_1_next").click(function() {
|
|
const repoURL = $("#repo").val();
|
|
if (repoIsSupported(repoURL)) {
|
|
$(".pkg_wiz_1").hide()
|
|
$(".pkg_wiz_2").show()
|
|
$(".pkg_repo").hide()
|
|
|
|
importInfo(repoURL).then(finish).catch(function(x) {
|
|
alert(x)
|
|
$(".pkg_wiz_1").show()
|
|
$(".pkg_wiz_2").hide()
|
|
$(".pkg_repo").show()
|
|
})
|
|
} else {
|
|
finish()
|
|
}
|
|
})
|
|
})
|