Skip to content

Pack new version

Pack new version #54

Workflow file for this run

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: Upload an extension to Chrome Web Store
uses: cardinalby/webext-buildtools-chrome-webstore-upload-action@1.0.10
with:
zipFilePath: versions/torntools_${{ env.version }}.zip
extensionId: 'hjpaapdjcgbmeikfnahipphknonhlhib'
apiClientId: ${{ secrets.CHROME_CLIENT_ID }}
apiClientSecret: ${{ secrets.CHROME_SECRET }}
apiRefreshToken: ${{ secrets.CHROME_REFRESH_TOKEN }}
- name: Publish an extension on Chrome Web Store
uses: cardinalby/webext-buildtools-chrome-webstore-publish-action@1.0.7
id: publish_step
with:
extensionId: 'hjpaapdjcgbmeikfnahipphknonhlhib'
apiClientId: ${{ secrets.CHROME_CLIENT_ID }}
apiClientSecret: ${{ secrets.CHROME_SECRET }}
apiRefreshToken: ${{ secrets.CHROME_REFRESH_TOKEN }}
- name: Output of CWS Publish
run: |
echo "${{ steps.publish_step.outputs.publishStatus }}" >> "$GITHUB_OUTPUT"
- 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 }}"