diff --git a/.github/workflows/build-inputs.yml b/.github/workflows/build-inputs.yml index bce39d4..6ae0769 100644 --- a/.github/workflows/build-inputs.yml +++ b/.github/workflows/build-inputs.yml @@ -36,6 +36,10 @@ on: description: 'Kconfig' required: false default: 'default' + merge: + description: 'ZMK Merge' + required: false + default: 'default' jobs: process-inputs: runs-on: ubuntu-latest @@ -48,13 +52,14 @@ jobs: layers: ${{ steps.process-inputs.outputs.layers }} mapping: ${{ steps.process-inputs.outputs.mapping }} kconfig: ${{ steps.process-inputs.outputs.kconfig }} + merge: ${{ steps.process-inputs.outputs.merge }} steps: - name: Process inputs id: process-inputs run: | set-output() { - json=`echo "$2" | jq -cnR 'inputs | split("(,| )+";"")'` + json=`echo "$2" | jq -cnR 'inputs | split(",";"")'` echo "::set-output name=$1::$json" } set-output "board" "${{ github.event.inputs.board }}" @@ -65,6 +70,7 @@ jobs: set-output "layers" "${{ github.event.inputs.layers }}" set-output "mapping" "${{ github.event.inputs.mapping }}" set-output "kconfig" "${{ github.event.inputs.kconfig }}" + set-output "merge" "${{ github.event.inputs.merge }}" build: uses: manna-harbour/zmk-config/.github/workflows/main.yml@82f608118a663f0cb02a3cfa4330e21d58b52a4f needs: process-inputs @@ -77,3 +83,4 @@ jobs: layers: ${{ needs.process-inputs.outputs.layers }} mapping: ${{ needs.process-inputs.outputs.mapping }} kconfig: ${{ needs.process-inputs.outputs.kconfig }} + merge: ${{ needs.process-inputs.outputs.merge }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ddbc262..7f9cdb4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,6 +29,10 @@ on: kconfig: type: string default: '["default"]' + merge: + type: string + default: '["default"]' + jobs: main: runs-on: ubuntu-latest @@ -45,6 +49,7 @@ jobs: layers: ${{ fromJSON(inputs.layers) }} mapping: ${{ fromJSON(inputs.mapping) }} kconfig: ${{ fromJSON(inputs.kconfig) }} + merge: ${{ fromJSON(inputs.merge) }} steps: - name: Checkout uses: actions/checkout@v2 @@ -95,6 +100,11 @@ jobs: artifact_build_name="$artifact_build_name kconfig_"`echo "${{ matrix.kconfig }}" | md5sum | cut -d ' ' -f 1` fi + if [ -n "${{ matrix.merge }}" -a "${{ matrix.merge }}" != 'default' ] + then + artifact_build_name="$artifact_build_name merge_"`echo "${{ matrix.merge }}" | md5sum | cut -d ' ' -f 1` + fi + outboard_dir=".github/workflows/outboards" if [ -n "$shield" ] then @@ -140,10 +150,9 @@ jobs: run: | cp ${{ steps.variables.outputs.outboard_chekout_dir }}/${{ env.outboard_manifest }} config/west.yml cat config/west.yml - - name: Cache west modules + - name: Cache + if: true uses: actions/cache@v2 - env: - cache-name: zephyr with: path: | bootloader/ @@ -151,17 +160,35 @@ jobs: tools/ zephyr/ zmk/ - key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('config/west.yml') }} - restore-keys: ${{ runner.os }}-${{ env.cache-name }} + key: ${{ runner.os }} ${{ hashFiles('config/west.yml') }} ${{ matrix.merge }} timeout-minutes: 2 continue-on-error: true - - name: Initialize workspace (west init) + - name: Initialize west workspace run: west init -l config - - name: Update modules (west update) + - name: Update west projects run: west update - - name: Export Zephyr CMake package (west zephyr-export) + - name: Merge branches and update + if: ${{ matrix.merge != '' && matrix.merge != 'default' }} + run: | + cd zmk + git config user.name "${GITHUB_ACTOR}" + git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" + for merge in ${{ matrix.merge }} + do + user=`echo "$merge" | cut -f 1 -d '/'` + repo=`echo "$merge" | cut -f 2 -d '/'` + branch=`echo "$merge" | cut -f 3- -d '/'` + remote="$user-$repo" + git remote add "$remote" "https://github.com/$user/$repo.git" + git fetch "$remote" "$branch" + git merge "$remote/$branch" + git remote remove "$remote" + git status + done + west update + - name: Export Zephyr CMake package run: west zephyr-export - - name: Build (west build) + - name: Build run: west build -s zmk/app -b ${{ matrix.board }} -- ${{ steps.variables.outputs.shield-arg }} -DZMK_CONFIG="${GITHUB_WORKSPACE}/config" - name: Show dts.pre.tmp if: ${{ failure() }} diff --git a/readme.org b/readme.org index 8e41be2..501b950 100644 --- a/readme.org +++ b/readme.org @@ -59,9 +59,11 @@ The ~shield~ option specifies the ZMK shield. The ~alphas~, ~nav~, ~clipboard~, and ~layers~ options correspond to the [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layout]] options. The ~mapping~ option corresponds to the alternative [[#mapping][mapping]] options. Alternative layout and mapping options are given in the documentation in the form ~MIRYOKU_OPTION=VALUE~. To use here, convert to the form specified above. Use ~default~ to represent the default value. Values for these five options are case-insensitive. +See the Test All workflow files for all supported values for each option. + The ~kconfig~ option can be used to for [[#kconfig-configuration][Kconfig configuration]]. Join multiple lines with ~\n~. -See the Test All workflow files for all supported values for each option. +The ~merge~ option can be used to merge branches into ZMK at build time. Branches are specified as ~//~. To merge multiple branches, separate with space. **** Build Inputs @@ -78,6 +80,8 @@ The ~Miryoku Alphas~, ~Miryoku Nav~, ~Miryoku Clipboard~, and ~Miryoku Layers~ o The ~Kconfig~ option can be used to for [[#kconfig-configuration][Kconfig configuration]]. Join multiple lines with ~\n~. +The ~ZMK Merge~ option can be used to merge branches into ZMK at build time. Branches are specified as ~//~. To merge multiple branches, separate with space. + ** Supported Keyboards