diff --git a/Build-LuaTiktoken.ps1 b/Build-LuaTiktoken.ps1 new file mode 100644 index 0000000..4b1d301 --- /dev/null +++ b/Build-LuaTiktoken.ps1 @@ -0,0 +1,32 @@ +param ( + [string]$Version = "luajit" +) + +$BuildDir = "build" +$BuildFromSource = $true + +function Build-FromSource($feature) { + if (-not (Test-Path $BuildDir)) { + New-Item -ItemType Directory -Path $BuildDir | Out-Null + } + + $tempDir = Join-Path $BuildDir "lua-tiktoken-temp" + git clone https://github.com/gptlang/lua-tiktoken.git $tempDir + + Push-Location $tempDir + cargo build --features=$feature + Pop-Location + + $targetFile = "tiktoken_core.dll" + Copy-Item (Join-Path $tempDir "target\debug\tiktoken_core.dll") (Join-Path $BuildDir $targetFile) + + Remove-Item -Recurse -Force $tempDir +} + +function Main { + Write-Host "Building for $Version..." + Build-FromSource $Version +} + +# Run the main function +Main diff --git a/README.md b/README.md index a30d8a9..d655f7a 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,17 @@ Install `avante.nvim` using [lazy.nvim](https://github.com/folke/lazy.nvim): } ``` +For Windows users, change the build command to the following: + +```lua +{ + "yetone/avante.nvim", + event = "VeryLazy", + build = "powershell -ExecutionPolicy Bypass -File Build-LuaTiktoken.ps1", + -- rest of the config +} +``` + > [!IMPORTANT] > > `avante.nvim` is currently only compatible with Neovim 0.10.0 or later. Please ensure that your Neovim version meets these requirements before proceeding. diff --git a/lua/tiktoken_lib.lua b/lua/tiktoken_lib.lua index c9dcc5d..4871e8a 100644 --- a/lua/tiktoken_lib.lua +++ b/lua/tiktoken_lib.lua @@ -7,6 +7,8 @@ H.get_os_name = function() return "linux" elseif os_name == "Darwin" then return "macOS" + elseif os_name == "Windows_NT" then + return "windows" else error("Unsupported operating system: " .. os_name) end @@ -14,7 +16,7 @@ end H.library_path = function() local os_name = H.get_os_name() - local ext = os_name == "linux" and "so" or "dylib" + local ext = os_name == "linux" and "so" or (os_name == "macOS" and "dylib" or "dll") local dirname = string.sub(debug.getinfo(1).source, 2, #"/tiktoken_lib.lua" * -1) return dirname .. ("../build/?.%s"):format(ext) end