Pack new version #57
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Pack new version | |
on: | |
workflow_dispatch: | |
jobs: | |
publish: | |
environment: Release | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Update the changelog.json | |
run: | | |
DaySuffix() { | |
case $(date +%-d) in | |
1|21|31) echo "st";; | |
2|22) echo "nd";; | |
3|23) echo "rd";; | |
*) echo "th";; | |
esac | |
} | |
sudo apt-get install jq | |
jqCommand="jq" | |
manifestPath="./extension/manifest.json" | |
changelogPath="./extension/changelog.json" | |
releaseBodyFile="./releaseBody.md" | |
tmpFile="tmp.tmp" | |
readmePath="README.md" | |
firstEntry="$("${jqCommand}" -j ".[0]" "${changelogPath}")" | |
version="$(echo "$firstEntry" | "${jqCommand}" -j "[ .version | to_entries[] | .value ] | join(\".\")")" | |
newVersionMajor="$(echo -n "\"${version}\"" | "${jqCommand}" -j "split(\".\")[0] | tonumber | .")" | |
newVersionMinor="$(echo -n "\"${version}\"" | "${jqCommand}" -j "split(\".\")[1] | tonumber | . + 1")" | |
newVersionBuild="0" | |
newVersionTitle="Beta" | |
echo "$firstEntry" | "${jqCommand}" -j " | |
.logs as \$clFirstEntryLogs | ( | |
\$clFirstEntryLogs | | |
if ((.features | length) > 0) then | |
(.features | | |
map(\"* \" + .message + \"\n\") | | |
. |= [\"### Features\n\"] + . | | |
. |= . + [\"\n\"] | | |
join(\"\")) | |
else (\"\") | |
end | |
), | |
( | |
\$clFirstEntryLogs | | |
if ((.fixes | length) > 0) then | |
(.fixes | | |
map(\"* \" + .message + \"\n\") | | |
. |= [\"### Fixes\n\"] + . | | |
. |= . + [\"\n\"] | | |
join(\"\")) | |
else (\"\") | |
end | |
), | |
( | |
\$clFirstEntryLogs | | |
if ((.changes | length) > 0) then | |
(.changes | | |
map(\"* \" + .message + \"\n\") | | |
. |= [\"### Changes\n\"] + . | | |
. |= . + [\"\n\"] | | |
join(\"\")) | |
else (\"\") | |
end | |
), | |
( | |
\$clFirstEntryLogs | | |
if ((.removed | length) > 0) then | |
(.removed | | |
map(\"* \" + .message + \"\n\") | | |
. |= [\"### Removed\n\"] + . | | |
. |= . + [\"\n\"] | | |
join(\"\")) | |
else (\"\") | |
end | |
) | |
" >> "$releaseBodyFile" | |
"${jqCommand}" -j ".[0].date |= \"$(date +"%Y/%m/%d")\"" "${changelogPath}" > "${tmpFile}" && mv "${tmpFile}" "${changelogPath}" | |
"${jqCommand}" -j '. as $all | $all[0].logs | delpaths([keys_unsorted[] | select(($all[0].logs[.] | length) == 0) | [.]]) | . as $new | $all | .[0].logs |= $new' "${changelogPath}" > "${tmpFile}" && mv "${tmpFile}" "${changelogPath}" | |
cd extension && zip -q -r "../torntools_${version}.zip" . && cd .. | |
[ ! -d "versions" ] && mkdir versions | |
mv "torntools_${version}.zip" ./versions/ | |
"${jqCommand}" -r --indent 0 " | |
. |= | |
[{ | |
\"version\": { \"major\": ${newVersionMajor}, \"minor\": ${newVersionMinor}, \"build\": ${newVersionBuild} }, | |
\"title\": \"${newVersionTitle}\", | |
\"date\": false, | |
\"logs\": { | |
\"features\": [], | |
\"fixes\": [], | |
\"changes\": [], | |
\"removed\": [] | |
} | |
}] + | |
." "${changelogPath}" > "${tmpFile}" && mv "${tmpFile}" "${changelogPath}" | |
"${jqCommand}" -r --indent 0 ".[\"version\"] |= \"${newVersionMajor}.${newVersionMinor}.${newVersionBuild}\"" "${manifestPath}" > "${tmpFile}" && mv "${tmpFile}" "${manifestPath}" | |
ghReleaseDateMarkdown="[![GitHub Release Date](https://img.shields.io/static/v1?label=RELEASE%20DATE\\\\&message=$(date "+%B, %-d$(DaySuffix). %Y" | "${jqCommand}" --raw-input --raw-output '. | @uri')\\\\&color=%23acea00\\\\&style=for-the-badge)](https://github.com/Mephiles/torntools_extension/releases/latest)<!---A pointer for bash-->" | |
awk "/.*A pointer for bash.*/ {sub(/.*/, \"${ghReleaseDateMarkdown}\")} {print}" "${readmePath}" > "${tmpFile}" && mv "${tmpFile}" "${readmePath}" | |
export version | |
echo "version=$version" >> "$GITHUB_ENV" | |
- name: Format with prettier | |
uses: creyD/prettier_action@v4.3 | |
with: | |
prettier_options: --config .prettierrc --write . --list-different | |
commit_options: --dry-run | |
push_options: --dry-run | |
- name: Create Firefox .xpi | |
id: web-ext-build | |
uses: kewisch/action-web-ext@v1.0 | |
with: | |
cmd: build | |
source: extension | |
filename: "{name}-{version}.xpi" | |
- name: Sign Firefox .xpi | |
uses: kewisch/action-web-ext@v1 | |
with: | |
cmd: sign | |
source: ${{ steps.web-ext-build.outputs.target }} | |
channel: unlisted | |
apiKey: ${{ secrets.FIREFOX_JWT_ISSUER }} | |
apiSecret: ${{ secrets.FIREFOX_JWT_SECRET }} | |
- name: Release | |
uses: ncipollo/release-action@v1 | |
with: | |
artifacts: versions/torntools_${{ env.version }}.zip | |
name: "Release: v${{ env.version }}" | |
tag: "${{ env.version }}" | |
bodyFile: "./releaseBody.md" | |
token: ${{ secrets.GH_TOKEN }} | |
- name: Delete temporary files | |
run: | | |
rm -f ./releaseBody.md | |
rm -rf versions | |
- name: Add & Commit | |
uses: EndBug/add-and-commit@v9.1.4 | |
with: | |
message: "Pack v${{ env.version }}" |