Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 173ad65c5c | |||
|
e10cfcfcb5
|
|||
| 9080c20227 | |||
|
3ec2b659f3
|
|||
| f2db341277 | |||
|
5a95ccc633
|
|||
|
68a0c7113e
|
|||
|
2088256e29
|
|||
|
d50e86f809
|
|||
|
b37b08d564
|
|||
| 316200ead4 | |||
|
d66f786aca
|
962
Cargo.lock
generated
962
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
11
Cargo.toml
11
Cargo.toml
@@ -1,7 +1,7 @@
|
|||||||
workspace = { members = ["rbx_asset", "rox_compiler"] }
|
workspace = { members = ["rbx_asset", "rox_compiler"] }
|
||||||
[package]
|
[package]
|
||||||
name = "asset-tool"
|
name = "asset-tool"
|
||||||
version = "0.5.0"
|
version = "0.5.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
@@ -11,12 +11,11 @@ anyhow = "1.0.75"
|
|||||||
clap = { version = "4.4.2", features = ["derive"] }
|
clap = { version = "4.4.2", features = ["derive"] }
|
||||||
futures = "0.3.30"
|
futures = "0.3.30"
|
||||||
git2 = { version = "0.20.0", optional = true }
|
git2 = { version = "0.20.0", optional = true }
|
||||||
lazy-regex = "3.1.0"
|
|
||||||
rbx_asset = { path = "rbx_asset", features = ["gzip", "rustls-tls"], default-features = false }
|
rbx_asset = { path = "rbx_asset", features = ["gzip", "rustls-tls"], default-features = false }
|
||||||
rbx_binary = "1.0.0"
|
rbx_binary = "2.0.0"
|
||||||
rbx_dom_weak = "3.0.0"
|
rbx_dom_weak = "4.0.0"
|
||||||
rbx_reflection_database = "1.0.3"
|
rbx_reflection_database = "2.0.1"
|
||||||
rbx_xml = "1.0.0"
|
rbx_xml = "2.0.0"
|
||||||
rox_compiler = { path = "rox_compiler" }
|
rox_compiler = { path = "rox_compiler" }
|
||||||
serde_json = "1.0.111"
|
serde_json = "1.0.111"
|
||||||
tokio = { version = "1.35.1", features = ["macros", "rt-multi-thread", "fs"] }
|
tokio = { version = "1.35.1", features = ["macros", "rt-multi-thread", "fs"] }
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
FROM alpine:3.22 AS runtime
|
FROM alpine:3.22 AS runtime
|
||||||
COPY /target/x86_64-unknown-linux-musl/release/asset-tool /
|
COPY /target/x86_64-unknown-linux-musl/release/asset-tool /usr/local/bin/
|
||||||
ENTRYPOINT ["/asset-tool"]
|
ENTRYPOINT ["/usr/local/bin/asset-tool"]
|
||||||
|
|||||||
@@ -3,14 +3,13 @@ use crate::util::{serialize_u64,deserialize_u64,response_ok};
|
|||||||
use crate::types::{ResponseError,MaybeGzippedBytes};
|
use crate::types::{ResponseError,MaybeGzippedBytes};
|
||||||
|
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
|
||||||
pub enum AssetType{
|
pub enum AssetType{
|
||||||
Audio,
|
Audio,
|
||||||
Decal,
|
Decal,
|
||||||
Model,
|
Model,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct CreateAssetRequest{
|
pub struct CreateAssetRequest{
|
||||||
pub assetType:AssetType,
|
pub assetType:AssetType,
|
||||||
pub creationContext:CreationContext,
|
pub creationContext:CreationContext,
|
||||||
@@ -56,7 +55,7 @@ impl std::fmt::Display for CreateError{
|
|||||||
impl std::error::Error for CreateError{}
|
impl std::error::Error for CreateError{}
|
||||||
|
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct UpdateAssetRequest{
|
pub struct UpdateAssetRequest{
|
||||||
pub assetId:u64,
|
pub assetId:u64,
|
||||||
pub displayName:Option<String>,
|
pub displayName:Option<String>,
|
||||||
@@ -65,42 +64,41 @@ pub struct UpdateAssetRequest{
|
|||||||
|
|
||||||
//woo nested roblox stuff
|
//woo nested roblox stuff
|
||||||
#[derive(Clone,Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Clone,Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub enum Creator{
|
pub enum Creator{
|
||||||
userId(#[serde(deserialize_with="deserialize_u64",serialize_with="serialize_u64")]u64),
|
userId(#[serde(deserialize_with="deserialize_u64",serialize_with="serialize_u64")]u64),
|
||||||
groupId(#[serde(deserialize_with="deserialize_u64",serialize_with="serialize_u64")]u64),
|
groupId(#[serde(deserialize_with="deserialize_u64",serialize_with="serialize_u64")]u64),
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct CreationContext{
|
pub struct CreationContext{
|
||||||
pub creator:Creator,
|
pub creator:Creator,
|
||||||
pub expectedPrice:Option<u64>,
|
pub expectedPrice:Option<u64>,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
|
||||||
pub enum ModerationState{
|
pub enum ModerationState{
|
||||||
Reviewing,
|
Reviewing,
|
||||||
Rejected,
|
Rejected,
|
||||||
Approved,
|
Approved,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct ModerationResult{
|
pub struct ModerationResult{
|
||||||
pub moderationState:ModerationState,
|
pub moderationState:ModerationState,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct Preview{
|
pub struct Preview{
|
||||||
pub asset:String,
|
pub asset:String,
|
||||||
pub altText:String,
|
pub altText:String,
|
||||||
}
|
}
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct UpdatePlaceRequest{
|
pub struct UpdatePlaceRequest{
|
||||||
pub universeId:u64,
|
pub universeId:u64,
|
||||||
pub placeId:u64,
|
pub placeId:u64,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct UpdatePlaceResponse{
|
pub struct UpdatePlaceResponse{
|
||||||
pub versionNumber:u64,
|
pub versionNumber:u64,
|
||||||
}
|
}
|
||||||
@@ -146,7 +144,7 @@ pub struct GetAssetLatestRequest{
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct AssetResponse{
|
pub struct AssetResponse{
|
||||||
//u64 wrapped in quotes wohoo!!
|
//u64 wrapped in quotes wohoo!!
|
||||||
#[serde(deserialize_with="deserialize_u64")]
|
#[serde(deserialize_with="deserialize_u64")]
|
||||||
@@ -166,7 +164,6 @@ pub struct AssetResponse{
|
|||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub previews:Vec<Preview>,
|
pub previews:Vec<Preview>,
|
||||||
}
|
}
|
||||||
#[allow(nonstandard_style,dead_code)]
|
|
||||||
pub struct GetAssetVersionRequest{
|
pub struct GetAssetVersionRequest{
|
||||||
pub asset_id:u64,
|
pub asset_id:u64,
|
||||||
pub version:u64,
|
pub version:u64,
|
||||||
@@ -197,13 +194,13 @@ impl AssetLocation{
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug,serde::Deserialize)]
|
#[derive(Debug,serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct AssetMetadata{
|
pub struct AssetMetadata{
|
||||||
pub metadataType:u32,
|
pub metadataType:u32,
|
||||||
pub value:String,
|
pub value:String,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize)]
|
#[derive(Debug,serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct AssetLocationInfo{
|
pub struct AssetLocationInfo{
|
||||||
pub location:Option<AssetLocation>,
|
pub location:Option<AssetLocation>,
|
||||||
pub requestId:String,
|
pub requestId:String,
|
||||||
@@ -219,7 +216,7 @@ pub struct AssetVersionsRequest{
|
|||||||
pub cursor:Option<String>,
|
pub cursor:Option<String>,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct AssetVersion{
|
pub struct AssetVersion{
|
||||||
pub Id:u64,
|
pub Id:u64,
|
||||||
pub assetId:u64,
|
pub assetId:u64,
|
||||||
@@ -231,7 +228,7 @@ pub struct AssetVersion{
|
|||||||
pub isPublished:bool,
|
pub isPublished:bool,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize)]
|
#[derive(Debug,serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct AssetVersionsResponse{
|
pub struct AssetVersionsResponse{
|
||||||
pub previousPageCursor:Option<String>,
|
pub previousPageCursor:Option<String>,
|
||||||
pub nextPageCursor:Option<String>,
|
pub nextPageCursor:Option<String>,
|
||||||
@@ -255,13 +252,12 @@ pub struct InventoryPageRequest{
|
|||||||
pub cursor:Option<String>,
|
pub cursor:Option<String>,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
|
||||||
pub struct InventoryItem{
|
pub struct InventoryItem{
|
||||||
pub id:u64,
|
pub id:u64,
|
||||||
pub name:String,
|
pub name:String,
|
||||||
}
|
}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct InventoryPageResponse{
|
pub struct InventoryPageResponse{
|
||||||
pub totalResults:u64,//up to 50
|
pub totalResults:u64,//up to 50
|
||||||
pub filteredKeyword:Option<String>,//""
|
pub filteredKeyword:Option<String>,//""
|
||||||
@@ -299,7 +295,7 @@ impl std::fmt::Display for OperationError{
|
|||||||
}
|
}
|
||||||
impl std::error::Error for OperationError{}
|
impl std::error::Error for OperationError{}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
struct RobloxOperation{
|
struct RobloxOperation{
|
||||||
pub path:Option<String>,
|
pub path:Option<String>,
|
||||||
pub metadata:Option<String>,
|
pub metadata:Option<String>,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ impl std::fmt::Display for PostError{
|
|||||||
impl std::error::Error for PostError{}
|
impl std::error::Error for PostError{}
|
||||||
|
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct CreateRequest{
|
pub struct CreateRequest{
|
||||||
pub name:String,
|
pub name:String,
|
||||||
pub description:String,
|
pub description:String,
|
||||||
@@ -43,7 +43,7 @@ impl std::fmt::Display for CreateError{
|
|||||||
}
|
}
|
||||||
impl std::error::Error for CreateError{}
|
impl std::error::Error for CreateError{}
|
||||||
|
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct UploadRequest{
|
pub struct UploadRequest{
|
||||||
pub assetid:u64,
|
pub assetid:u64,
|
||||||
pub name:Option<String>,
|
pub name:Option<String>,
|
||||||
@@ -73,17 +73,15 @@ impl std::fmt::Display for UploadError{
|
|||||||
}
|
}
|
||||||
impl std::error::Error for UploadError{}
|
impl std::error::Error for UploadError{}
|
||||||
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
#[derive(Debug,serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct UploadResponse{
|
pub struct UploadResponse{
|
||||||
pub AssetId:u64,
|
pub AssetId:u64,
|
||||||
pub AssetVersion:u64,
|
pub AssetVersion:u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(nonstandard_style,dead_code)]
|
|
||||||
pub struct GetAssetDetailsRequest{
|
pub struct GetAssetDetailsRequest{
|
||||||
pub asset_id:u64,
|
pub asset_id:u64,
|
||||||
}
|
}
|
||||||
#[allow(nonstandard_style,dead_code)]
|
|
||||||
pub struct GetAssetRequest{
|
pub struct GetAssetRequest{
|
||||||
pub asset_id:u64,
|
pub asset_id:u64,
|
||||||
pub version:Option<u64>,
|
pub version:Option<u64>,
|
||||||
@@ -118,13 +116,13 @@ impl std::fmt::Display for GetAssetV2Error{
|
|||||||
impl std::error::Error for GetAssetV2Error{}
|
impl std::error::Error for GetAssetV2Error{}
|
||||||
|
|
||||||
#[derive(serde::Deserialize)]
|
#[derive(serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct GetAssetV2AssetMetadata{
|
pub struct GetAssetV2AssetMetadata{
|
||||||
pub metadataType:u32,
|
pub metadataType:u32,
|
||||||
pub value:String,
|
pub value:String,
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize)]
|
#[derive(serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct GetAssetV2Location{
|
pub struct GetAssetV2Location{
|
||||||
pub assetFormat:String,// "source"
|
pub assetFormat:String,// "source"
|
||||||
location:String,// this value is private so users cannot mutate it
|
location:String,// this value is private so users cannot mutate it
|
||||||
@@ -137,7 +135,7 @@ impl GetAssetV2Location{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize)]
|
#[derive(serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct GetAssetV2Info{
|
pub struct GetAssetV2Info{
|
||||||
pub locations:Vec<GetAssetV2Location>,
|
pub locations:Vec<GetAssetV2Location>,
|
||||||
pub requestId:String,
|
pub requestId:String,
|
||||||
@@ -162,7 +160,7 @@ pub enum CreatorType{
|
|||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
#[derive(serde::Deserialize)]
|
#[derive(serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct Creator{
|
pub struct Creator{
|
||||||
pub Id:u64,
|
pub Id:u64,
|
||||||
pub Name:String,
|
pub Name:String,
|
||||||
@@ -173,7 +171,7 @@ pub struct Creator{
|
|||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
#[derive(serde::Deserialize)]
|
#[derive(serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct AssetDetails{
|
pub struct AssetDetails{
|
||||||
pub TargetId:u64,
|
pub TargetId:u64,
|
||||||
pub ProductType:Option<String>,
|
pub ProductType:Option<String>,
|
||||||
@@ -209,7 +207,7 @@ pub struct AssetVersionsPageRequest{
|
|||||||
pub cursor:Option<String>,
|
pub cursor:Option<String>,
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize,serde::Serialize)]
|
#[derive(serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct AssetVersion{
|
pub struct AssetVersion{
|
||||||
pub Id:u64,
|
pub Id:u64,
|
||||||
pub assetId:u64,
|
pub assetId:u64,
|
||||||
@@ -221,7 +219,7 @@ pub struct AssetVersion{
|
|||||||
pub isPublished:bool,
|
pub isPublished:bool,
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize)]
|
#[derive(serde::Deserialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct AssetVersionsPageResponse{
|
pub struct AssetVersionsPageResponse{
|
||||||
pub previousPageCursor:Option<String>,
|
pub previousPageCursor:Option<String>,
|
||||||
pub nextPageCursor:Option<String>,
|
pub nextPageCursor:Option<String>,
|
||||||
@@ -257,13 +255,12 @@ pub struct CreationsPageRequest{
|
|||||||
pub cursor:Option<String>,
|
pub cursor:Option<String>,
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize,serde::Serialize)]
|
#[derive(serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
|
||||||
pub struct CreationsItem{
|
pub struct CreationsItem{
|
||||||
pub id:u64,
|
pub id:u64,
|
||||||
pub name:String,
|
pub name:String,
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize,serde::Serialize)]
|
#[derive(serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct CreationsPageResponse{
|
pub struct CreationsPageResponse{
|
||||||
pub totalResults:u64,//up to 50
|
pub totalResults:u64,//up to 50
|
||||||
pub filteredKeyword:Option<String>,//""
|
pub filteredKeyword:Option<String>,//""
|
||||||
@@ -282,14 +279,14 @@ pub struct UserInventoryPageRequest{
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(serde::Deserialize,serde::Serialize)]
|
#[derive(serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct UserInventoryItemOwner{
|
pub struct UserInventoryItemOwner{
|
||||||
pub userId:u64,
|
pub userId:u64,
|
||||||
pub username:String,
|
pub username:String,
|
||||||
pub buildersClubMembershipType:String,
|
pub buildersClubMembershipType:String,
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize,serde::Serialize)]
|
#[derive(serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct UserInventoryItem{
|
pub struct UserInventoryItem{
|
||||||
pub userAssetId:u64,
|
pub userAssetId:u64,
|
||||||
pub assetId:u64,
|
pub assetId:u64,
|
||||||
@@ -301,7 +298,7 @@ pub struct UserInventoryItem{
|
|||||||
pub updated:chrono::DateTime<chrono::Utc>,
|
pub updated:chrono::DateTime<chrono::Utc>,
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize,serde::Serialize)]
|
#[derive(serde::Deserialize,serde::Serialize)]
|
||||||
#[allow(nonstandard_style,dead_code)]
|
#[expect(nonstandard_style)]
|
||||||
pub struct UserInventoryPageResponse{
|
pub struct UserInventoryPageResponse{
|
||||||
pub previousPageCursor:Option<String>,
|
pub previousPageCursor:Option<String>,
|
||||||
pub nextPageCursor:Option<String>,
|
pub nextPageCursor:Option<String>,
|
||||||
@@ -324,13 +321,13 @@ impl std::fmt::Display for SetAssetsPermissionsError{
|
|||||||
impl std::error::Error for SetAssetsPermissionsError{}
|
impl std::error::Error for SetAssetsPermissionsError{}
|
||||||
|
|
||||||
#[derive(serde::Serialize)]
|
#[derive(serde::Serialize)]
|
||||||
#[allow(nonstandard_style)]
|
#[expect(nonstandard_style)]
|
||||||
struct AssetPermissions{
|
struct AssetPermissions{
|
||||||
assetId:u64,
|
assetId:u64,
|
||||||
grantToDependencies:bool,//true
|
grantToDependencies:bool,//true
|
||||||
}
|
}
|
||||||
#[derive(serde::Serialize)]
|
#[derive(serde::Serialize)]
|
||||||
#[allow(nonstandard_style)]
|
#[expect(nonstandard_style)]
|
||||||
struct SetAssetsPermissions<'a>{
|
struct SetAssetsPermissions<'a>{
|
||||||
subjectType:&'a str,// "Universe"
|
subjectType:&'a str,// "Universe"
|
||||||
subjectId:&'a str,// "4422715291"
|
subjectId:&'a str,// "4422715291"
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ authors = ["Rhys Lloyd <krakow20@gmail.com>"]
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
futures = "0.3.30"
|
futures = "0.3.30"
|
||||||
lazy-regex = "3.1.0"
|
regex = { version = "1.11.3", default-features = false, features = ["unicode-perl"] }
|
||||||
rayon = "1.8.0"
|
rayon = "1.8.0"
|
||||||
rbx_dom_weak = "3.0.0"
|
rbx_dom_weak = "4.0.0"
|
||||||
rbx_xml = "1.0.0"
|
rbx_xml = "2.0.0"
|
||||||
tokio = { version = "1.35.1", features = ["fs"] }
|
tokio = { version = "1.35.1", features = ["fs"] }
|
||||||
|
|||||||
@@ -28,6 +28,16 @@ impl std::fmt::Display for PropertiesOverride{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn sanitize(s:&str)->std::borrow::Cow<'_,str>{
|
#[macro_export]
|
||||||
lazy_regex::regex!(r"[^A-Za-z0-9.-]").replace_all(s,"_")
|
macro_rules! lazy_regex{
|
||||||
|
($r:literal)=>{{
|
||||||
|
use regex::Regex;
|
||||||
|
use std::sync::LazyLock;
|
||||||
|
static RE:LazyLock<Regex>=LazyLock::new(||Regex::new($r).unwrap());
|
||||||
|
&RE
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn sanitize(s:&str)->std::borrow::Cow<'_,str>{
|
||||||
|
lazy_regex!(r"[^A-Za-z0-9.-]").replace_all(s,"_")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ use std::path::{Path,PathBuf};
|
|||||||
use futures::{StreamExt, TryStreamExt};
|
use futures::{StreamExt, TryStreamExt};
|
||||||
use tokio::io::AsyncReadExt;
|
use tokio::io::AsyncReadExt;
|
||||||
|
|
||||||
|
use crate::lazy_regex;
|
||||||
use crate::common::{sanitize,Style,PropertiesOverride};
|
use crate::common::{sanitize,Style,PropertiesOverride};
|
||||||
|
|
||||||
//holy smokes what am I doing lmao
|
//holy smokes what am I doing lmao
|
||||||
@@ -202,7 +203,7 @@ impl ScriptWithOverrides{
|
|||||||
let mut count=0;
|
let mut count=0;
|
||||||
for line in source.lines(){
|
for line in source.lines(){
|
||||||
//only string type properties are supported atm
|
//only string type properties are supported atm
|
||||||
if let Some(captures)=lazy_regex::regex!(r#"^\-\-\s*Properties\.([A-Za-z]\w*)\s*\=\s*"(\w+)"$"#)
|
if let Some(captures)=lazy_regex!(r#"^\-\-\s*Properties\.([A-Za-z]\w*)\s*\=\s*"(\w+)"$"#)
|
||||||
.captures(line){
|
.captures(line){
|
||||||
count+=line.len();
|
count+=line.len();
|
||||||
match &captures[1]{
|
match &captures[1]{
|
||||||
@@ -339,7 +340,7 @@ impl CompileNode{
|
|||||||
//reject goobers
|
//reject goobers
|
||||||
let is_goober=matches!(style,Some(Style::Rojo));
|
let is_goober=matches!(style,Some(Style::Rojo));
|
||||||
let (ext_len,file_discernment)={
|
let (ext_len,file_discernment)={
|
||||||
if let Some(captures)=lazy_regex::regex!(r"^.*(\.module\.lua|\.client\.lua|\.server\.lua)$")
|
if let Some(captures)=lazy_regex!(r"^.*(\.module\.lua|\.client\.lua|\.server\.lua)$")
|
||||||
.captures(file_name.as_str()){
|
.captures(file_name.as_str()){
|
||||||
let ext=&captures[1];
|
let ext=&captures[1];
|
||||||
(ext.len(),match ext{
|
(ext.len(),match ext{
|
||||||
@@ -353,7 +354,7 @@ impl CompileNode{
|
|||||||
".server.lua"=>FileDiscernment::Script(ScriptHint::Script),
|
".server.lua"=>FileDiscernment::Script(ScriptHint::Script),
|
||||||
_=>panic!("Regex failed"),
|
_=>panic!("Regex failed"),
|
||||||
})
|
})
|
||||||
}else if let Some(captures)=lazy_regex::regex!(r"^.*(\.rbxmx|\.lua)$")
|
}else if let Some(captures)=lazy_regex!(r"^.*(\.rbxmx|\.lua)$")
|
||||||
.captures(file_name.as_str()){
|
.captures(file_name.as_str()){
|
||||||
let ext=&captures[1];
|
let ext=&captures[1];
|
||||||
(ext.len(),match ext{
|
(ext.len(),match ext{
|
||||||
|
|||||||
Reference in New Issue
Block a user