Skip to content

Commit 05e33b6

Browse files
Update update_central_repo.yml
1 parent 055b529 commit 05e33b6

1 file changed

Lines changed: 22 additions & 45 deletions

File tree

.github/workflows/update_central_repo.yml

Lines changed: 22 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ on:
44
release:
55
types: [published, edited]
66
workflow_dispatch:
7+
inputs:
8+
tag:
9+
description: 'Release Tag (e.g. v1.2.3)'
10+
required: true
711

812
jobs:
913
update-central-repo:
@@ -27,27 +31,31 @@ jobs:
2731
github-token: ${{ secrets.GITHUB_TOKEN }}
2832
script: |
2933
const fs = require('fs');
34+
const core = require('@actions/core');
35+
3036
const owner = context.repo.owner;
3137
const repo = context.repo.repo;
32-
const releaseTag = context.payload.release.tag_name;
38+
39+
let releaseTag = context.payload?.release?.tag_name || core.getInput('tag');
40+
3341
if (!releaseTag) {
34-
const latestRelease = await github.rest.repos.getLatestRelease({ owner, repo });
35-
releaseTag = latestRelease.data.tag_name;
36-
console.log(`No tag in payload. Using latest release tag: ${releaseTag}`);
42+
core.setFailed('No release tag found in event payload or input.');
43+
return;
3744
}
3845
39-
// Get the release by tag name
46+
console.log(`Using release tag: ${releaseTag}`);
47+
4048
const release = await github.rest.repos.getReleaseByTag({
4149
owner,
4250
repo,
4351
tag: releaseTag,
4452
});
4553
46-
// Filter assets that end with .bin
4754
const assets = release.data.assets.filter(asset => asset.name.endsWith('.bin'));
4855
4956
if (assets.length === 0) {
5057
core.setFailed('No .bin assets found in the release.');
58+
return;
5159
}
5260
5361
for (const asset of assets) {
@@ -60,7 +68,6 @@ jobs:
6068
},
6169
});
6270
63-
// Write the asset to a file
6471
fs.writeFileSync(asset.name, Buffer.from(download.data));
6572
console.log(`Downloaded ${asset.name}`);
6673
}
@@ -79,64 +86,41 @@ jobs:
7986
- name: Update variants.json and firmware_list.json
8087
env:
8188
FIRMWARE_NAME: ${{ github.event.repository.name }}
82-
RELEASE_VERSION: ${{ github.event.release.tag_name }}
89+
RELEASE_VERSION: ${{ github.event.release.tag_name || github.event.inputs.tag }}
8390
run: |
8491
cd Flash2MQTT/firmware/${FIRMWARE_NAME}
8592
ls *.bin > bin_files.txt
86-
# Initialize variables
8793
total=0
8894
count=0
89-
# Remove 'v' or 'V' prefix from version if present
9095
version="${RELEASE_VERSION#v}"
9196
version="${version#V}"
9297
echo "Firmware Name: $FIRMWARE_NAME"
9398
echo "Release Version: $version"
94-
# Determine total number of desired variants
99+
95100
echo "Determining total number of desired variants..."
96101
while read file; do
97102
echo "Processing file: $file"
98103
if [[ "$file" == *"_${version}.bin" ]]; then
99-
echo "File matches current release version."
100104
variant_part=$(echo "$file" | sed -E 's/^'"$FIRMWARE_NAME"'_//; s/_'"${version}"'\.bin$//')
101105
variant_name="${variant_part}"
102-
echo "Extracted variant_name: $variant_name"
103106
if [[ "$variant_name" == "d1_mini" || "$variant_name" == "esp01_1m" ]]; then
104-
echo "Variant $variant_name is desired. Incrementing total."
105107
total=$((total + 1))
106-
else
107-
echo "Variant $variant_name is not desired."
108108
fi
109-
else
110-
echo "File does not match current release version."
111109
fi
112110
done < bin_files.txt
113111
echo "Total desired variants: $total"
114112
115-
# Start building variants.json
116113
echo '[' > variants.json
117-
# Process files and create variants.json
118-
echo "Building variants.json..."
119114
while read file; do
120-
echo "Processing file: $file"
121115
if [[ "$file" == *"_${version}.bin" ]]; then
122-
echo "File matches current release version."
123116
variant_part=$(echo "$file" | sed -E 's/^'"$FIRMWARE_NAME"'_//; s/_'"${version}"'\.bin$//')
124117
variant_name="${variant_part}"
125-
echo "Extracted variant_name: $variant_name"
126118
case "$variant_name" in
127-
"d1_mini")
128-
display_name="D1 Mini"
129-
;;
130-
"esp01_1m")
131-
display_name="ESP-01"
132-
;;
133-
*)
134-
echo "Variant $variant_name is not desired. Skipping."
135-
continue
136-
;;
119+
"d1_mini") display_name="D1 Mini" ;;
120+
"esp01_1m") display_name="ESP-01" ;;
121+
*) continue ;;
137122
esac
138123
count=$((count + 1))
139-
echo "Adding variant $display_name to variants.json."
140124
echo ' {' >> variants.json
141125
echo ' "displayName": "'"$display_name"'",' >> variants.json
142126
echo ' "file": "https://all-solutions.github.io/Flash2MQTT/firmware/'"$FIRMWARE_NAME"'/'"$file"'"' >> variants.json
@@ -145,24 +129,15 @@ jobs:
145129
else
146130
echo ' }' >> variants.json
147131
fi
148-
else
149-
echo "File does not match current release version"
150132
fi
151133
done < bin_files.txt
152134
echo ']' >> variants.json
153135
rm bin_files.txt
154136
155-
# Update firmware_list.json
156137
cd ..
157-
# Install jq if not already installed
158-
if ! command -v jq &> /dev/null; then
159-
sudo apt-get update && sudo apt-get install -y jq
160-
fi
161-
# Initialize firmware_list.json if it doesn't exist
162138
if [ ! -f firmware_list.json ]; then
163139
echo '[]' > firmware_list.json
164140
fi
165-
# Update firmware_list.json
166141
tmpfile=$(mktemp)
167142
jq --arg name "$FIRMWARE_NAME" --arg version "$version" \
168143
'if any(.[]; .name == $name) then map(if .name == $name then .version = $version else . end) else . + [{"name": $name, "version": $version}] end' \
@@ -173,6 +148,8 @@ jobs:
173148
cd Flash2MQTT
174149
git add firmware/${{ github.event.repository.name }}
175150
git add firmware/firmware_list.json
176-
git commit -m "Update firmware for ${{ github.event.repository.name }} to version $version" || git commit --allow-empty -m "Force update for ${{ github.event.repository.name }} to version $version (no file changes)"
151+
git commit -m "Update firmware for ${{ github.event.repository.name }} to version $version" || \
152+
git commit --allow-empty -m "Force update for ${{ github.event.repository.name }} to version $version (no file changes)"
177153
git pull --rebase origin main
178154
git push https://all-solutions:${{ secrets.CENTRAL_REPO_TOKEN }}@github.com/all-solutions/Flash2MQTT.git HEAD:main
155+

0 commit comments

Comments
 (0)