name: Upload self-contained binaries on: release: types: [published] 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" platform: windows - os: ubuntu-20.04 pathsep: ":" asset_name: black_linux executable_mime: "application/x-executable" platform: unix - os: macos-latest pathsep: ":" asset_name: black_macos executable_mime: "application/x-mach-binary" platform: macos steps: - uses: actions/checkout@v2 - name: Set up latest Python uses: actions/setup-python@v2 with: python-version: "*" - name: Install dependencies run: | python -m pip install --upgrade pip wheel setuptools python -m pip install . python -m pip install pyinstaller - name: Build binary run: > python -m PyInstaller -F --name ${{ matrix.asset_name }} --add-data 'src/blib2to3${{ matrix.pathsep }}blib2to3' --hidden-import platformdirs.${{ matrix.platform }} src/black/__main__.py - 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 }}