mirror of
https://github.com/lune-org/lune.git
synced 2024-12-12 13:00:37 +00:00
Migrate back to tokio to prepare for using hyper
This commit is contained in:
parent
aa95fa2234
commit
a448c9d2c6
11 changed files with 214 additions and 333 deletions
381
Cargo.lock
generated
381
Cargo.lock
generated
|
@ -23,115 +23,6 @@ version = "1.0.68"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
|
||||
|
||||
[[package]]
|
||||
name = "async-channel"
|
||||
version = "1.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833"
|
||||
dependencies = [
|
||||
"concurrent-queue",
|
||||
"event-listener",
|
||||
"futures-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-executor"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b"
|
||||
dependencies = [
|
||||
"async-lock",
|
||||
"async-task",
|
||||
"concurrent-queue",
|
||||
"fastrand",
|
||||
"futures-lite",
|
||||
"slab",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-fs"
|
||||
version = "1.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06"
|
||||
dependencies = [
|
||||
"async-lock",
|
||||
"autocfg",
|
||||
"blocking",
|
||||
"futures-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-io"
|
||||
version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794"
|
||||
dependencies = [
|
||||
"async-lock",
|
||||
"autocfg",
|
||||
"concurrent-queue",
|
||||
"futures-lite",
|
||||
"libc",
|
||||
"log",
|
||||
"parking",
|
||||
"polling",
|
||||
"slab",
|
||||
"socket2",
|
||||
"waker-fn",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-lock"
|
||||
version = "2.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685"
|
||||
dependencies = [
|
||||
"event-listener",
|
||||
"futures-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-net"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4051e67316bc7eff608fe723df5d32ed639946adcd69e07df41fd42a7b411f1f"
|
||||
dependencies = [
|
||||
"async-io",
|
||||
"autocfg",
|
||||
"blocking",
|
||||
"futures-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-process"
|
||||
version = "1.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6381ead98388605d0d9ff86371043b5aa922a3905824244de40dc263a14fcba4"
|
||||
dependencies = [
|
||||
"async-io",
|
||||
"async-lock",
|
||||
"autocfg",
|
||||
"blocking",
|
||||
"cfg-if",
|
||||
"event-listener",
|
||||
"futures-lite",
|
||||
"libc",
|
||||
"signal-hook",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-task"
|
||||
version = "4.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524"
|
||||
|
||||
[[package]]
|
||||
name = "atomic-waker"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599"
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
|
@ -156,20 +47,6 @@ version = "1.3.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "blocking"
|
||||
version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8"
|
||||
dependencies = [
|
||||
"async-channel",
|
||||
"async-lock",
|
||||
"async-task",
|
||||
"atomic-waker",
|
||||
"fastrand",
|
||||
"futures-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bstr"
|
||||
version = "0.2.17"
|
||||
|
@ -191,6 +68,12 @@ version = "0.5.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "be0fdd54b507df8f22012890aadd099979befdba27713c767993f8380112ca7c"
|
||||
|
||||
[[package]]
|
||||
name = "bytes"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.78"
|
||||
|
@ -240,15 +123,6 @@ dependencies = [
|
|||
"os_str_bytes",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "concurrent-queue"
|
||||
version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e"
|
||||
dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "convert_case"
|
||||
version = "0.4.0"
|
||||
|
@ -264,15 +138,6 @@ dependencies = [
|
|||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_more"
|
||||
version = "0.99.17"
|
||||
|
@ -316,21 +181,6 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "event-listener"
|
||||
version = "2.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "1.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
|
||||
dependencies = [
|
||||
"instant",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "flate2"
|
||||
version = "1.0.25"
|
||||
|
@ -390,27 +240,6 @@ version = "0.3.25"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"
|
||||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb"
|
||||
|
||||
[[package]]
|
||||
name = "futures-lite"
|
||||
version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"memchr",
|
||||
"parking",
|
||||
"pin-project-lite",
|
||||
"waker-fn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.25"
|
||||
|
@ -483,15 +312,6 @@ dependencies = [
|
|||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "instant"
|
||||
version = "0.1.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "io-lifetimes"
|
||||
version = "1.0.4"
|
||||
|
@ -499,7 +319,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys",
|
||||
"windows-sys 0.42.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -511,7 +331,7 @@ dependencies = [
|
|||
"hermit-abi",
|
||||
"io-lifetimes",
|
||||
"rustix",
|
||||
"windows-sys",
|
||||
"windows-sys 0.42.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -541,6 +361,16 @@ version = "0.1.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.17"
|
||||
|
@ -594,7 +424,7 @@ dependencies = [
|
|||
"regex",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"smol",
|
||||
"tokio",
|
||||
"ureq",
|
||||
]
|
||||
|
||||
|
@ -613,6 +443,18 @@ dependencies = [
|
|||
"adler",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"wasi",
|
||||
"windows-sys 0.42.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mlua"
|
||||
version = "0.8.7"
|
||||
|
@ -642,6 +484,16 @@ dependencies = [
|
|||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.17.0"
|
||||
|
@ -658,10 +510,27 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking"
|
||||
version = "2.0.0"
|
||||
name = "parking_lot"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
|
||||
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
"parking_lot_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.9.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"smallvec",
|
||||
"windows-sys 0.45.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "paste"
|
||||
|
@ -706,20 +575,6 @@ version = "0.3.26"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
|
||||
|
||||
[[package]]
|
||||
name = "polling"
|
||||
version = "2.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"log",
|
||||
"wepoll-ffi",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-error"
|
||||
version = "1.0.4"
|
||||
|
@ -768,6 +623,15 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.2.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.7.1"
|
||||
|
@ -826,7 +690,7 @@ dependencies = [
|
|||
"io-lifetimes",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
"windows-sys",
|
||||
"windows-sys 0.42.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -847,6 +711,12 @@ version = "1.0.12"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "sct"
|
||||
version = "0.7.0"
|
||||
|
@ -894,16 +764,6 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook"
|
||||
version = "0.3.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"signal-hook-registry",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.0"
|
||||
|
@ -923,21 +783,10 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "smol"
|
||||
version = "1.3.0"
|
||||
name = "smallvec"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1"
|
||||
dependencies = [
|
||||
"async-channel",
|
||||
"async-executor",
|
||||
"async-fs",
|
||||
"async-io",
|
||||
"async-lock",
|
||||
"async-net",
|
||||
"async-process",
|
||||
"blocking",
|
||||
"futures-lite",
|
||||
]
|
||||
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
|
||||
|
||||
[[package]]
|
||||
name = "smol_str"
|
||||
|
@ -1005,6 +854,37 @@ version = "0.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.25.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"bytes",
|
||||
"libc",
|
||||
"memchr",
|
||||
"mio",
|
||||
"num_cpus",
|
||||
"parking_lot",
|
||||
"pin-project-lite",
|
||||
"signal-hook-registry",
|
||||
"socket2",
|
||||
"tokio-macros",
|
||||
"windows-sys 0.42.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-macros"
|
||||
version = "1.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-bidi"
|
||||
version = "0.3.10"
|
||||
|
@ -1066,10 +946,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
||||
|
||||
[[package]]
|
||||
name = "waker-fn"
|
||||
version = "1.1.0"
|
||||
name = "wasi"
|
||||
version = "0.11.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
|
||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
|
@ -1154,15 +1034,6 @@ dependencies = [
|
|||
"webpki",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wepoll-ffi"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
|
@ -1209,6 +1080,30 @@ dependencies = [
|
|||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.45.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
|
||||
dependencies = [
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.42.1"
|
||||
|
|
|
@ -28,10 +28,10 @@ anyhow = "1.0.68"
|
|||
os_str_bytes = "6.4.1"
|
||||
regex = "1.7.1"
|
||||
serde_json = "1.0.91"
|
||||
smol = "1.3.0"
|
||||
ureq = "2.6.2"
|
||||
|
||||
clap = { version = "4.1.1", features = ["derive"] }
|
||||
full_moon = { version = "0.17.0", features = ["roblox"] }
|
||||
mlua = { version = "0.8.7", features = ["luau", "async", "serialize"] }
|
||||
serde = { version = "1.0.152", features = ["derive"] }
|
||||
tokio = { version = "1.24.2", features = ["full"] }
|
||||
|
|
|
@ -4,7 +4,7 @@ use anyhow::Result;
|
|||
use clap::{CommandFactory, Parser};
|
||||
|
||||
use lune::Lune;
|
||||
use smol::fs::{read_to_string, write};
|
||||
use tokio::fs::{read_to_string, write};
|
||||
|
||||
use crate::{
|
||||
gen::generate_docs_json_from_definitions,
|
||||
|
@ -178,7 +178,7 @@ mod tests {
|
|||
|
||||
use anyhow::{bail, Context, Result};
|
||||
use serde_json::Value;
|
||||
use smol::fs::{create_dir_all, read_to_string, remove_file};
|
||||
use tokio::fs::{create_dir_all, read_to_string, remove_file};
|
||||
|
||||
use super::{Cli, LUNE_LUAU_FILE_NAME, LUNE_SELENE_FILE_NAME};
|
||||
|
||||
|
@ -212,29 +212,23 @@ mod tests {
|
|||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn list() -> Result<()> {
|
||||
smol::block_on(async {
|
||||
Cli::list().run().await?;
|
||||
Ok(())
|
||||
})
|
||||
#[tokio::test]
|
||||
async fn list() -> Result<()> {
|
||||
Cli::list().run().await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn download_selene_types() -> Result<()> {
|
||||
smol::block_on(async {
|
||||
run_cli(Cli::download_selene_types()).await?;
|
||||
ensure_file_exists_and_is_not_json(LUNE_SELENE_FILE_NAME).await?;
|
||||
Ok(())
|
||||
})
|
||||
#[tokio::test]
|
||||
async fn download_selene_types() -> Result<()> {
|
||||
run_cli(Cli::download_selene_types()).await?;
|
||||
ensure_file_exists_and_is_not_json(LUNE_SELENE_FILE_NAME).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn download_luau_types() -> Result<()> {
|
||||
smol::block_on(async {
|
||||
run_cli(Cli::download_luau_types()).await?;
|
||||
ensure_file_exists_and_is_not_json(LUNE_LUAU_FILE_NAME).await?;
|
||||
Ok(())
|
||||
})
|
||||
#[tokio::test]
|
||||
async fn download_luau_types() -> Result<()> {
|
||||
run_cli(Cli::download_luau_types()).await?;
|
||||
ensure_file_exists_and_is_not_json(LUNE_LUAU_FILE_NAME).await?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
#![deny(clippy::all)]
|
||||
#![warn(clippy::cargo, clippy::pedantic)]
|
||||
#![allow(
|
||||
clippy::needless_pass_by_value,
|
||||
clippy::match_bool,
|
||||
clippy::module_name_repetitions
|
||||
clippy::module_name_repetitions,
|
||||
clippy::multiple_crate_versions,
|
||||
clippy::needless_pass_by_value
|
||||
)]
|
||||
|
||||
use std::process::ExitCode;
|
||||
|
@ -17,6 +18,7 @@ mod utils;
|
|||
|
||||
use cli::Cli;
|
||||
|
||||
fn main() -> Result<ExitCode> {
|
||||
smol::block_on(async { Cli::parse().run().await })
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<ExitCode> {
|
||||
Cli::parse().run().await
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ use anyhow::{bail, Context, Result};
|
|||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use lune::utils::net::{get_github_owner_and_repo, get_request_user_agent_header};
|
||||
use smol::unblock;
|
||||
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub struct ReleaseAsset {
|
||||
|
@ -50,7 +49,7 @@ impl Client {
|
|||
for (header, value) in headers {
|
||||
request = request.set(header, value);
|
||||
}
|
||||
unblock(|| Ok(request.send_string("")?.into_string()?)).await
|
||||
tokio::task::spawn_blocking(|| Ok(request.send_string("")?.into_string()?)).await?
|
||||
}
|
||||
|
||||
pub async fn fetch_releases(&self) -> Result<Vec<Release>> {
|
||||
|
@ -82,7 +81,7 @@ impl Client {
|
|||
let file_string = self
|
||||
.get(&asset.url, &[("Accept", "application/octet-stream")])
|
||||
.await?;
|
||||
smol::fs::write(&file_path, &file_string)
|
||||
tokio::fs::write(&file_path, &file_string)
|
||||
.await
|
||||
.with_context(|| {
|
||||
format!("Failed to write file at path '{}'", &file_path.display())
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use std::{cmp::Ordering, fmt::Write as _};
|
||||
|
||||
use anyhow::{bail, Result};
|
||||
use smol::{fs, io, prelude::*};
|
||||
use tokio::{fs, io};
|
||||
|
||||
use super::files::parse_lune_description_from_file;
|
||||
|
||||
|
@ -20,7 +20,7 @@ pub async fn find_lune_scripts() -> Result<Vec<(String, String)>> {
|
|||
match lune_dir {
|
||||
Ok(mut dir) => {
|
||||
let mut files = Vec::new();
|
||||
while let Some(entry) = dir.next().await.transpose()? {
|
||||
while let Some(entry) = dir.next_entry().await? {
|
||||
let meta = entry.metadata().await?;
|
||||
if meta.is_file() {
|
||||
let contents = fs::read_to_string(entry.path()).await?;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use std::path::{PathBuf, MAIN_SEPARATOR};
|
||||
|
||||
use mlua::prelude::*;
|
||||
use smol::{fs, prelude::*};
|
||||
use tokio::fs;
|
||||
|
||||
use crate::utils::table::TableBuilder;
|
||||
|
||||
|
@ -28,7 +28,7 @@ async fn fs_read_file(_: &Lua, path: String) -> LuaResult<String> {
|
|||
async fn fs_read_dir(_: &Lua, path: String) -> LuaResult<Vec<String>> {
|
||||
let mut dir_strings = Vec::new();
|
||||
let mut dir = fs::read_dir(&path).await.map_err(LuaError::external)?;
|
||||
while let Some(dir_entry) = dir.try_next().await.map_err(LuaError::external)? {
|
||||
while let Some(dir_entry) = dir.next_entry().await.map_err(LuaError::external)? {
|
||||
if let Some(dir_path_str) = dir_entry.path().to_str() {
|
||||
dir_strings.push(dir_path_str.to_owned());
|
||||
} else {
|
||||
|
|
|
@ -9,7 +9,7 @@ use std::{
|
|||
|
||||
use mlua::prelude::*;
|
||||
use os_str_bytes::RawOsString;
|
||||
use smol::{channel::Sender, Timer};
|
||||
use tokio::{sync::mpsc::Sender, time};
|
||||
|
||||
use crate::{
|
||||
utils::{process::pipe_and_inherit_child_process_stdio, table::TableBuilder},
|
||||
|
@ -129,7 +129,7 @@ async fn process_exit(lua: &Lua, exit_code: Option<u8>) -> LuaResult<()> {
|
|||
.map_err(LuaError::external)?;
|
||||
// Make sure to block the rest of this thread indefinitely since
|
||||
// the main thread may not register the exit signal right away
|
||||
Timer::after(Duration::MAX).await;
|
||||
time::sleep(Duration::MAX).await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ use std::{
|
|||
};
|
||||
|
||||
use mlua::prelude::*;
|
||||
use smol::Timer;
|
||||
use tokio::time;
|
||||
|
||||
use crate::utils::{
|
||||
table::TableBuilder,
|
||||
|
@ -132,7 +132,7 @@ async fn task_spawn<'a>(
|
|||
async fn task_wait(lua: &Lua, duration: Option<f32>) -> LuaResult<f32> {
|
||||
let start = Instant::now();
|
||||
run_registered_task(lua, TaskRunMode::Blocking, async move {
|
||||
Timer::after(Duration::from_secs_f32(
|
||||
time::sleep(Duration::from_secs_f32(
|
||||
duration
|
||||
.map(|d| d.max(MINIMUM_WAIT_OR_DELAY_DURATION))
|
||||
.unwrap_or(MINIMUM_WAIT_OR_DELAY_DURATION),
|
||||
|
|
|
@ -2,7 +2,7 @@ use std::{collections::HashSet, process::ExitCode, sync::Arc};
|
|||
|
||||
use anyhow::{bail, Result};
|
||||
use mlua::prelude::*;
|
||||
use smol::LocalExecutor;
|
||||
use tokio::{sync::mpsc, task};
|
||||
|
||||
pub mod globals;
|
||||
pub mod utils;
|
||||
|
@ -72,15 +72,12 @@ impl Lune {
|
|||
}
|
||||
|
||||
pub async fn run(&self, name: &str, chunk: &str) -> Result<ExitCode> {
|
||||
let (s, r) = smol::channel::unbounded::<LuneMessage>();
|
||||
let task_set = task::LocalSet::new();
|
||||
let (sender, mut receiver) = mpsc::channel::<LuneMessage>(64);
|
||||
let lua = Arc::new(mlua::Lua::new());
|
||||
let exec = Arc::new(LocalExecutor::new());
|
||||
let sender = Arc::new(s);
|
||||
let receiver = Arc::new(r);
|
||||
let snd = Arc::new(sender);
|
||||
lua.set_app_data(Arc::downgrade(&lua));
|
||||
lua.set_app_data(Arc::downgrade(&exec));
|
||||
lua.set_app_data(Arc::downgrade(&sender));
|
||||
lua.set_app_data(Arc::downgrade(&receiver));
|
||||
lua.set_app_data(Arc::downgrade(&snd));
|
||||
// Add in wanted lune globals
|
||||
for global in &self.globals {
|
||||
match &global {
|
||||
|
@ -96,8 +93,9 @@ impl Lune {
|
|||
let script_lua = lua.clone();
|
||||
let script_name = name.to_string();
|
||||
let script_chunk = chunk.to_string();
|
||||
sender.send(LuneMessage::Spawned).await?;
|
||||
exec.spawn(async move {
|
||||
let script_sender = snd.clone();
|
||||
script_sender.send(LuneMessage::Spawned).await?;
|
||||
task_set.spawn_local(async move {
|
||||
let result = script_lua
|
||||
.load(&script_chunk)
|
||||
.set_name(&format!("={}", script_name))
|
||||
|
@ -105,20 +103,19 @@ impl Lune {
|
|||
.eval_async::<LuaValue>()
|
||||
.await;
|
||||
match result {
|
||||
Err(e) => sender.send(LuneMessage::LuaError(e)).await,
|
||||
Ok(_) => sender.send(LuneMessage::Finished).await,
|
||||
Err(e) => script_sender.send(LuneMessage::LuaError(e)).await,
|
||||
Ok(_) => script_sender.send(LuneMessage::Finished).await,
|
||||
}
|
||||
})
|
||||
.detach();
|
||||
});
|
||||
// Run the executor until there are no tasks left,
|
||||
// taking care to not exit right away for errors
|
||||
let (got_code, got_error, exit_code) = exec
|
||||
.run(async {
|
||||
let (got_code, got_error, exit_code) = task_set
|
||||
.run_until(async {
|
||||
let mut task_count = 0;
|
||||
let mut got_error = false;
|
||||
let mut got_code = false;
|
||||
let mut exit_code = 0;
|
||||
while let Ok(message) = receiver.recv().await {
|
||||
while let Some(message) = receiver.recv().await {
|
||||
// Make sure our task-count-modifying messages are sent correctly, one
|
||||
// task spawned must always correspond to one task finished / errored
|
||||
match &message {
|
||||
|
@ -174,7 +171,7 @@ mod tests {
|
|||
use std::process::ExitCode;
|
||||
|
||||
use anyhow::Result;
|
||||
use smol::fs::read_to_string;
|
||||
use tokio::fs::read_to_string;
|
||||
|
||||
use crate::Lune;
|
||||
|
||||
|
@ -183,25 +180,23 @@ mod tests {
|
|||
macro_rules! run_tests {
|
||||
($($name:ident: $value:expr,)*) => {
|
||||
$(
|
||||
#[test]
|
||||
fn $name() -> Result<ExitCode> {
|
||||
smol::block_on(async {
|
||||
let full_name = format!("src/tests/{}.luau", $value);
|
||||
let script = read_to_string(&full_name)
|
||||
.await
|
||||
.unwrap();
|
||||
let lune = Lune::new()
|
||||
.with_args(
|
||||
ARGS
|
||||
.clone()
|
||||
.iter()
|
||||
.map(ToString::to_string)
|
||||
.collect()
|
||||
)
|
||||
.with_all_globals();
|
||||
let script_name = full_name.strip_suffix(".luau").unwrap();
|
||||
lune.run(&script_name, &script).await
|
||||
})
|
||||
#[tokio::test]
|
||||
async fn $name() -> Result<ExitCode> {
|
||||
let full_name = format!("src/tests/{}.luau", $value);
|
||||
let script = read_to_string(&full_name)
|
||||
.await
|
||||
.unwrap();
|
||||
let lune = Lune::new()
|
||||
.with_args(
|
||||
ARGS
|
||||
.clone()
|
||||
.iter()
|
||||
.map(ToString::to_string)
|
||||
.collect()
|
||||
)
|
||||
.with_all_globals();
|
||||
let script_name = full_name.strip_suffix(".luau").unwrap();
|
||||
lune.run(&script_name, &script).await
|
||||
}
|
||||
)*
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
use std::fmt::{self, Debug};
|
||||
use std::future::Future;
|
||||
use std::sync::Weak;
|
||||
|
||||
use mlua::prelude::*;
|
||||
use smol::{channel::Sender, LocalExecutor};
|
||||
use smol::{future::yield_now, prelude::*};
|
||||
use tokio::sync::mpsc::Sender;
|
||||
use tokio::task;
|
||||
|
||||
use crate::LuneMessage;
|
||||
|
||||
|
@ -29,12 +30,7 @@ pub async fn run_registered_task<T>(
|
|||
mode: TaskRunMode,
|
||||
to_run: impl Future<Output = LuaResult<T>> + 'static,
|
||||
) -> LuaResult<()> {
|
||||
// Fetch global references to task executor & message sender
|
||||
let exec = lua
|
||||
.app_data_ref::<Weak<LocalExecutor>>()
|
||||
.unwrap()
|
||||
.upgrade()
|
||||
.unwrap();
|
||||
// Fetch global reference to message sender
|
||||
let sender = lua
|
||||
.app_data_ref::<Weak<Sender<LuneMessage>>>()
|
||||
.unwrap()
|
||||
|
@ -47,13 +43,13 @@ pub async fn run_registered_task<T>(
|
|||
.map_err(LuaError::external)?;
|
||||
// Run the new task separately from the current one using the executor
|
||||
let sender = sender.clone();
|
||||
let task = exec.spawn(async move {
|
||||
let task = task::spawn_local(async move {
|
||||
// HACK: For deferred tasks we yield a bunch of times to try and ensure
|
||||
// we run our task at the very end of the async queue, this can fail if
|
||||
// the user creates a bunch of interleaved deferred and normal tasks
|
||||
if mode == TaskRunMode::Deferred {
|
||||
for _ in 0..64 {
|
||||
yield_now().await;
|
||||
task::yield_now().await;
|
||||
}
|
||||
}
|
||||
sender
|
||||
|
@ -64,16 +60,16 @@ pub async fn run_registered_task<T>(
|
|||
})
|
||||
.await
|
||||
});
|
||||
// Wait for the task to complete OR let it run in the background
|
||||
// Wait for the task to complete if we want this call to be blocking
|
||||
// Any lua errors will be sent through the message channel back
|
||||
// to the main thread which will then handle them properly
|
||||
if mode == TaskRunMode::Blocking {
|
||||
task.await.map_err(LuaError::external)?;
|
||||
} else {
|
||||
task.detach();
|
||||
task.await
|
||||
.map_err(LuaError::external)?
|
||||
.map_err(LuaError::external)?;
|
||||
}
|
||||
// Yield once right away to let the above spawned task start working
|
||||
// instantly, forcing it to run until completion or until it yields
|
||||
yield_now().await;
|
||||
task::yield_now().await;
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue