@@ -18,23 +18,25 @@ concurrency:
18
18
cancel-in-progress : true
19
19
20
20
jobs :
21
- crate_metadata :
21
+ meta :
22
22
name : Extract crate metadata
23
23
runs-on : ubuntu-latest
24
24
steps :
25
25
- uses : actions/checkout@v4
26
26
- name : Extract crate information
27
- id : crate_metadata
27
+ id : meta
28
28
run : |
29
29
cargo metadata --no-deps --format-version 1 | jq -r '"name=" + .packages[0].name' | tee -a $GITHUB_OUTPUT
30
30
cargo metadata --no-deps --format-version 1 | jq -r '"version=" + .packages[0].version' | tee -a $GITHUB_OUTPUT
31
+ echo "tag=${GITHUB_REF#refs/tags/}" | tee -a $GITHUB_OUTPUT
31
32
outputs :
32
- name : ${{ steps.crate_metadata.outputs.name }}
33
- version : ${{ steps.crate_metadata.outputs.version }}
33
+ name : ${{ steps.meta.outputs.name }}
34
+ version : ${{ steps.meta.outputs.version }}
35
+ tag : ${{ steps.meta.outputs.tag }}
34
36
35
37
build :
36
38
name : Build (${{ matrix.job.short_target }})
37
- needs : [crate_metadata ]
39
+ needs : [meta ]
38
40
strategy :
39
41
fail-fast : false
40
42
max-parallel : 3
@@ -77,12 +79,16 @@ jobs:
77
79
run : |
78
80
PACKAGE_DIR="target/package"
79
81
mkdir -p "$PACKAGE_DIR"
80
- PACKAGE_NAME="display_switch-v${{ needs.crate_metadata .outputs.version }}-${{ matrix.job.short_target }}.zip"
82
+ PACKAGE_NAME="display_switch-v${{ needs.meta .outputs.version }}-${{ matrix.job.short_target }}.zip"
81
83
PACKAGE_FILE="$PACKAGE_DIR/$PACKAGE_NAME"
82
84
shopt -s extglob # To match the filename below (without any debug symbols)
83
85
zip -j $PACKAGE_FILE target/release/display_switch?(.exe) README.md LICENSE
84
86
echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_OUTPUT
85
87
echo "PACKAGE_FILE=$PACKAGE_FILE" >> $GITHUB_OUTPUT
88
+ if [[ ${{ matrix.job.os }} == 'macos-latest' ]]; then
89
+ echo "HOMEBREW_PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_OUTPUT
90
+ echo "HOMEBREW_PACKAGE_HASH=$(sha256 -q $PACKAGE_FILE)" >> $GITHUB_OUTPUT
91
+ fi
86
92
87
93
- uses : actions/upload-artifact@v4
88
94
with :
@@ -94,6 +100,29 @@ jobs:
94
100
uses : softprops/action-gh-release@v2
95
101
if : startsWith(github.ref, 'refs/tags/')
96
102
with :
97
- draft : true # temporary, for testing
103
+ prerelease : ${{ contains(github.ref, 'prerelease') }}
98
104
generate_release_notes : true
99
- files : ${{ steps.package.outputs.PACKAGE_FILE }}
105
+ files : ${{ steps.package.outputs.PACKAGE_FILE }}
106
+
107
+ outputs :
108
+ packages : ${{ steps.package.outputs.PACKAGE_NAME }}
109
+ homebrew_package_name : ${{ steps.package.outputs.HOMEBREW_PACKAGE_NAME }}
110
+ homebrew_package_hash : ${{ steps.package.outputs.HOMEBREW_PACKAGE_HASH }}
111
+
112
+ update_homebrew :
113
+ name : Update Homebrew formula
114
+ needs : [meta, build]
115
+ runs-on : ubuntu-latest
116
+ steps :
117
+ - uses : actions/checkout@v4
118
+ - name : Update Homebrew formula
119
+ uses : mislav/bump-homebrew-formula-action@v3
120
+ if : startsWith(github.ref, 'refs/tags/')
121
+ with :
122
+ formula-name : display_switch
123
+ tag-name : ${{ needs.meta.outputs.tag }}
124
+ homebrew-tap : haimgel/tools
125
+ download-url : https://github.com/haimgel/display-switch/releases/download/${{ needs.meta.outputs.tag }}/${{ needs.build.outputs.homebrew_package_name }}
126
+ download-sha256 : ${{ needs.build.outputs.homebrew_package_hash }}
127
+ env :
128
+ COMMITTER_TOKEN : ${{ secrets.RELEASER_GITHUB_TOKEN }}
0 commit comments