diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d62941..409aa94 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -197,3 +197,171 @@ jobs: name: artifact-npm-binary-distributions path: npm-binary-distributions/*/*.tgz if-no-files-found: "error" + + test-linux: + runs-on: ubuntu-latest + needs: [node, npm-distributions] + strategy: + fail-fast: false + matrix: + node-version: [18, 20, 22] + steps: + - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + with: + node-version: ${{ matrix.node-version }} + - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: artifact-npm-binary-distributions + path: ./npm-binary-distributions + - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: artifact-pkg-node + path: ./node-pkg + - name: Create package.json + run: | + mkdir test + cd test + cat < package.json + { + "name": "test", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "lint": "supa-mdx-lint --version" + }, + "keywords": [], + "author": "", + "license": "ISC" + } + EOF + - name: Install test packages + working-directory: test + run: | + npm install ../npm-binary-distributions/linux-x64/*.tgz + npm install ../node-pkg/*.tgz + - name: Test lint script + working-directory: test + run: npm run lint + + test-macos: + runs-on: macos-latest + needs: [node, npm-distributions] + strategy: + fail-fast: false + matrix: + node-version: [18, 20, 22] + steps: + - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + with: + node-version: ${{ matrix.node-version }} + - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: artifact-npm-binary-distributions + path: ./npm-binary-distributions + - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: artifact-pkg-node + path: ./node-pkg + - name: Create package.json + run: | + mkdir test + cd test + cat < package.json + { + "name": "test", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "lint": "supa-mdx-lint --version" + }, + "keywords": [], + "author": "", + "license": "ISC" + } + EOF + - name: Install test packages + working-directory: test + run: | + npm install ../npm-binary-distributions/darwin/*.tgz + npm install ../node-pkg/*.tgz + - name: Test lint script + working-directory: test + run: npm run lint + + test-windows: + runs-on: windows-latest + needs: [node, npm-distributions] + strategy: + fail-fast: false + matrix: + node-version: [18, 20, 22] + steps: + - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + with: + node-version: ${{ matrix.node-version }} + - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: artifact-npm-binary-distributions + path: ./npm-binary-distributions + - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: artifact-pkg-node + path: ./node-pkg + - name: Create package.json + shell: pwsh + run: | + mkdir test + cd test + $json = @" + { + "name": "test", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "lint": "supa-mdx-lint --version" + }, + "keywords": [], + "author": "", + "license": "ISC" + } + "@ + $json | Out-File -FilePath package.json -Encoding utf8 + - name: Unpack binary tarball + shell: pwsh + run: | + $tarballPath = Get-ChildItem -Path npm-binary-distributions\win32-x64\*.tgz | Select-Object -First 1 + tar -xzf $tarballPath.FullName -C npm-binary-distributions\win32-x64 + Get-ChildItem -Path npm-binary-distributions\win32-x64\package + - name: Install binary + run: | + cd test + npm install ..\npm-binary-distributions\win32-x64\package + - name: Unpack node-pkg tarball + shell: pwsh + run: | + $tarballPath = Get-ChildItem -Path node-pkg\*.tgz | Select-Object -First 1 + tar -xzf $tarballPath.FullName -C node-pkg + Get-ChildItem -Path node-pkg\package + - name: Install main package + run: | + cd test + npm install ..\node-pkg\package + - name: Verify lint executable (debug) + shell: pwsh + run: | + cd test\node_modules\@supabase\supa-mdx-lint-win32-x64\bin + Get-Item supa-mdx-lint.exe | Format-List -Property * + cd ../../../.. + .\node_modules\@supabase\supa-mdx-lint-win32-x64\bin\supa-mdx-lint.exe --version + - name: Test lint script + working-directory: test + run: | + cat package.json + cat package-lock.json + ls -r node_modules + ls -r node_modules\@supabase\supa-mdx-lint-win32-x64 + npm exec -- supa-mdx-lint-windows --version + npm run lint diff --git a/npm-binary-distributions/win32-x64/package.json b/npm-binary-distributions/win32-x64/package.json index 8bdf718..de2ea01 100644 --- a/npm-binary-distributions/win32-x64/package.json +++ b/npm-binary-distributions/win32-x64/package.json @@ -1,6 +1,9 @@ { "name": "@supabase/supa-mdx-lint-win32-x64", "version": "0.1.6-pre", + "bin": { + "supa-mdx-lint-windows": "bin/supa-mdx-lint.exe" + }, "engines": { "node": ">=10" }, diff --git a/packages/supa-mdx-lint/package.json b/packages/supa-mdx-lint/package.json index 836ca4d..a23a885 100644 --- a/packages/supa-mdx-lint/package.json +++ b/packages/supa-mdx-lint/package.json @@ -2,6 +2,9 @@ "name": "@supabase/supa-mdx-lint", "version": "0.1.6-pre", "main": "src/index.js", + "bin": { + "supa-mdx-lint": "src/index.js" + }, "scripts": { "format": "prettier --write .", "format:check": "prettier --check .", diff --git a/packages/supa-mdx-lint/src/helper.js b/packages/supa-mdx-lint/src/helper.js index 06f0993..1d1464d 100644 --- a/packages/supa-mdx-lint/src/helper.js +++ b/packages/supa-mdx-lint/src/helper.js @@ -122,6 +122,7 @@ function getBinaryPath() { } const { packageName, subpath } = getDistributionForThisPlatform(); + console.log("Expected package location: %s/%s", packageName, subpath); if (packageName === undefined) { throwUnsupportedPlatformError(); @@ -131,6 +132,9 @@ function getBinaryPath() { try { compatibleBinaryPath = require.resolve(`${packageName}/${subpath}`); } catch { + console.log("[DEBUG] Try resolving without subpath"); + console.log(require.resolve(packageName)); + const otherInstalledDistribution = BINARY_DISTRIBUTIONS.find( ({ packageName, subpath }) => { try { diff --git a/packages/supa-mdx-lint/src/index.js b/packages/supa-mdx-lint/src/index.js index cfe630a..5b56243 100644 --- a/packages/supa-mdx-lint/src/index.js +++ b/packages/supa-mdx-lint/src/index.js @@ -1,3 +1,5 @@ +#!/usr/bin/env node + //@ ts-check "use strict";