Skip to content

Commit

Permalink
Support passing launcher information to mods (#178)
Browse files Browse the repository at this point in the history
  • Loading branch information
Raicuparta authored Jun 23, 2024
2 parents f16ea95 + cf6c289 commit 39aec94
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion backend/src/mod_loaders/runnable_loader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ use crate::{
result::Error,
serializable_enum,
serializable_struct,
Result,
Result, providers::provider_command::ProviderCommand,
};

serializable_struct!(RunnableLoader {
Expand All @@ -38,6 +38,8 @@ serializable_enum!(RunnableParameter {
ExecutableName,
ExecutablePath,
GameJson,
StartCommand,
StartCommandArgs,
});

impl ModLoaderStatic for RunnableLoader {
Expand Down Expand Up @@ -91,6 +93,24 @@ fn replace_parameters(argument: &str, game: &InstalledGame) -> String {
result = replace_parameter_value(&result, RunnableParameter::GameJson, || {
Ok(serde_json::to_string(&game)?)
});
result = replace_parameter_value(&result, RunnableParameter::StartCommand, || {
match &game.start_command {
Some(provider_command) => match provider_command {
ProviderCommand::String(s) => Ok(s.to_string()),
ProviderCommand::Path(exe_path, _) => Ok(exe_path.to_string_lossy().to_string())
}
None => Ok(game.executable.path.to_string_lossy().to_string()) // fallback to path
}
});
result = replace_parameter_value(&result, RunnableParameter::StartCommandArgs, || {
match &game.start_command {
Some(provider_command) => match provider_command {
ProviderCommand::Path(_, args) => Ok(args.join(" ")),
_ => Ok(String::from("")),
}
_ => Ok(String::from("")),
}
});

result
}
Expand Down

0 comments on commit 39aec94

Please sign in to comment.