diff --git a/Redirects.cs b/Redirects.cs index 6ab16a5..94cefd3 100644 --- a/Redirects.cs +++ b/Redirects.cs @@ -11,31 +11,27 @@ class Redirect // TessesFramework {"tessesframework",Std("https://git.tesses.org/tesses50/tessesframework")}, - {"tf-tools-aarch64-linux",TF("tessesframework-tools-aarch64-linux-musl.tar.gz")}, - {"tf-tools-aarch64-macos",TF("tessesframework-tools-aarch64-macos-none.tar.gz")}, - {"tf-tools-aarch64-windows",TF("tessesframework-tools-aarch64-windows-gnu.zip")}, - {"tf-tools-arm-linux",TF("tessesframework-tools-arm-linux-musleabi.tar.gz")}, - {"tf-tools-powerpc-linux",TF("tessesframework-tools-powerpc-linux-musleabihf.tar.gz")}, - {"tf-tools-riscv64-linux",TF("tessesframework-tools-riscv64-linux-musl.tar.gz")}, - {"tf-tools-x86-linux",TF("tessesframework-tools-x86-linux-musl.tar.gz")}, - {"tf-tools-x86-windows",TF("tessesframework-tools-x86-windows-gnu.zip")}, - {"tf-tools-x86_64-linux",TF("tessesframework-tools-x86_64-linux-musl.tar.gz")}, - {"tf-tools-x86_64-macos",TF("tessesframework-tools-x86_64-macos-none.tar.gz")}, - {"tf-tools-x86_64-windows",TF("tessesframework-tools-x86_64-windows-gnu.zip")}, - {"cl-slim-aarch64-linux-musl", CL("crosslang-slim-aarch64-linux-musl")}, - {"cl-slim-aarch64-macos-none", CL("crosslang-slim-aarch64-macos-none")}, - {"cl-slim-aarch64-windows-gnu", CL("crosslang-slim-aarch64-windows-gnu.exe")}, - {"cl-slim-arm-linux-musleabi", CL("crosslang-slim-arm-linux-musleabi")}, - {"cl-slim-powerpc-linux-musleabihf", CL("crosslang-slim-powerpc-linux-musleabihf")}, - {"cl-slim-riscv64-linux-musl", CL("crosslang-slim-riscv64-linux-musl")}, - {"cl-slim-x86-linux-musl", CL("crosslang-slim-x86-linux-musl")}, - {"cl-slim-x86-windows-gnu", CL("crosslang-slim-x86-windows-gnu.exe")}, - {"cl-slim-x86_64-linux-musl", CL("crosslang-slim-x86_64-linux-musl")}, - {"cl-slim-x86_64-macos-none", CL("crosslang-slim-x86_64-macos-none")}, - {"cl-slim-x86_64-windows-gnu", CL("crosslang-slim-x86_64-windows-gnu.exe")}, - - - + {"tf-tools-win32",TF("tessesframework-tools-x86-windows-gnu.zip")}, + {"tf-tools-win64",TF("tessesframework-tools-x86_64-windows-gnu.zip")}, + {"tf-linux-i386",TFR("tessesframework-@TAG@-386.tar.gz")}, + {"tf-linux-amd64",TFR("tessesframework-@TAG@-amd64.tar.gz")}, + {"tf-linux-arm64",TFR("tessesframework-@TAG@-arm64.tar.gz")}, + {"tf-linux-arm7",TFR("tessesframework-@TAG@-arm7.tar.gz")}, + {"tf-linux-powerpc",TFR("tessesframework-@TAG@-powerpc.tar.gz")}, + {"tf-linux-riscv64",TFR("tessesframework-@TAG@-riscv64.tar.gz")}, + + // CrossLang + {"crosslang",Std("https://git.tesses.org/tesses50/crosslang")}, + {"cl-portable-win32",CL("crosslang-win32-portable.exe")}, + {"cl-portable-win64",CL("crosslang-win64-portable.exe")}, + {"cl-setup-win32",CL("crosslang-win32-setup.exe")}, + {"cl-setup-win64",CL("crosslang-win64-setup.exe")}, + {"cl-linux-i386",CLR("crossslang-@TAG@-386.tar.gz")}, + {"cl-linux-amd64",CLR("crossslang-@TAG@-amd64.tar.gz")}, + {"cl-linux-arm64",CLR("crossslang-@TAG@-arm64.tar.gz")}, + {"cl-linux-arm7",CLR("crossslang-@TAG@-arm7.tar.gz")}, + {"cl-linux-powerpc",CLR("crossslang-@TAG@-powerpc.tar.gz")}, + {"cl-linux-riscv64",CLR("crossslang-@TAG@-riscv64.tar.gz")}, }; private static IRedirect Std(string url) @@ -46,6 +42,10 @@ class Redirect { return new GiteaReleaseRedirect(giteaServer,giteaProject,file,prerelease); } + private static IRedirect GiteaR(string giteaServer, string giteaProject, string file, bool prerelease = false) + { + return new GiteaReleaseRedirect(giteaServer,giteaProject,file,prerelease); + } private static IRedirect TF(string filename) { return Gitea( @@ -55,6 +55,15 @@ class Redirect true ); } + private static IRedirect TFR(string filename) + { + return GiteaR( + "https://git.tesses.org/", + "tesses50/tessesframework", + filename, + true + ); + } private static IRedirect CL(string filename) { return Gitea( @@ -64,6 +73,15 @@ class Redirect true ); } + private static IRedirect CLR(string filename) + { + return GiteaR( + "https://git.tesses.org/", + "tesses50/crosslang", + filename, + true + ); + } public static async Task HandleRedirectAsync(string redir) { @@ -113,6 +131,48 @@ public class GiteaReleaseRedirect(string giteaServer, string giteaProject, strin public List<_asset> Assets {get;set;}=new List<_asset>(); + public class _asset + { + [JsonPropertyName("name")] + public string Name {get;set;}=""; + + [JsonPropertyName("browser_download_url")] + public string Url {get;set;}=""; + } + } +} +public class GiteaReleaseWithVersionInNameRedirect(string giteaServer, string giteaProject, string file, bool prerelease = false) : IRedirect +{ + private static HttpClient client =new HttpClient(); + public async Task RedirectAsync() + { + // https://git.tesseslanguage.com/api/v1/repos/tesses50/crosslang/releases?pre-release=true&limit=1 + var resp = await client.GetFromJsonAsync>($"{giteaServer.TrimEnd('/')}/api/v1/repos/{System.Web.HttpUtility.UrlPathEncode(giteaProject)}/releases?pre-release={(prerelease ? "true":"false")}&limit=1"); + if(resp is not null) + { + var resp2 = resp.FirstOrDefault(); + if(resp2 is not null) + { + string name = file.Replace("@TAG@", resp2.TagName); + + foreach(var item in resp2.Assets) + { + if(item.Name == name) + return item.Url; + } + } + } + return null; + } + + private class _release + { + [JsonPropertyName("tag_name")] + public string TagName {get;set;} = ""; + [JsonPropertyName("assets")] + public List<_asset> Assets {get;set;}=new List<_asset>(); + + public class _asset { [JsonPropertyName("name")] diff --git a/index.html b/index.html deleted file mode 100644 index e69de29..0000000