diff --git a/src/lune/builtins/net/mod.rs b/src/lune/builtins/net/mod.rs index 6253dec..9ea5950 100644 --- a/src/lune/builtins/net/mod.rs +++ b/src/lune/builtins/net/mod.rs @@ -23,7 +23,7 @@ use super::serde::encode_decode::{EncodeDecodeConfig, EncodeDecodeFormat}; pub fn create(lua: &Lua) -> LuaResult { NetClientBuilder::new() - .headers(&[("User-Agent", create_user_agent_header())])? + .headers(&[("User-Agent", create_user_agent_header(lua)?)])? .build()? .into_registry(lua); TableBuilder::new(lua)? diff --git a/src/lune/builtins/net/util.rs b/src/lune/builtins/net/util.rs index 4603547..e18235e 100644 --- a/src/lune/builtins/net/util.rs +++ b/src/lune/builtins/net/util.rs @@ -7,12 +7,19 @@ use mlua::prelude::*; use crate::lune::util::TableBuilder; -pub fn create_user_agent_header() -> String { - let (github_owner, github_repo) = env!("CARGO_PKG_REPOSITORY") - .trim_start_matches("https://github.com/") - .split_once('/') - .unwrap(); - format!("{github_owner}-{github_repo}-cli") +pub fn create_user_agent_header(lua: &Lua) -> LuaResult { + let version_global = lua + .globals() + .get::<_, LuaString>("_VERSION") + .expect("Missing _VERSION global"); + + let version_global_str = version_global + .to_str() + .context("Invalid utf8 found in _VERSION global")?; + + let (package_name, full_version) = version_global_str.split_once(' ').unwrap(); + + Ok(format!("{}/{}", package_name.to_lowercase(), full_version)) } pub fn header_map_to_table( diff --git a/src/lune/globals/version.rs b/src/lune/globals/version.rs index 4904144..8ca5864 100644 --- a/src/lune/globals/version.rs +++ b/src/lune/globals/version.rs @@ -1,19 +1,20 @@ use mlua::prelude::*; pub fn create(lua: &Lua) -> LuaResult> { - let lune_version = format!("Lune {}", env!("CARGO_PKG_VERSION")); + let lune_version = format!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")); let luau_version_full = lua .globals() .get::<_, LuaString>("_VERSION") .expect("Missing _VERSION global"); + let luau_version_str = luau_version_full .to_str() .context("Invalid utf8 found in _VERSION global")?; // If this function runs more than once, we // may get an already formatted lune version. - if luau_version_str.starts_with(&lune_version) { + if luau_version_str.starts_with(lune_version.as_str()) { return Ok(luau_version_full); }