diff --git a/misc/gh-release-update.nu b/misc/gh-release-update.nu index 521e1bb73..29383483d 100755 --- a/misc/gh-release-update.nu +++ b/misc/gh-release-update.nu @@ -7,36 +7,41 @@ let headers = if ('GH_TOKEN' in $env) { def get-eligible-flake-inputs [] { open flake.nix | lines | - filter { |line| $line | str contains "gh-release-update" } | + where $it =~ "gh-release-update" | split column -c --regex '\s+' | each { |row| - $row.column3 | split column -c '"' | each {|row| $row.column1 } - } | + $row.column3 | split column -c '"' | get column1 + } | flatten } + # victorialogs.url = "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.8.0-victorialogs/victoria-logs-linux-amd64-v1.8.0-victorialogs.tar.gz"; # gh-release-update victorialogs def update-release-url [url: string] { print $"update-release-url: ($url)" if ($url | str contains "/releases/") { print $"url contains /releases/" - let url_parts = ($url | parse --regex 'https://github.com/(?P[a-zA-Z0-9-]+)/(?P[a-zA-Z0-9-]+)/releases/download/v?(?P[.0-9]+).*/(?P[a-zA-Z0-9-_.]+)$') - let api_url = $"https://api.github.com/repos/($url_parts.owner | to text)/($url_parts.repo | to text)/releases" + let url_parts = ($url | parse --regex 'https://github.com/(?P[a-zA-Z0-9-]+)/(?P[a-zA-Z0-9-]+)/releases/download/(?P.*)/(?P[a-zA-Z0-9-_.]+)$') + let api_url = $"https://api.github.com/repos/($url_parts.owner | first)/($url_parts.repo | first)/releases" print $"api_url: ($api_url)" let releases = (http get --headers $headers $api_url) - let new_version = ($releases | filter { |release| $release.draft == false and $release.prerelease == false } | first | get name | str replace "v" "") - print $"new_version: ($new_version)" - let new_url = $url | str replace --all ($url_parts.version | to text) $new_version - open flake.nix | str replace $url $new_url | save -f flake.nix + let new_version = $releases | where $it.draft == false and $it.prerelease == false | first | get name + print $"new_version: ($new_version), old version: ($url_parts.version | first)" + print $"new_url = ($url) | str replace --all ($url_parts.version | first) ($new_version)" + let new_url = $url | str replace --all ($url_parts.version | first) $new_version + print $"replace ($url) with ($new_url)" + # open flake.nix | str replace $url $new_url | save -f flake.nix } else if ($url | str contains "/raw.githubusercontent.com/") { print $"url contains /raw.githubusercontent.com/" let url_parts = ($url | parse --regex 'https://raw.githubusercontent.com/(?P[a-zA-Z0-9-]+)/(?P[a-zA-Z0-9-]+)/v?(?P[.0-9]+).*/(?P[a-zA-Z0-9-_.]+)$') - let api_url = $"https://api.github.com/repos/($url_parts.owner | to text)/($url_parts.repo | to text)/releases" + let api_url = $"https://api.github.com/repos/($url_parts.owner | first)/($url_parts.repo | first)/releases" print $"api_url: ($api_url)" let releases = (http get --headers $headers $api_url) - let new_version = ($releases | filter { |release| $release.draft == false and $release.prerelease == false } | first | get name | str replace "v" "") - print $"new_version: ($new_version)" - let new_url = $url | str replace --all ($url_parts.version | to text) $new_version - open flake.nix | str replace $url $new_url | save -f flake.nix + let new_version = $releases | where $it.draft == false and $it.prerelease == false | first | get name | str replace "v" "" + print $"new_version: ($new_version), old version: ($url_parts.version | first)" + print $"new_url = ($url) | str replace --all ($url_parts.version | first) ($new_version)" + let new_url = $url | str replace --all ($url_parts.version | first) $new_version + print $"replace ($url) with ($new_url)" + # open flake.nix | str replace $url $new_url | save -f flake.nix } else { print $"gh-release-update: unsupported URL ($url), skip" }