feat: download release only when needed (#1751)
* feat: download release only when needed in build.sh * fix(build.sh): get latest tag time locally * feat: download release only when needed in Build.ps1 * fix(build.sh): fix gt to ge
This commit is contained in:
14
Build.ps1
14
Build.ps1
@@ -89,6 +89,20 @@ function Main {
|
|||||||
Write-Host "Building for $Version..."
|
Write-Host "Building for $Version..."
|
||||||
Build-FromSource $Version
|
Build-FromSource $Version
|
||||||
} else {
|
} else {
|
||||||
|
$latestTag = git tag --sort=-creatordate | Select-Object -First 1
|
||||||
|
$latestTagTime = [int](git log -1 $latestTag --format=%at 2>&1 | Where-Object { $_ -match '^\d+$' })
|
||||||
|
|
||||||
|
$currentBuildTime = if ($buildFiles = Get-ChildItem -Path "build/avante_html2md*" -ErrorAction SilentlyContinue) {
|
||||||
|
[long](($buildFiles | ForEach-Object { $_.LastWriteTime } |
|
||||||
|
Measure-Object -Maximum).Maximum.Subtract([datetime]'1970-01-01').TotalSeconds)
|
||||||
|
} else {
|
||||||
|
$latestTagTime
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($latestTagTime -lt $currentBuildTime) {
|
||||||
|
Write-Host "Local build is up to date. No download needed."
|
||||||
|
return
|
||||||
|
}
|
||||||
Write-Host "Downloading for $Version..."
|
Write-Host "Downloading for $Version..."
|
||||||
Download-Prebuilt $Version
|
Download-Prebuilt $Version
|
||||||
}
|
}
|
||||||
|
|||||||
10
build.sh
10
build.sh
@@ -66,9 +66,12 @@ if [ ! -d "$TARGET_DIR" ]; then
|
|||||||
mkdir -p "$TARGET_DIR"
|
mkdir -p "$TARGET_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test_command "gh" && test_gh_auth; then
|
latest_tag_time=$(git tag --sort=-creatordate | xargs git log -1 --format=%at)
|
||||||
|
current_build_time=$(stat -c %Y build/avante_html2md* 2>/dev/null || echo "$latest_tag_time")
|
||||||
|
if [[ "$latest_tag_time" -ge "$current_build_time" ]]; then
|
||||||
|
if test_command "gh" && test_gh_auth; then
|
||||||
gh release download --repo "github.com/$REPO_OWNER/$REPO_NAME" --pattern "*$ARTIFACT_NAME_PATTERN*" --clobber --output - | tar -zxv -C "$TARGET_DIR"
|
gh release download --repo "github.com/$REPO_OWNER/$REPO_NAME" --pattern "*$ARTIFACT_NAME_PATTERN*" --clobber --output - | tar -zxv -C "$TARGET_DIR"
|
||||||
else
|
else
|
||||||
# Get the artifact download URL
|
# Get the artifact download URL
|
||||||
ARTIFACT_URL=$(curl -s "https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases/latest" | grep "browser_download_url" | cut -d '"' -f 4 | grep $ARTIFACT_NAME_PATTERN)
|
ARTIFACT_URL=$(curl -s "https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases/latest" | grep "browser_download_url" | cut -d '"' -f 4 | grep $ARTIFACT_NAME_PATTERN)
|
||||||
|
|
||||||
@@ -77,4 +80,7 @@ else
|
|||||||
mkdir -p "$TARGET_DIR"
|
mkdir -p "$TARGET_DIR"
|
||||||
|
|
||||||
curl -L "$ARTIFACT_URL" | tar -zxv -C "$TARGET_DIR"
|
curl -L "$ARTIFACT_URL" | tar -zxv -C "$TARGET_DIR"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Local build is up to date. No download needed."
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user