diff --git a/.github/workflows/SyntaxKit.yml b/.github/workflows/SyntaxKit.yml new file mode 100644 index 0000000..695b48b --- /dev/null +++ b/.github/workflows/SyntaxKit.yml @@ -0,0 +1,131 @@ +name: SyntaxKit +on: + push: + branches-ignore: + - '*WIP' +env: + PACKAGE_NAME: SyntaxKit +jobs: + build-ubuntu: + name: Build on Ubuntu + runs-on: ubuntu-latest + container: swiftlang/swift:nightly-${{ matrix.swift-version }}-${{ matrix.os }} + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + strategy: + matrix: + os: ["noble", "jammy"] + swift-version: ["6.1", "6.2"] + steps: + - uses: actions/checkout@v4 + - uses: brightdigit/swift-build@v1.1.1 + - uses: sersoft-gmbh/swift-coverage-action@v4 + id: coverage-files + with: + fail-on-empty-output: true + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + fail_ci_if_error: true + flags: swift-${{ matrix.swift-version }},ubuntu + verbose: true + token: ${{ secrets.CODECOV_TOKEN }} + files: ${{ join(fromJSON(steps.coverage-files.outputs.files), ',') }} + build-macos: + name: Build on macOS + env: + PACKAGE_NAME: SyntaxKit + runs-on: ${{ matrix.runs-on }} + if: "!contains(github.event.head_commit.message, 'ci skip')" + strategy: + fail-fast: false + matrix: + include: + # SPM Build Matrix + - runs-on: macos-15 + xcode: "/Applications/Xcode_16.4.app" + + # macOS Build Matrix + - type: macos + runs-on: macos-15 + xcode: "/Applications/Xcode_16.4.app" + + # iOS Build Matrix + - type: ios + runs-on: macos-15 + xcode: "/Applications/Xcode_16.4.app" + deviceName: "iPhone 16 Pro" + osVersion: "18.5" + + # watchOS Build Matrix + - type: watchos + runs-on: macos-15 + xcode: "/Applications/Xcode_16.4.app" + deviceName: "Apple Watch Ultra 2 (49mm)" + osVersion: "11.5" + + # tvOS Build Matrix + - type: tvos + runs-on: macos-15 + xcode: "/Applications/Xcode_16.4.app" + deviceName: "Apple TV" + osVersion: "18.5" + + # visionOS Build Matrix + - type: visionos + runs-on: macos-15 + xcode: "/Applications/Xcode_16.4.app" + deviceName: "Apple Vision Pro" + osVersion: "2.5" + + steps: + - uses: actions/checkout@v4 + + - name: Build and Test + uses: brightdigit/swift-build@v1.1.1 + with: + scheme: ${{ env.PACKAGE_NAME }}-Package + type: ${{ matrix.type }} + xcode: ${{ matrix.xcode }} + deviceName: ${{ matrix.deviceName }} + osVersion: ${{ matrix.osVersion }} + + # Common Coverage Steps + - name: Process Coverage + uses: sersoft-gmbh/swift-coverage-action@v4 + + - name: Upload Coverage + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + flags: ${{ matrix.type && format('{0}{1}', matrix.type, matrix.osVersion) || 'spm' }} + + # lint: + # name: Linting + # if: "!contains(github.event.head_commit.message, 'ci skip')" + # runs-on: ubuntu-latest + # needs: [build-ubuntu, build-macos] + # env: + # MINT_PATH: .mint/lib + # MINT_LINK_PATH: .mint/bin + # steps: + # - uses: actions/checkout@v4 + # - name: Cache mint + # id: cache-mint + # uses: actions/cache@v4 + # env: + # cache-name: cache + # with: + # path: | + # .mint + # Mint + # key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }} + # restore-keys: | + # ${{ runner.os }}-mint- + # - name: Install mint + # if: steps.cache-mint.outputs.cache-hit != 'true' + # run: | + # git clone https://github.com/yonaskolb/Mint.git + # cd Mint + # swift run mint install yonaskolb/mint + # - name: Lint + # run: ./Scripts/lint.sh diff --git a/Package.swift b/Package.swift index 2330040..1eac097 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.2 +// swift-tools-version: 6.1 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -6,7 +6,11 @@ import PackageDescription let package = Package( name: "SyntaxKit", platforms: [ - .macOS(.v13) + .macOS(.v13), + .iOS(.v13), + .watchOS(.v6), + .tvOS(.v13), + .visionOS(.v1) ], products: [ // Products define the executables and libraries a package produces, making them visible to other packages.