39 lines
No EOL
1.6 KiB
Rust
39 lines
No EOL
1.6 KiB
Rust
use onelauncher_core::{api::{cluster, packages::{self, download_package, provider::ProviderExt}, proxy::ProxyDynamic}, error::LauncherResult, initialize_core, store::{CoreOptions, Dirs}};
|
|
use onelauncher_entity::{loader::GameLoader, package::Provider};
|
|
|
|
#[tokio::main]
|
|
pub async fn main() -> LauncherResult<()> {
|
|
initialize_core(CoreOptions::default(), ProxyDynamic::default()).await?;
|
|
|
|
let dirs = Dirs::get().await?;
|
|
|
|
// Here we create the cluster
|
|
let cluster_name = "Chatting Profile";
|
|
let path = dirs.clusters_dir().join(cluster_name);
|
|
|
|
let cluster = if let Some(cluster) = cluster::dao::get_cluster_by_folder_name(&path).await? {
|
|
cluster
|
|
} else {
|
|
cluster::create_cluster(cluster_name, "1.8.9", GameLoader::Forge, None, None).await?
|
|
};
|
|
|
|
// Fetch our package and its versions
|
|
let provider = Provider::Modrinth;
|
|
let package = &provider.get("chatting").await?;
|
|
let versions = provider.get_versions(package.version_ids.as_slice()).await?;
|
|
|
|
let version = versions.iter().find(|v| v.mc_versions.contains(&"1.8.9".to_string())).expect("Version supporting 1.8.9 not found");
|
|
|
|
// We can now download the package
|
|
let model = download_package(package, version, None).await?;
|
|
|
|
// Link the package to the cluster
|
|
packages::link_package(&model, &cluster, None).await?;
|
|
|
|
// Check if the package is hard linked
|
|
let cluster_dir = dirs.clusters_dir().join(cluster.folder_name.clone());
|
|
let pkg_path = cluster_dir.join(model.package_type.folder_name()).join(model.file_name.as_str());
|
|
assert!(tokio::fs::metadata(&pkg_path).await.is_ok(), "Package not found in cluster directory");
|
|
|
|
Ok(())
|
|
} |