Skip to content

Commit

Permalink
chore(build): support download-windows-artifacts
Browse files Browse the repository at this point in the history
Signed-off-by: Hanchin Hsieh <me@yuchanns.xyz>
  • Loading branch information
yuchanns committed Sep 4, 2024
1 parent f77bacb commit f239733
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 6 deletions.
55 changes: 49 additions & 6 deletions Build.ps1
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
param (
[string]$Version = "luajit"
[string]$Version = "luajit",
[string]$BuildFromSource = "true"
)

$Build = [System.Convert]::ToBoolean($BuildFromSource)

$ErrorActionPreference = "Stop"
$ProgressPreference = "SilentlyContinue"

$BuildDir = "build"
$BuildFromSource = $true

function Build-FromSource($feature) {
if (-not (Test-Path $BuildDir)) {
Expand All @@ -14,16 +19,54 @@ function Build-FromSource($feature) {

$targetTokenizerFile = "avante_tokenizers.dll"
$targetTemplatesFile = "avante_templates.dll"
Copy-Item (Join-Path "target\release\libavante_tokenizers.dll") (Join-Path $BuildDir $targetTokenizerFile)
Copy-Item (Join-Path "target\release\libavante_templates.dll") (Join-Path $BuildDir $targetTemplatesFile)
Copy-Item (Join-Path "target\release\avante_tokenizers.dll") (Join-Path $BuildDir $targetTokenizerFile)
Copy-Item (Join-Path "target\release\avante_templates.dll") (Join-Path $BuildDir $targetTemplatesFile)

Remove-Item -Recurse -Force "target"
}

function Download-Prebuilt($feature) {
$REPO_OWNER = "yetone"
$REPO_NAME = "avante.nvim"

$SCRIPT_DIR = $PSScriptRoot
# Set the target directory to clone the artifact
$TARGET_DIR = Join-Path $SCRIPT_DIR "build"

# Set the platform to Windows
$PLATFORM = "windows"

# Set the Lua version (lua51 or luajit)
$LUA_VERSION = if ($feature) { $feature } else { "luajit" }

# Set the artifact name pattern
$ARTIFACT_NAME_PATTERN = "avante_lib-$PLATFORM-latest-$LUA_VERSION"

# Get the artifact download URL
$LATEST_RELEASE = Invoke-RestMethod -Uri "https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases/latest"
$ARTIFACT_URL = $LATEST_RELEASE.assets | Where-Object { $_.name -like "*$ARTIFACT_NAME_PATTERN*" } | Select-Object -ExpandProperty browser_download_url

# Create target directory if it doesn't exist
if (-not (Test-Path $TARGET_DIR)) {
New-Item -ItemType Directory -Path $TARGET_DIR | Out-Null
}

# Download and extract the artifact
$TempFile = New-TemporaryFile | Rename-Item -NewName { $_.Name + ".zip" } -PassThru
Invoke-WebRequest -Uri $ARTIFACT_URL -OutFile $TempFile
Expand-Archive -Path $TempFile -DestinationPath $TARGET_DIR -Force
Remove-Item $TempFile
}

function Main {
Set-Location $PSScriptRoot
Write-Host "Building for $Version..."
Build-FromSource $Version
if ($Build) {
Write-Host "Building for $Version..."
Build-FromSource $Version
} else {
Write-Host "Downloading for $Version..."
Download-Prebuilt $Version
}
Write-Host "Completed!"
}

Expand Down
2 changes: 2 additions & 0 deletions lua/avante/api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ M.build = function(opts)
string.format("%s\\Build.ps1", build_directory),
"-WorkingDirectory",
build_directory,
"-BuildFromSource",
string.format("%s", opts.source == true and "true" or "false"),
}
else
error("Unsupported operating system: " .. os_name, 2)
Expand Down

0 comments on commit f239733

Please sign in to comment.