mirror of
https://github.com/lune-org/lune.git
synced 2025-03-31 08:30:56 +01:00
Add functions for getting Roblox Studio locations to roblox library (#284)
This commit is contained in:
parent
6cd0234a5f
commit
822dd19393
4 changed files with 197 additions and 28 deletions
104
Cargo.lock
generated
104
Cargo.lock
generated
|
@ -23,7 +23,7 @@ version = "0.8.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"cipher",
|
||||
"cpufeatures",
|
||||
]
|
||||
|
@ -206,7 +206,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8"
|
||||
dependencies = [
|
||||
"async-lock",
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"concurrent-queue",
|
||||
"futures-io",
|
||||
"futures-lite",
|
||||
|
@ -254,7 +254,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
|
||||
dependencies = [
|
||||
"addr2line",
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
"miniz_oxide",
|
||||
"object",
|
||||
|
@ -318,7 +318,7 @@ dependencies = [
|
|||
"arrayref",
|
||||
"arrayvec 0.7.6",
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"constant_time_eq 0.3.1",
|
||||
"digest",
|
||||
]
|
||||
|
@ -433,6 +433,12 @@ dependencies = [
|
|||
"shlex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
|
@ -650,7 +656,7 @@ version = "1.4.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -744,7 +750,7 @@ version = "5.0.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35"
|
||||
dependencies = [
|
||||
"dirs-sys",
|
||||
"dirs-sys 0.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -758,6 +764,27 @@ dependencies = [
|
|||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dirs"
|
||||
version = "2.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10",
|
||||
"dirs-sys 0.3.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dirs-sys"
|
||||
version = "0.3.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"redox_users 0.4.6",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dirs-sys"
|
||||
version = "0.4.1"
|
||||
|
@ -805,7 +832,7 @@ version = "0.8.34"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -890,7 +917,7 @@ version = "4.0.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"rustix",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
@ -999,7 +1026,7 @@ version = "0.8.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dbb949699c3e4df3a183b1d2142cb24277057055ed23c68ed58894f76c517223"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
"log",
|
||||
"rustversion",
|
||||
|
@ -1022,7 +1049,7 @@ version = "0.1.16"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
"wasi 0.9.0+wasi-snapshot-preview1",
|
||||
]
|
||||
|
@ -1033,7 +1060,7 @@ version = "0.2.15"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
||||
]
|
||||
|
@ -1432,7 +1459,7 @@ version = "0.8.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
|
@ -1490,7 +1517,7 @@ version = "0.7.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"generator",
|
||||
"scoped-tls",
|
||||
"tracing",
|
||||
|
@ -1660,6 +1687,7 @@ dependencies = [
|
|||
"mlua-luau-scheduler",
|
||||
"once_cell",
|
||||
"rbx_cookie",
|
||||
"roblox_install",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1764,7 +1792,7 @@ version = "0.10.6"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"digest",
|
||||
]
|
||||
|
||||
|
@ -1845,7 +1873,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "ebe026d6bd1583a9cf9080e189030ddaea7e6f5f0deb366a8e26f8a26c4135b8"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"luau0-src",
|
||||
"pkg-config",
|
||||
]
|
||||
|
@ -1866,7 +1894,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"cfg_aliases",
|
||||
"libc",
|
||||
]
|
||||
|
@ -1993,7 +2021,7 @@ version = "0.9.10"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
"redox_syscall 0.5.7",
|
||||
"smallvec",
|
||||
|
@ -2102,7 +2130,7 @@ version = "3.7.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"concurrent-queue",
|
||||
"hermit-abi 0.4.0",
|
||||
"pin-project-lite",
|
||||
|
@ -2250,7 +2278,7 @@ checksum = "d8a61b073240f4c13b1e780a8999a113dfa28bc93f2cf9fc41c6f36e7aceb5bf"
|
|||
dependencies = [
|
||||
"byteorder 0.5.3",
|
||||
"cookie",
|
||||
"dirs",
|
||||
"dirs 1.0.5",
|
||||
"log",
|
||||
"plist",
|
||||
"winapi",
|
||||
|
@ -2448,7 +2476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"getrandom 0.2.15",
|
||||
"libc",
|
||||
"spin",
|
||||
|
@ -2478,6 +2506,17 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "roblox_install"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "743bb8c693a387f1ae8d2026d82d8b0c175cc4777b97c1f7b12fdb3be595bb13"
|
||||
dependencies = [
|
||||
"dirs 2.0.2",
|
||||
"thiserror",
|
||||
"winreg 0.6.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rust-argon2"
|
||||
version = "0.8.3"
|
||||
|
@ -2614,7 +2653,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "7803e8936da37efd9b6d4478277f4b2b9bb5cdb37a113e8d63222e58da647e63"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"clipboard-win",
|
||||
"fd-lock",
|
||||
"home",
|
||||
|
@ -2785,7 +2824,7 @@ version = "0.10.6"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
@ -2802,7 +2841,7 @@ version = "0.10.8"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
@ -3009,7 +3048,7 @@ version = "3.13.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"fastrand",
|
||||
"once_cell",
|
||||
"rustix",
|
||||
|
@ -3042,7 +3081,7 @@ version = "1.1.8"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"once_cell",
|
||||
]
|
||||
|
||||
|
@ -3504,7 +3543,7 @@ version = "0.2.95"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"once_cell",
|
||||
"wasm-bindgen-macro",
|
||||
]
|
||||
|
@ -3530,7 +3569,7 @@ version = "0.4.45"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
|
@ -3851,6 +3890,15 @@ dependencies = [
|
|||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winreg"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winreg"
|
||||
version = "0.10.1"
|
||||
|
@ -3866,7 +3914,7 @@ version = "0.50.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cfg-if 1.0.0",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ mlua-luau-scheduler = { version = "0.0.2", path = "../mlua-luau-scheduler" }
|
|||
|
||||
once_cell = "1.17"
|
||||
rbx_cookie = { version = "0.1.4", default-features = false }
|
||||
roblox_install = "1.0.0"
|
||||
|
||||
lune-utils = { version = "0.1.3", path = "../lune-utils" }
|
||||
lune-roblox = { version = "0.1.4", path = "../lune-roblox" }
|
||||
|
|
|
@ -13,6 +13,7 @@ use lune_roblox::{
|
|||
static REFLECTION_DATABASE: OnceCell<ReflectionDatabase> = OnceCell::new();
|
||||
|
||||
use lune_utils::TableBuilder;
|
||||
use roblox_install::RobloxStudio;
|
||||
|
||||
/**
|
||||
Creates the `roblox` standard library module.
|
||||
|
@ -39,6 +40,10 @@ pub fn module(lua: &Lua) -> LuaResult<LuaTable> {
|
|||
.with_function("getReflectionDatabase", get_reflection_database)?
|
||||
.with_function("implementProperty", implement_property)?
|
||||
.with_function("implementMethod", implement_method)?
|
||||
.with_function("studioApplicationPath", studio_application_path)?
|
||||
.with_function("studioContentPath", studio_content_path)?
|
||||
.with_function("studioPluginPath", studio_plugin_path)?
|
||||
.with_function("studioBuiltinPluginPath", studio_builtin_plugin_path)?
|
||||
.build_readonly()
|
||||
}
|
||||
|
||||
|
@ -147,3 +152,27 @@ fn implement_method(
|
|||
InstanceRegistry::insert_method(lua, &class_name, &method_name, method).into_lua_err()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn studio_application_path(_: &Lua, _: ()) -> LuaResult<String> {
|
||||
RobloxStudio::locate()
|
||||
.map(|rs| rs.application_path().display().to_string())
|
||||
.map_err(LuaError::external)
|
||||
}
|
||||
|
||||
fn studio_content_path(_: &Lua, _: ()) -> LuaResult<String> {
|
||||
RobloxStudio::locate()
|
||||
.map(|rs| rs.content_path().display().to_string())
|
||||
.map_err(LuaError::external)
|
||||
}
|
||||
|
||||
fn studio_plugin_path(_: &Lua, _: ()) -> LuaResult<String> {
|
||||
RobloxStudio::locate()
|
||||
.map(|rs| rs.plugins_path().display().to_string())
|
||||
.map_err(LuaError::external)
|
||||
}
|
||||
|
||||
fn studio_builtin_plugin_path(_: &Lua, _: ()) -> LuaResult<String> {
|
||||
RobloxStudio::locate()
|
||||
.map(|rs| rs.built_in_plugins_path().display().to_string())
|
||||
.map_err(LuaError::external)
|
||||
}
|
||||
|
|
|
@ -504,4 +504,95 @@ roblox.Instance = (nil :: any) :: {
|
|||
new: ((className: "DataModel") -> DataModel) & ((className: string) -> Instance),
|
||||
}
|
||||
|
||||
--[=[
|
||||
@within Roblox
|
||||
@tag must_use
|
||||
|
||||
Returns the path to the system's Roblox Studio executable.
|
||||
|
||||
There is no guarantee that this will exist, but if Studio is installed this
|
||||
is where it will be.
|
||||
|
||||
### Example usage
|
||||
|
||||
```lua
|
||||
local roblox = require("@lune/roblox")
|
||||
|
||||
local pathToStudio = roblox.studioApplicationPath()
|
||||
print("Studio is located at:", pathToStudio)
|
||||
```
|
||||
]=]
|
||||
function roblox.studioApplicationPath(): string
|
||||
return nil :: any
|
||||
end
|
||||
|
||||
--[=[
|
||||
@within Roblox
|
||||
@tag must_use
|
||||
|
||||
Returns the path to the `Content` folder of the system's current Studio
|
||||
install.
|
||||
|
||||
This folder will always exist if Studio is installed.
|
||||
|
||||
### Example usage
|
||||
|
||||
```lua
|
||||
local roblox = require("@lune/roblox")
|
||||
|
||||
local pathToContent = roblox.studioContentPath()
|
||||
print("Studio's content folder is located at:", pathToContent)
|
||||
```
|
||||
]=]
|
||||
function roblox.studioContentPath(): string
|
||||
return nil :: any
|
||||
end
|
||||
|
||||
--[=[
|
||||
@within Roblox
|
||||
@tag must_use
|
||||
|
||||
Returns the path to the `plugin` folder of the system's current Studio
|
||||
install. This is the path where local plugins are installed.
|
||||
|
||||
This folder may not exist if the user has never installed a local plugin.
|
||||
It will also not necessarily take into account custom plugin directories
|
||||
set from Studio.
|
||||
|
||||
### Example usage
|
||||
|
||||
```lua
|
||||
local roblox = require("@lune/roblox")
|
||||
|
||||
local pathToPluginFolder = roblox.studioPluginPath()
|
||||
print("Studio's plugin folder is located at:", pathToPluginFolder)
|
||||
```
|
||||
]=]
|
||||
function roblox.studioPluginPath(): string
|
||||
return nil :: any
|
||||
end
|
||||
|
||||
--[=[
|
||||
@within Roblox
|
||||
@tag must_use
|
||||
|
||||
Returns the path to the `BuiltInPlugin` folder of the system's current
|
||||
Studio install. This is the path where built-in plugins like the ToolBox
|
||||
are installed.
|
||||
|
||||
This folder will always exist if Studio is installed.
|
||||
|
||||
### Example usage
|
||||
|
||||
```lua
|
||||
local roblox = require("@lune/roblox")
|
||||
|
||||
local pathToPluginFolder = roblox.studioBuiltinPluginPath()
|
||||
print("Studio's built-in plugin folder is located at:", pathToPluginFolder)
|
||||
```
|
||||
]=]
|
||||
function roblox.studioBuiltinPluginPath(): string
|
||||
return nil :: any
|
||||
end
|
||||
|
||||
return roblox
|
||||
|
|
Loading…
Add table
Reference in a new issue