mirror of
https://github.com/Open-Argon/isotope-server.git
synced 2026-10-28 09:43:51 +00:00
40 lines
1.3 KiB
Plaintext
40 lines
1.3 KiB
Plaintext
import "server" as *
|
|
import "randstr" as *
|
|
import "database" as *
|
|
|
|
let push(req, res) = do
|
|
let name = req.formdata.get("name", null)
|
|
if (name == null) do
|
|
res.code = 400
|
|
res.send("Missing name")
|
|
return
|
|
let version = req.formdata.get("version", null)
|
|
if (version == null) do
|
|
res.code = 400
|
|
res.send("Missing version")
|
|
return
|
|
let file = req.files.file
|
|
let latest = req.formdata.latest
|
|
let package = packages.get(name)
|
|
if (package == null) do
|
|
package = {versions:{}, order:{}, name:name}
|
|
latest = "true"
|
|
packages[name] = package
|
|
if ("order" not in package) package.order = {}
|
|
let currentVersion = package.versions.get(version)
|
|
let directory = path.join([program.cwd, "packages", name])
|
|
if (currentVersion == null) do
|
|
currentVersion = {name:name, version:version}
|
|
package.versions[version] = currentVersion
|
|
let filename = version+".tar.gz"
|
|
let p = path.join([directory, filename])
|
|
term.log(directory)
|
|
path.mkAllDir(directory)
|
|
file.save(p)
|
|
currentVersion.filename = filename
|
|
package.order[version] = time.now().unix()
|
|
if (latest == "true") do
|
|
package.versions['latest'] = {redirect: version}
|
|
makeChange()
|
|
res.send("OK")
|
|
app.route("/isotope-push", ['POST'], push) |