From b0ae06217d67ed594d789c434ce774087661f7b9 Mon Sep 17 00:00:00 2001 From: Justin Ma Date: Sun, 16 Feb 2025 18:07:14 +0800 Subject: [PATCH] chore: Fix gawk installation for GitHub Windows runners (#132) * chore: Fix gawk installation for Windows runners * chore: Fix gawk installation for Windows runners * chore: Fix gawk installation for Windows runners * chore: Fix gawk installation for Windows runners * chore: Fix gawk installation for Windows runners --- .github/workflows/tests.yml | 2 +- nu/review.nu | 42 +++++++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 58272f4..265cc8a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -55,7 +55,7 @@ jobs: with: version: ${{ matrix.version }} - - name: Test Deepseek Review + - name: Test DeepSeek Review shell: nu {0} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/nu/review.nu b/nu/review.nu index c6ddb08..d052909 100644 --- a/nu/review.nu +++ b/nu/review.nu @@ -279,6 +279,13 @@ export def get-diff [ $content } +# AWK family version check for both awk and gawk +# awk: awk version 20250116 -> 20250116 +# gawk: GNU Awk 5.3.1, API 4.0, (GNU MPFR 4.2.1, GNU MP 6.3.0) -> 5.3.1 +def get-awk-ver [awk_bin: string] { + ^$awk_bin --version | lines | first | split row , | first | split row ' ' | last +} + # Prepare gawk for macOS export def prepare-awk [] { const MIN_GAWK_VERSION = '5.3.1' @@ -287,31 +294,33 @@ export def prepare-awk [] { let gawk_installed = is-installed gawk if $awk_installed { - # AWK family version check for both awk and gawk - # awk: awk version 20250116 -> 20250116 - # gawk: GNU Awk 5.3.1, API 4.0, (GNU MPFR 4.2.1, GNU MP 6.3.0) -> 5.3.1 - let awk_version = awk --version | lines | first | split row , | first | split row ' ' | last - print $'Current awk version: ($awk_version)' - if (compare-ver $awk_version $MIN_AWK_VERSION) >= 0 { return 'awk' } + let awk_version = get-awk-ver awk + if (compare-ver $awk_version $MIN_AWK_VERSION) >= 0 { + print $'Current awk version: ($awk_version)' + return 'awk' + } } if $gawk_installed { - let gawk_version = gawk --version | lines | first | split row , | first | split row ' ' | last - print $'Current gawk version: ($gawk_version)' + let gawk_version = get-awk-ver gawk if (compare-ver $gawk_version $MIN_GAWK_VERSION) >= 0 { + print $'Current gawk version: ($gawk_version)' return 'gawk' } else if (windows?) and ($env.GITHUB_ACTIONS? == 'true') { - return (install-gawk-for-actions) + let awk_info = (install-gawk-for-actions) + print $'Current gawk version: ($awk_info.version)' + return $awk_info.awk_bin } } if (mac?) and (is-installed brew) { brew install gawk - print $'Current gawk version: (gawk --version | lines | first)' + print $'Current gawk version: (get-awk-ver gawk)' return 'gawk' } if (not $awk_installed) and (not $gawk_installed) { print $'(ansi r)Neither `awk` nor `gawk` is installed, please install the latest version of `gawk`.(ansi reset)' exit $ECODE.MISSING_BINARY } + print $'Current awk version: (get-awk-ver awk)' 'awk' } @@ -409,12 +418,13 @@ export def is-safe-git [cmd: string] { # applying include and exclude patterns on GitHub's Windows runners. def install-gawk-for-actions [] { # Install scoop using PowerShell - pwsh -c "Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')" - | complete | get stdout | print - # Add scoop to PATH and add main bucket - pwsh -c '$env:Path = "$env:USERPROFILE\scoop\shims;" + $env:Path; scoop update; scoop install gawk' - gawk --version | lines | first | print - 'gawk' + pwsh -c r#' + Invoke-Expression (New-Object System.Net.WebClient).DownloadString("https://get.scoop.sh") + $env:Path = "$env:USERPROFILE\scoop\shims;" + $env:Path; scoop update; scoop install gawk'# + | complete | get stdout | print + let awk_bin = $'($nu.home-path)/scoop/shims/gawk.exe' + let version = get-awk-ver $awk_bin + { awk_bin: $awk_bin, version: $version } } alias main = deepseek-review