feat(lib): use luau-unzip

This commit is contained in:
LukaDev 2025-01-14 19:46:22 +01:00
parent c8e665c782
commit a6f0000527
14 changed files with 350 additions and 122 deletions

View file

@ -2,6 +2,29 @@ name = "pesde/argon"
version = "2.0.21"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -1,7 +1,30 @@
name = "pesde/asphalt"
version = "0.8.3"
version = "0.8.4"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -2,6 +2,29 @@ name = "pesde/blink"
version = "0.15.1"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -2,6 +2,29 @@ name = "pesde/darklua"
version = "0.15.0"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -2,6 +2,29 @@ name = "pesde/luau_lsp"
version = "1.38.1"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -2,6 +2,29 @@ name = "pesde/rojo"
version = "7.4.4"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -1,7 +1,30 @@
name = "pesde/selene"
version = "0.27.1"
version = "0.28.0"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -2,6 +2,29 @@ name = "pesde/stylua"
version = "2.0.2"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -2,6 +2,29 @@ name = "pesde/zap"
version = "0.6.16"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
resolved_ty = "standard"
@ -87,6 +110,7 @@ environment = "lune"
lib = "src/init.luau"
[graph."pesde/toolchainlib"."0.1.7 lune".dependencies]
"0x5eal/unzip" = ["0.1.0 luau", "unzip"]
"jiwonz/dirs" = ["0.1.2 lune", "dirs"]
"jiwonz/pathfs" = ["0.1.0 lune", "pathfs"]
"lukadev_0/option" = ["1.2.0 lune", "option"]
@ -101,6 +125,7 @@ dirs = [{ name = "jiwonz/dirs", version = "^0.1.1", index = "https://github.com/
option = [{ name = "lukadev_0/option", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
pathfs = [{ name = "jiwonz/pathfs", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index" }, "standard"]
result = [{ name = "lukadev_0/result", version = "^1.2.0", index = "https://github.com/daimond113/pesde-index" }, "peer"]
unzip = [{ name = "0x5eal/unzip", version = "^0.1.0", index = "https://github.com/daimond113/pesde-index", target = "luau" }, "standard"]
[graph."pesde/toolchainlib"."0.1.7 lune".pkg_ref.target]
environment = "lune"

View file

@ -2,6 +2,30 @@ name = "pesde/toolchainlib"
version = "0.1.7"
target = "lune"
[graph."0x5eal/unzip"."0.1.0 luau"]
direct = ["unzip", { name = "0x5eal/unzip", version = "^0.1.0", target = "luau" }, "standard"]
resolved_ty = "standard"
[graph."0x5eal/unzip"."0.1.0 luau".target]
environment = "luau"
lib = "lib/init.luau"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref]
ref_ty = "pesde"
name = "0x5eal/unzip"
version = "0.1.0"
index_url = "https://github.com/daimond113/pesde-index"
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.dependencies]
asciitable = [{ name = "kimpure/asciitable", version = "^0.1.4", index = "https://github.com/pesde-pkg/index" }, "dev"]
frktest = [{ name = "itsfrank/frktest", version = "^0.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
luau-lsp = [{ name = "pesde/luau_lsp", version = "^1.38.0", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
stylua = [{ name = "pesde/stylua", version = "^2.0.2", index = "https://github.com/pesde-pkg/index", target = "lune" }, "dev"]
[graph."0x5eal/unzip"."0.1.0 luau".pkg_ref.target]
environment = "luau"
lib = "lib/init.luau"
[graph."jiwonz/dirs"."0.1.2 lune"]
direct = ["dirs", { name = "jiwonz/dirs", version = "^0.1.1" }, "standard"]
resolved_ty = "standard"

View file

@ -1,21 +1,22 @@
name = "pesde/toolchainlib"
description = "A Luau library for implementing toolchain management"
version = "0.1.7"
license = "MIT"
repository = "https://github.com/pesde-pkg/tooling/tree/main/toolchainlib"
includes = ["src", "pesde.toml", "LICENSE", "README.md"]
[target]
environment = "lune"
lib = "src/init.luau"
[dependencies]
pathfs = { name = "jiwonz/pathfs", version = "^0.1.0" }
dirs = { name = "jiwonz/dirs", version = "^0.1.1" }
[peer_dependencies]
result = { name = "lukadev_0/result", version = "^1.2.0" }
option = { name = "lukadev_0/option", version = "^1.2.0" }
[indices]
default = "https://github.com/daimond113/pesde-index"
name = "pesde/toolchainlib"
description = "A Luau library for implementing toolchain management"
version = "0.1.7"
license = "MIT"
repository = "https://github.com/pesde-pkg/tooling/tree/main/toolchainlib"
includes = ["src", "pesde.toml", "LICENSE", "README.md"]
[target]
environment = "lune"
lib = "src/init.luau"
[dependencies]
pathfs = { name = "jiwonz/pathfs", version = "^0.1.0" }
dirs = { name = "jiwonz/dirs", version = "^0.1.1" }
unzip = { name = "0x5eal/unzip", version = "^0.1.0", target = "luau" }
[peer_dependencies]
result = { name = "lukadev_0/result", version = "^1.2.0" }
option = { name = "lukadev_0/option", version = "^1.2.0" }
[indices]
default = "https://github.com/daimond113/pesde-index"

View file

@ -1,8 +1,4 @@
local serde = require("@lune/serde")
local process = require("@lune/process")
local dirs = require("../lune_packages/dirs")
local pathfs = require("../lune_packages/pathfs")
local unzip = require("../luau_packages/unzip")
local Result = require("../lune_packages/result")
local Option = require("../lune_packages/option")
@ -10,7 +6,8 @@ type Result<T, E> = Result.Result<T, E>
type Option<T> = Option.Option<T>
local revTable = require("./utils/rev_table")
local CommandBuilder = require("./utils/exec")
local eq = require("./utils/eq")
local PlatformDescriptor = require("./platform/descriptor")
export type CompressionFormat = "TarGz" | "TarXz" | "Zip"
@ -36,70 +33,51 @@ local function detectFormat(fileName: string): Option<CompressionFormat>
end
-- TODO: Use a type function to make all CompressionFormat lowercase
local decompress: { [CompressionFormat]: (compressed: buffer) -> Result<pathfs.AsPath, string> } = {
Zip = function(compressed: buffer)
return (Option.from(dirs.cacheDir()):map(function(cacheDir)
local progCacheDir = cacheDir:join("pesde-bin")
if not pathfs.isDir(progCacheDir) then
pathfs.writeDir(progCacheDir)
local extractBinary: {
[CompressionFormat]: (
compressed: buffer,
binaryName: string,
targetPlatform: PlatformDescriptor.PlatformDescriptor
) -> Result<buffer, string>,
} =
{
Zip = function(compressed, binaryName, targetPlatform)
local reader = unzip.load(compressed)
local binaryEntry = reader:findEntry(binaryName)
local binaryContents = nil
if binaryEntry then
binaryContents = reader:extract(binaryEntry, { type = "binary" }) :: buffer
else
-- Walk through the entries to find an executable
reader:walk(function(entry)
if binaryEntry then
return
end
if entry.isDirectory then
return
end
local contents = reader:extract(entry, { type = "binary" }) :: buffer
local executablePlatform = PlatformDescriptor.fromExecutable(contents)
if executablePlatform:isOk() and eq(executablePlatform:unwrap(), targetPlatform) then
binaryEntry = entry
binaryContents = contents
end
end)
end
return progCacheDir :: pathfs.Path
end)):match({
Some = function(dir: pathfs.Path)
-- Generate a unique file name and write the contents to the temporary file
local tmpFile = dir:join(`{serde.hash("blake3", compressed)}.zip`)
local tmpFilePath = tmpFile:toString()
pathfs.writeFile(tmpFile, compressed)
if not binaryContents then
return Result.Err("ExtractBinaryError::BinaryNotFound" :: string)
end
-- Create the directory to decompress into
local decompressedDir = pathfs.Path.from(tmpFile):withExtension("")
pathfs.writeDir(decompressedDir)
return Result.Ok(binaryContents)
end,
-- Run unzip to decompress the file
local child = (if process.os == "windows"
-- Thanks windows :)
then CommandBuilder.new("powershell"):withArgs({
"-ExecutionPolicy RemoteSigned",
`-c \`"Import-Module Microsoft.PowerShell.Archive; Expand-Archive -LiteralPath '{tmpFilePath}' -DestinationPath '{decompressedDir:toString()}'\`"`,
})
else CommandBuilder.new("unzip"):withArgs({ tmpFilePath, "-d", decompressedDir:toString() }))
:withStdioStrategy({
-- Powershell on Windows writes errors to stdout. Bruh
stdout = Option.Some(
if process.os == "windows" and process.env.PESDE_LOG == "debug"
then "forward"
else "pipe" :: CommandBuilder.StdioStrategy
),
stderr = Option.Some(
if process.env.PESDE_LOG == "debug"
then "forward"
else "pipe" :: CommandBuilder.StdioStrategy
),
} :: CommandBuilder.IoStrategyMapping)
:intoChildProcess()
-- TODO: Other formats
}
child:start()
local status = child:waitForChild()
-- Cleanup temporary file and handle errors
pathfs.removeFile(tmpFile)
if not status.ok then
return Result.Err(
`DecompressError::CommandFailed(exitCode={status.code})`
) :: Result<pathfs.AsPath, string>
end
return Result.Ok(decompressedDir) :: Result<pathfs.AsPath, string>
end,
None = function()
return Result.Err("DecompressError::NoCacheDir") :: Result<pathfs.AsPath, string>
end,
})
end,
-- TODO: Other formats
}
return { decompress = decompress, detectFormat = detectFormat }
return { extractBinary = extractBinary, detectFormat = detectFormat }

View file

@ -45,12 +45,16 @@ local function warn(...)
stdio.ewrite(`{WARN_PREFIX} {stdio.format(...)}\n`)
end
local function downloadAndDecompress(asset: {
name: string,
browser_download_url: string,
size: number,
content_type: string,
}): Option<pathfs.Path>
local function downloadAndExtractBinary(
binaryName: string,
targetPlatform: PlatformDescriptor.PlatformDescriptor,
asset: {
name: string,
browser_download_url: string,
size: number,
content_type: string,
}
): Option<buffer>
return compression
.detectFormat(asset.name)
:andThen(function(format: compression.CompressionFormat)
@ -59,8 +63,10 @@ local function downloadAndDecompress(asset: {
return error(`Failed to download asset {asset.name}: HTTP Code {contentsResp.statusCode}`)
end
return ResultExt.ok(compression.decompress[format](buffer.fromstring(contentsResp.body)))
end) :: Option<pathfs.Path>
return ResultExt.ok(
compression.extractBinary[format](buffer.fromstring(contentsResp.body), binaryName, targetPlatform)
)
end) :: Option<buffer>
end
local function chmod(path: pathfs.Path, mode: number | string)
@ -195,6 +201,7 @@ function installTool(tool: ToolId, installPath: pathfs.Path): number
local currentDesc = PlatformDescriptor.currentSystem()
local aliasPath = pathfs.Path.from(toolAlias):withExtension(if currentDesc.os == "windows" then "exe" else "")
local aliasName = aliasPath:toString()
for _, asset in assets do
local desc = PlatformDescriptor.fromString(asset.name)
@ -210,33 +217,28 @@ function installTool(tool: ToolId, installPath: pathfs.Path): number
barFns.next(bar) -- download
local binaryPath: pathfs.Path
local binaryContents: buffer
if matchingAsset == nil then
stdio.write("\x1b[2K\x1b[0G")
warn("Pesde could not find a matching binary for your system")
warn("Will now attempt to download all binaries and find a matching one")
for _, asset in assets do
local decompressedPath = downloadAndDecompress(asset)
if decompressedPath:isSome() then
local path = decompressedPath:unwrap()
for _, file in pathfs.readDir(path) do
local filePath = path:join(file)
local nativeDesc = PlatformDescriptor.fromExecutable(filePath:toString())
if nativeDesc:isOk() and eq(currentDesc, nativeDesc:unwrap()) then
binaryPath = filePath
break
end
end
local contents = downloadAndExtractBinary(aliasName, currentDesc, asset)
if contents:isSome() then
binaryContents = contents:unwrap()
break
end
end
else
local decompressedPath = downloadAndDecompress(matchingAsset):unwrap()
binaryPath = decompressedPath:join(aliasPath)
if not pathfs.isFile(binaryPath) then
error(`No matching binary found in {decompressedPath}`)
end
downloadAndExtractBinary(aliasName, currentDesc, matchingAsset):match({
Some = function(contents: buffer)
binaryContents = contents
end,
None = function()
error(`No matching binary found`)
end,
})
end
barFns.next(bar) -- install
@ -248,7 +250,7 @@ function installTool(tool: ToolId, installPath: pathfs.Path): number
pathfs.writeDir(toolDir)
end
pathfs.move(binaryPath, installPath)
pathfs.writeFile(installPath, binaryContents)
-- IDEA: In order to eliminate fs read overhead on startup and to disallow
-- the use of the tool binary when outside a package where it is installed,

View file

@ -1,5 +1,4 @@
local process = require("@lune/process")
local fs = require("@lune/fs")
local os = require("./os")
local arch = require("./arch")
@ -45,9 +44,8 @@ function PlatformDescriptor.fromString(str: string)
} :: PlatformDescriptor)
end
function PlatformDescriptor.fromExecutable(path: string): result.PlatformResult<PlatformDescriptor>
local binaryContents = fs.readFile(path)
local detected = Option.from(detectFromExecutable(buffer.fromstring(binaryContents)))
function PlatformDescriptor.fromExecutable(contents: buffer): result.PlatformResult<PlatformDescriptor>
local detected = Option.from(detectFromExecutable(contents))
:map(function(inner: detectFromExecutable.ExecutableDetectionResult): ExecutableDetectionResult
return {
os = Option.from(inner.os) :: Option<process.OS>,