all repos — hex @ bfd76010e13b6941ab153df32c4a6ed10fdb84d7

A tiny, minimalist, slightly-esoteric concatenative programming lannguage.

.github/workflows/release.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
name: Release

# Controls when the action will run.
on:
    # Allows you to run this workflow manually from the Actions tab
    workflow_dispatch:

jobs:
    release:
        name: "Build and upload artifacts"
        runs-on: ${{ matrix.os }}
        permissions:
            contents: write
        strategy:
            matrix:
                os:
                    - ubuntu-latest
                    - macos-latest
                    - windows-latest
                    - macos-13
        steps:
            # Cancel other actions of the same type that might be already running
            - name: "Cancel similar actions in progress"
              uses: styfle/cancel-workflow-action@0.9.1
              with:
                  access_token: ${{ github.token }}
                  
            # Detects OS and provide Nim-friendly OS identifiers
            - name: Detect current OS
              id: os
              run:  echo "os=${{matrix.os == 'ubuntu-latest' && 'linux' || matrix.os == 'macos-13' && 'macosx' || matrix.os == 'windows-latest' && 'windows'}}" >> $GITHUB_OUTPUT

            # Checks out the repository
            - uses: actions/checkout@v2

            # Install cosmocc
            - name: Install cosmocc
              run: |
                mkdir -p $HOME/cosmocc
                cd $HOME/cosmocc
                wget -q https://cosmo.zip/pub/cosmocc/cosmocc.zip
                unzip -q cosmocc.zip
                pwd
                ls -l
                echo $(pwd)/bin >> $GITHUB_PATH
              if: matrix.os == 'ubuntu-latest'

            # Setup emsdk
            - name: Setup emsdk
              uses: mymindstorm/setup-emsdk@v14
              if: matrix.os == 'ubuntu-latest'

            # Retrieve ID and Name of the current (draft) release
            - name: "Get current release"
              id: current-release
              uses: InsonusK/get-latest-release@v1.0.1
              with:
                myToken: ${{ github.token }}
                exclude_types: "release"
                view_top: 1
            
            # Build (non-Windows)
            - name: Build
              run: make
              if: matrix.os != 'windows-latest'

            # Package the resulting Linux/macOS binary
            - name: Create artifact (Linux, macOS)
              run: zip hex_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.os}}_x86_64.zip hex
              if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-13'

            # Generate APE binary
            - name: Generate APE binary
              run: |
                mv hex hex.native
                make ape
              if: matrix.os == 'ubuntu-latest'

            # Package the resulting APE binary
            - name: Create artifact (Linux - APE)
              run: zip hex_${{steps.current-release.outputs.tag_name}}_ape.zip hex
              if: matrix.os == 'ubuntu-latest'

            # Package the resulting macOs latest binary
            - name: Create artifact (Linux, macOS)
              run: zip hex_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.os}}_arm64.zip hex
              if:  matrix.os == 'macos-latest'

            # Generate WASM binary
            - name: Generate WASM binary
              run: make wasm
              if: matrix.os == 'ubuntu-latest'

            # Package the resulting WASM binary
            - name: Create artifact (Linux - WASM)
              run: zip hex_${{steps.current-release.outputs.tag_name}}_wasm.zip hex
              if: matrix.os == 'ubuntu-latest'
            
            # Build (Windows)
            - name: Build
              run: make
              shell: bash
              if: matrix.os == 'windows-latest'
              
            # Package the resulting Windows binary
            - name: Create artifact (Windows)
              run: Compress-Archive -Path hex.exe -DestinationPath hex_${{steps.current-release.outputs.tag_name}}_windows_x86_64.zip
              if: matrix.os == 'windows-latest'

            # Upload artifacts to current draft release
            - name: "Upload to current release"
              uses: xresloader/upload-to-github-release@v1
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              with:
                  file: "hex_v*.zip"
                  overwrite: true
                  tag_name: ${{steps.current-release.outputs.tag_name}}
                  release_id: ${{steps.current-release.outputs.id }}
                  verbose: true