mirror of
https://github.com/CompeyDev/lune-packaging.git
synced 2025-01-10 20:49:10 +00:00
41 lines
1.3 KiB
Rust
41 lines
1.3 KiB
Rust
|
use std::path::{PathBuf, MAIN_SEPARATOR};
|
||
|
|
||
|
use anyhow::{bail, Result};
|
||
|
|
||
|
pub fn find_luau_file_path(path: &str) -> Option<PathBuf> {
|
||
|
let file_path = PathBuf::from(path);
|
||
|
if let Some(ext) = file_path.extension() {
|
||
|
match ext {
|
||
|
e if e == "lua" || e == "luau" && file_path.exists() => Some(file_path),
|
||
|
_ => None,
|
||
|
}
|
||
|
} else {
|
||
|
let file_path_lua = PathBuf::from(path).with_extension("lua");
|
||
|
if file_path_lua.exists() {
|
||
|
Some(file_path_lua)
|
||
|
} else {
|
||
|
let file_path_luau = PathBuf::from(path).with_extension("luau");
|
||
|
if file_path_luau.exists() {
|
||
|
Some(file_path_luau)
|
||
|
} else {
|
||
|
None
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub fn find_parse_file_path(path: &str) -> Result<PathBuf> {
|
||
|
let parsed_file_path = find_luau_file_path(path)
|
||
|
.or_else(|| find_luau_file_path(&format!("lune{MAIN_SEPARATOR}{path}")))
|
||
|
.or_else(|| find_luau_file_path(&format!(".lune{MAIN_SEPARATOR}{path}")));
|
||
|
if let Some(file_path) = parsed_file_path {
|
||
|
if file_path.exists() {
|
||
|
Ok(file_path)
|
||
|
} else {
|
||
|
bail!("File does not exist at path: '{}'", path)
|
||
|
}
|
||
|
} else {
|
||
|
bail!("Invalid file path: '{}'", path)
|
||
|
}
|
||
|
}
|