diff --git a/src/proto.rs b/src/proto.rs index fdb8f2d..ab062d0 100644 --- a/src/proto.rs +++ b/src/proto.rs @@ -41,16 +41,20 @@ pub fn download_prebuilt( _ => unreachable!(), }; - let os = env.os; - - let prefix = match os { - HostOS::Linux => format!("zls-linux-{arch}-{version}"), - HostOS::MacOS => format!("zls-macos-{arch}-{version}"), - HostOS::Windows => format!("zls-windows-{arch}-{version}"), + let os = match env.os { + HostOS::Linux => "linux", + HostOS::MacOS => "macos", + HostOS::Windows => "windows", _ => unreachable!(), }; - let filename = if os.is_windows() { + let prefix = if version >= VersionSpec::parse("0.15.0")? { + format!("zls-{arch}-{os}-{version}") + } else { + format!("zls-{os}-{arch}-{version}") + }; + + let filename = if env.os.is_windows() { format!("{prefix}.zip") } else { format!("{prefix}.tar.xz") @@ -85,7 +89,7 @@ pub fn locate_executables( #[plugin_fn] pub fn load_versions(Json(_): Json) -> FnResult> { - let response: ZlsDist = fetch_json("https://releases.zigtools.org/v1/zls/index.json")?; + let response: ZlsDist = fetch_json("https://builds.zigtools.org/index.json")?; let versions = response.versions.keys().map(|t| t.to_owned()).collect(); let output = LoadVersionsOutput::from(versions)?; diff --git a/tests/download_test.rs b/tests/download_test.rs index 92a9c33..4f2931b 100644 --- a/tests/download_test.rs +++ b/tests/download_test.rs @@ -1,6 +1,6 @@ use proto_pdk_test_utils::*; -generate_download_install_tests!("zls-test", "0.13.0"); +generate_download_install_tests!("zls-test", "0.16.0"); // mod canary { // use super::*; @@ -21,22 +21,22 @@ async fn supports_linux_arm64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zls-linux-aarch64-0.13.0".into()), + archive_prefix: Some("zls-aarch64-linux-0.16.0".into()), checksum_url: Some( - "https://builds.zigtools.org/zls-linux-aarch64-0.13.0.tar.xz.minisig".into() + "https://builds.zigtools.org/zls-aarch64-linux-0.16.0.tar.xz.minisig".into() ), checksum_public_key: Some( "RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex".into() ), - download_name: Some("zls-linux-aarch64-0.13.0.tar.xz".into()), - download_url: "https://builds.zigtools.org/zls-linux-aarch64-0.13.0.tar.xz".into(), + download_name: Some("zls-aarch64-linux-0.16.0.tar.xz".into()), + download_url: "https://builds.zigtools.org/zls-aarch64-linux-0.16.0.tar.xz".into(), ..Default::default() } ); @@ -55,22 +55,22 @@ async fn supports_linux_x64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zls-linux-x86_64-0.13.0".into()), + archive_prefix: Some("zls-x86_64-linux-0.16.0".into()), checksum_url: Some( - "https://builds.zigtools.org/zls-linux-x86_64-0.13.0.tar.xz.minisig".into() + "https://builds.zigtools.org/zls-x86_64-linux-0.16.0.tar.xz.minisig".into() ), checksum_public_key: Some( "RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex".into() ), - download_name: Some("zls-linux-x86_64-0.13.0.tar.xz".into()), - download_url: "https://builds.zigtools.org/zls-linux-x86_64-0.13.0.tar.xz".into(), + download_name: Some("zls-x86_64-linux-0.16.0.tar.xz".into()), + download_url: "https://builds.zigtools.org/zls-x86_64-linux-0.16.0.tar.xz".into(), ..Default::default() } ); @@ -89,22 +89,22 @@ async fn supports_linux_x86() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zls-linux-x86-0.13.0".into()), + archive_prefix: Some("zls-x86-linux-0.16.0".into()), checksum_url: Some( - "https://builds.zigtools.org/zls-linux-x86-0.13.0.tar.xz.minisig".into() + "https://builds.zigtools.org/zls-x86-linux-0.16.0.tar.xz.minisig".into() ), checksum_public_key: Some( "RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex".into() ), - download_name: Some("zls-linux-x86-0.13.0.tar.xz".into()), - download_url: "https://builds.zigtools.org/zls-linux-x86-0.13.0.tar.xz".into(), + download_name: Some("zls-x86-linux-0.16.0.tar.xz".into()), + download_url: "https://builds.zigtools.org/zls-x86-linux-0.16.0.tar.xz".into(), ..Default::default() } ); @@ -123,22 +123,22 @@ async fn supports_macos_arm64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zls-macos-aarch64-0.13.0".into()), + archive_prefix: Some("zls-aarch64-macos-0.16.0".into()), checksum_url: Some( - "https://builds.zigtools.org/zls-macos-aarch64-0.13.0.tar.xz.minisig".into() + "https://builds.zigtools.org/zls-aarch64-macos-0.16.0.tar.xz.minisig".into() ), checksum_public_key: Some( "RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex".into() ), - download_name: Some("zls-macos-aarch64-0.13.0.tar.xz".into()), - download_url: "https://builds.zigtools.org/zls-macos-aarch64-0.13.0.tar.xz".into(), + download_name: Some("zls-aarch64-macos-0.16.0.tar.xz".into()), + download_url: "https://builds.zigtools.org/zls-aarch64-macos-0.16.0.tar.xz".into(), ..Default::default() } ); @@ -157,22 +157,22 @@ async fn supports_macos_x64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zls-macos-x86_64-0.13.0".into()), + archive_prefix: Some("zls-x86_64-macos-0.16.0".into()), checksum_url: Some( - "https://builds.zigtools.org/zls-macos-x86_64-0.13.0.tar.xz.minisig".into() + "https://builds.zigtools.org/zls-x86_64-macos-0.16.0.tar.xz.minisig".into() ), checksum_public_key: Some( "RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex".into() ), - download_name: Some("zls-macos-x86_64-0.13.0.tar.xz".into()), - download_url: "https://builds.zigtools.org/zls-macos-x86_64-0.13.0.tar.xz".into(), + download_name: Some("zls-x86_64-macos-0.16.0.tar.xz".into()), + download_url: "https://builds.zigtools.org/zls-x86_64-macos-0.16.0.tar.xz".into(), ..Default::default() } ); @@ -191,22 +191,22 @@ async fn supports_windows_x64() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zls-windows-x86_64-0.13.0".into()), + archive_prefix: Some("zls-x86_64-windows-0.16.0".into()), checksum_url: Some( - "https://builds.zigtools.org/zls-windows-x86_64-0.13.0.zip.minisig".into() + "https://builds.zigtools.org/zls-x86_64-windows-0.16.0.zip.minisig".into() ), checksum_public_key: Some( "RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex".into() ), - download_name: Some("zls-windows-x86_64-0.13.0.zip".into()), - download_url: "https://builds.zigtools.org/zls-windows-x86_64-0.13.0.zip".into(), + download_name: Some("zls-x86_64-windows-0.16.0.zip".into()), + download_url: "https://builds.zigtools.org/zls-x86_64-windows-0.16.0.zip".into(), ..Default::default() } ); @@ -225,22 +225,56 @@ async fn supports_windows_x86() { plugin .download_prebuilt(DownloadPrebuiltInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() }) .await, DownloadPrebuiltOutput { - archive_prefix: Some("zls-windows-x86-0.13.0".into()), + archive_prefix: Some("zls-x86-windows-0.16.0".into()), checksum_url: Some( - "https://builds.zigtools.org/zls-windows-x86-0.13.0.zip.minisig".into() + "https://builds.zigtools.org/zls-x86-windows-0.16.0.zip.minisig".into() ), checksum_public_key: Some( "RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex".into() ), - download_name: Some("zls-windows-x86-0.13.0.zip".into()), - download_url: "https://builds.zigtools.org/zls-windows-x86-0.13.0.zip".into(), + download_name: Some("zls-x86-windows-0.16.0.zip".into()), + download_url: "https://builds.zigtools.org/zls-x86-windows-0.16.0.zip".into(), + ..Default::default() + } + ); +} + +#[tokio::test(flavor = "multi_thread")] +async fn supports_v0_14_0_and_below() { + let sandbox = create_empty_proto_sandbox(); + let plugin = sandbox + .create_plugin_with_config("zls-test", |config| { + config.host(HostOS::Linux, HostArch::Arm64); + }) + .await; + + assert_eq!( + plugin + .download_prebuilt(DownloadPrebuiltInput { + context: ToolContext { + version: VersionSpec::parse("0.14.0").unwrap(), + ..Default::default() + }, + ..Default::default() + }) + .await, + DownloadPrebuiltOutput { + archive_prefix: Some("zls-linux-aarch64-0.14.0".into()), + checksum_url: Some( + "https://builds.zigtools.org/zls-linux-aarch64-0.14.0.tar.xz.minisig".into() + ), + checksum_public_key: Some( + "RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex".into() + ), + download_name: Some("zls-linux-aarch64-0.14.0.tar.xz".into()), + download_url: "https://builds.zigtools.org/zls-linux-aarch64-0.14.0.tar.xz".into(), ..Default::default() } ); @@ -259,7 +293,7 @@ async fn locates_unix_bin() { plugin .locate_executables(LocateExecutablesInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() @@ -286,7 +320,7 @@ async fn locates_windows_bin() { plugin .locate_executables(LocateExecutablesInput { context: ToolContext { - version: VersionSpec::parse("0.13.0").unwrap(), + version: VersionSpec::parse("0.16.0").unwrap(), ..Default::default() }, ..Default::default() diff --git a/tests/versions_test.rs b/tests/versions_test.rs index 04f5939..ed6cb02 100644 --- a/tests/versions_test.rs +++ b/tests/versions_test.rs @@ -1,9 +1,9 @@ use proto_pdk_test_utils::*; generate_resolve_versions_tests!("zls-test", { - "0.13" => "0.13.0", - "0.13.0" => "0.13.0", - "0" => "0.14.0", + "0.16" => "0.16.0", + "0.16.0" => "0.16.0", + "0" => "0.16.0", }); #[tokio::test(flavor = "multi_thread")]