diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 38b43e44..bdc45207 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,13 +28,19 @@ jobs: matrix: include: - os: windows-latest - artifact-name: stylua-win64 + artifact-name: stylua-windows-x86_64 + artifact-alias: stylua-win64 cargo-target: x86_64-pc-windows-msvc - os: ubuntu-18.04 - artifact-name: stylua-linux + artifact-name: stylua-linux-x86_64 + artifact-alias: stylua-linux cargo-target: x86_64-unknown-linux-gnu + - os: ubuntu-18.04 + artifact-name: stylua-linux-aarch64 + cargo-target: aarch64-unknown-linux-gnu - os: macos-latest - artifact-name: stylua-macos + artifact-name: stylua-macos-x86_64 + artifact-alias: stylua-macos cargo-target: x86_64-apple-darwin - os: macos-latest artifact-name: stylua-macos-aarch64 @@ -89,6 +95,18 @@ jobs: asset_name: ${{ matrix.artifact-name }}.zip asset_content_type: application/zip + # TODO: Remove this after deprecation notice + - name: Upload Binary to Release aliases + if: ${{ matrix.artifact-alias != "" }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.upload_url }} + asset_path: release.zip + asset_name: ${{ matrix.artifact-alias }}.zip + asset_content_type: application/zip + release_cargo: name: Publish to cargo runs-on: ubuntu-latest diff --git a/pyproject.toml b/pyproject.toml index 84b256b2..d3fc578a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,12 +4,11 @@ build-backend = "pseudo_builder" [tool.release-gitter] extract-files = ["stylua"] -format = "stylua-{system}{arch}.zip" +format = "stylua-{system}-{arch}.zip" exec = "chmod +x stylua" [tool.release-gitter.map-arch] -x86_64 = "" -arm64 = "-aarch64" +arm64 = "aarch64" [tool.release-gitter.map-system] Darwin = "macos" -Windows = "win64" +Windows = "windows" Linux = "linux" diff --git a/stylua-npm-bin/binary.js b/stylua-npm-bin/binary.js index 365be0e7..69e225e1 100644 --- a/stylua-npm-bin/binary.js +++ b/stylua-npm-bin/binary.js @@ -14,12 +14,12 @@ const SUPPORTED_PLATFORMS = [ { platform: "win32", arch: "x64", - name: "stylua-win64", + name: "stylua-windows-x86_64", }, { platform: "darwin", arch: "x64", - name: "stylua-macos", + name: "stylua-macos-x86_64", }, { platform: "darwin", @@ -29,7 +29,12 @@ const SUPPORTED_PLATFORMS = [ { platform: "linux", arch: "x64", - name: "stylua-linux", + name: "stylua-linux-x86_64", + }, + { + platform: "linux", + arch: "arm64", + name: "stylua-linux-aarch64", }, ]; diff --git a/stylua-vscode/src/test/suite/util.test.ts b/stylua-vscode/src/test/suite/util.test.ts index 7f86454f..8eee5594 100644 --- a/stylua-vscode/src/test/suite/util.test.ts +++ b/stylua-vscode/src/test/suite/util.test.ts @@ -2,18 +2,23 @@ import * as assert from "assert"; import { getAssetFilenamePatternForPlatform } from "../../util"; suite("Utilities testing", () => { - test("asset filename pattern matches name with version", () => { - const pattern = getAssetFilenamePatternForPlatform("win32"); + test("asset filename pattern matches legacy name with version", () => { + const pattern = getAssetFilenamePatternForPlatform("win32", "x64"); assert(pattern.test("stylua-0.12.2-win64.zip")); }); - test("asset filename pattern matches name without version", () => { - const pattern = getAssetFilenamePatternForPlatform("win32"); + test("asset filename pattern matches legacy name without version", () => { + const pattern = getAssetFilenamePatternForPlatform("win32", "x64"); assert(pattern.test("stylua-win64.zip")); }); + test("asset filename pattern matches name with version and machine", () => { + const pattern = getAssetFilenamePatternForPlatform("win32", "x64"); + assert(pattern.test("stylua-windows-x86_64.zip")); + }); + test("asset filename pattern does not match for wrong platform", () => { - const pattern = getAssetFilenamePatternForPlatform("win32"); + const pattern = getAssetFilenamePatternForPlatform("win32", "x64"); assert.strictEqual(pattern.test("stylua-linux.zip"), false); }); }); diff --git a/stylua-vscode/src/util.ts b/stylua-vscode/src/util.ts index 97f79a9e..6b22fd44 100644 --- a/stylua-vscode/src/util.ts +++ b/stylua-vscode/src/util.ts @@ -16,22 +16,43 @@ export const getDownloadOutputFilename = () => { }; export const getAssetFilenamePatternForPlatform = ( - platform: NodeJS.Platform + platform: string, + machine: string ) => { + var platformPattern: string; switch (platform) { case "win32": - return /stylua(-[\d\w\-\.]+)?-win64.zip/; + platformPattern = "(windows|win64)"; + break; case "linux": - return /stylua(-[\d\w\-\.]+)?-linux.zip/; + platformPattern = "linux"; + break; case "darwin": - return /stylua(-[\d\w\-\.]+)?-macos.zip/; + platformPattern = "macos"; + break; default: - throw new Error("Platform not supported"); + throw new Error("platform not supported"); + } + + var archPattern: string; + switch (machine) { + case "arm64": + archPattern = "aarch64"; + break; + case "x64": + archPattern = "x86_64"; + break; + default: + archPattern = ""; } + + return new RegExp( + "stylua(-[\\dw\\-\\.]+)?-" + platformPattern + "(-" + archPattern + ")?.zip" + ); }; export const getAssetFilenamePattern = () => { - return getAssetFilenamePatternForPlatform(os.platform()); + return getAssetFilenamePatternForPlatform(os.platform(), process.arch); }; export const getDesiredVersion = (): string => {