From 310738c82d895505655711f567fc64c71e66862b Mon Sep 17 00:00:00 2001 From: Simon Malm Date: Thu, 14 Aug 2025 14:56:58 +0200 Subject: [PATCH] fix: nu --- .github/actions/setup-shell-tools/action.yml | 50 ++++++++++++++++++ .github/workflows/ci.yml | 54 ++++++-------------- 2 files changed, 65 insertions(+), 39 deletions(-) create mode 100644 .github/actions/setup-shell-tools/action.yml diff --git a/.github/actions/setup-shell-tools/action.yml b/.github/actions/setup-shell-tools/action.yml new file mode 100644 index 0000000..f161d19 --- /dev/null +++ b/.github/actions/setup-shell-tools/action.yml @@ -0,0 +1,50 @@ +name: 'Setup Shell Tools' +description: 'Sets up Nushell and Just for cross-platform development' +branding: + icon: 'terminal' + color: 'purple' + +outputs: + nu-version: + description: 'Installed Nushell version' + value: ${{ steps.nu-info.outputs.version }} + just-version: + description: 'Installed Just version' + value: ${{ steps.just-info.outputs.version }} + +runs: + using: 'composite' + steps: + - name: Setup Nushell + run: | + # Install Nushell following official docs + curl -s https://api.github.com/repos/nushell/nushell/releases/latest \ + | grep "browser_download_url.*x86_64-unknown-linux-gnu" \ + | cut -d : -f 2,3 \ + | tr -d \" \ + | wget -qi - + tar xf nu-*-x86_64-unknown-linux-gnu.tar.gz + sudo mkdir -p /usr/local/bin + sudo cp nu-*/nu /usr/local/bin/ + sudo chmod +x /usr/local/bin/nu + echo "/usr/local/bin" >> $GITHUB_PATH + # Add to current PATH for immediate use + export PATH="/usr/local/bin:$PATH" + # Verify installation and set as default shell + nu --version + echo "SHELL=/usr/local/bin/nu" >> $GITHUB_ENV + shell: bash + + - name: Get Nushell version + id: nu-info + run: echo "version=$(/usr/local/bin/nu --version | head -n1)" >> $GITHUB_OUTPUT + shell: bash + + - name: Setup Just + uses: extractions/setup-just@v2 + shell: bash + + - name: Get Just version + id: just-info + run: echo "version=$(just --version)" >> $GITHUB_OUTPUT + shell: bash \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8399271..a93fe62 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,30 +17,23 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Setup Shell Tools + uses: ./.github/actions/setup-shell-tools + - name: Setup Bun uses: oven-sh/setup-bun@v2 with: bun-version: '1.2.20' - - name: Setup Nushell - run: | - # Install Nushell following official docs - curl -s https://api.github.com/repos/nushell/nushell/releases/latest \ - | grep "browser_download_url.*x86_64-unknown-linux-gnu" \ - | cut -d : -f 2,3 \ - | tr -d \" \ - | wget -qi - - tar xf nu-*-x86_64-unknown-linux-gnu.tar.gz - sudo mkdir -p /usr/local/bin - sudo cp nu-*/nu /usr/local/bin/ - sudo chmod +x /usr/local/bin/nu - echo "/usr/local/bin" >> $GITHUB_PATH - # Verify installation and set as default shell - /usr/local/bin/nu --version - echo "SHELL=/usr/local/bin/nu" >> $GITHUB_ENV - - - name: Setup Just - uses: extractions/setup-just@v2 + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: | + ~/.bun/install/cache + node_modules + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} + restore-keys: | + ${{ runner.os }}-bun- - name: Install dependencies run: just install @@ -61,31 +54,14 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Setup Shell Tools + uses: ./.github/actions/setup-shell-tools + - name: Setup Bun uses: oven-sh/setup-bun@v2 with: bun-version: '1.2.20' - - name: Setup Nushell - run: | - # Install Nushell following official docs - curl -s https://api.github.com/repos/nushell/nushell/releases/latest \ - | grep "browser_download_url.*x86_64-unknown-linux-gnu" \ - | cut -d : -f 2,3 \ - | tr -d \" \ - | wget -qi - - tar xf nu-*-x86_64-unknown-linux-gnu.tar.gz - sudo mkdir -p /usr/local/bin - sudo cp nu-*/nu /usr/local/bin/ - sudo chmod +x /usr/local/bin/nu - echo "/usr/local/bin" >> $GITHUB_PATH - # Verify installation and set as default shell - /usr/local/bin/nu --version - echo "SHELL=/usr/local/bin/nu" >> $GITHUB_ENV - - - name: Setup Just - uses: extractions/setup-just@v2 - - name: Install dependencies run: just install