
Building executables without any testing is quite sketchy, let's at least verify they won't crash on startup and format Black's own codebase. Also replaced "binaries" with "executables" since it's clearer and won't be confused with mypyc. Finally, I added colorama so all Windows users can get colour.
64 lines
1.9 KiB
YAML
64 lines
1.9 KiB
YAML
name: Publish executables
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
|
|
permissions:
|
|
contents: write # actions/upload-release-asset needs this.
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-2019, ubuntu-20.04, macos-latest]
|
|
include:
|
|
- os: windows-2019
|
|
pathsep: ";"
|
|
asset_name: black_windows.exe
|
|
executable_mime: "application/vnd.microsoft.portable-executable"
|
|
- os: ubuntu-20.04
|
|
pathsep: ":"
|
|
asset_name: black_linux
|
|
executable_mime: "application/x-executable"
|
|
- os: macos-latest
|
|
pathsep: ":"
|
|
asset_name: black_macos
|
|
executable_mime: "application/x-mach-binary"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Set up latest Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "*"
|
|
|
|
- name: Install Black and PyInstaller
|
|
run: |
|
|
python -m pip install --upgrade pip wheel
|
|
python -m pip install .[colorama]
|
|
python -m pip install pyinstaller
|
|
|
|
- name: Build executable with PyInstaller
|
|
run: >
|
|
python -m PyInstaller -F --name ${{ matrix.asset_name }} --add-data
|
|
'src/blib2to3${{ matrix.pathsep }}blib2to3' src/black/__main__.py
|
|
|
|
- name: Quickly test executable
|
|
run: |
|
|
./dist/${{ matrix.asset_name }} --version
|
|
./dist/${{ matrix.asset_name }} src --verbose
|
|
|
|
- name: Upload binary as release asset
|
|
uses: actions/upload-release-asset@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: dist/${{ matrix.asset_name }}
|
|
asset_name: ${{ matrix.asset_name }}
|
|
asset_content_type: ${{ matrix.executable_mime }}
|