Wally Token Patch II #6
Workflow file for this run
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: Build and Publish | |
on: | |
release: | |
types: [published] | |
jobs: | |
get_published_release: | |
runs-on: ubuntu-latest | |
outputs: | |
release_id: ${{ steps.release_info.outputs.release_id }} | |
upload_url: ${{ steps.release_info.outputs.upload_url }} | |
tag_name: ${{ steps.release_info.outputs.tag_name }} | |
repo_desc: ${{ steps.release_info.outputs.repo_desc }} | |
repo_name: ${{ steps.release_info.outputs.repo_name }} | |
repo_owner_name: ${{ steps.release_info.outputs.repo_owner_name }} | |
steps: | |
- name: Set Release Info | |
id: release_info | |
run: | | |
echo "::set-output name=tag_name::${{ github.event.release.tag_name }}" | |
echo "::set-output name=release_id::${{ github.event.release.id }}" | |
echo "::set-output name=upload_url::${{ github.event.release.upload_url }}" | |
# Extract the description from the release body and set it as an output variable | |
repo_desc=$(echo "${{ github.event.release.body }}" | head -n 1) | |
echo "::set-output name=repo_desc::$repo_desc" | |
# Set repo_name and repo_owner_name as output variables | |
repo_name=${{ github.repository }} | |
echo "::set-output name=repo_name::$repo_name" | |
repo_owner_name=${{ github.repository_owner }} | |
echo "::set-output name=repo_owner_name::$repo_owner_name" | |
build_and_publish_to_wally: | |
needs: get_published_release | |
runs-on: windows-latest | |
steps: | |
# Checkout your Git repo | |
- uses: actions/checkout@v2 | |
# Install foreman and all foreman tools | |
- uses: Roblox/setup-foreman@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
# Install wally packages | |
- name: update wally packages | |
run: wally-update patch | |
- name: install wally packages | |
run: wally install | |
- name: generate sourcemap | |
run: rojo sourcemap dev.project.json --output sourcemap.json | |
- name: export wally package types | |
run: wally-package-types --sourcemap sourcemap.json Packages | |
- name: Install testing files | |
shell: bash | |
run: | | |
# type definitions | |
if [ ! -d "types" ]; then | |
mkdir "types" | |
fi | |
curl -L "https://gist.github.com/nightcycle/50ca8f42147077b8f584b503030c8500/raw" > "types/testEZ.d.lua" | |
curl -L "https://gist.github.com/nightcycle/ae7ea3376337512772d1d2b314ef467b/raw" > "types/remodel.d.lua" | |
curl -L "https://raw.githubusercontent.com/JohnnyMorganz/luau-lsp/main/scripts/globalTypes.d.lua" > "types/globalTypes.d.lua" | |
# lint definitions | |
if [ ! -d "lints" ]; then | |
mkdir "lints" | |
fi | |
curl -L "https://gist.github.com/nightcycle/a57e04de443dfa89bd08c8eb001b03c6/raw" > "lints/lua51.yml" | |
curl -L "https://gist.github.com/nightcycle/93c4b9af5bbf4ed09f39aa908dffccd0/raw" > "lints/luau.yml" | |
curl -L "https://gist.github.com/nightcycle/e8c4a9a1d71cfd1a1fff59cad84156d1/raw" > "lints/roblox.yml" | |
# apply code styling | |
- name: style src scripts | |
run: stylua src | |
- name: style built scripts | |
shell: bash | |
run: | | |
if [ ! -d "out" ]; then | |
mkdir "out" | |
fi | |
stylua out | |
- name: generate sourcemap | |
run: rojo sourcemap dev.project.json --output sourcemap.json | |
# Test validity | |
- name: typecheck src files | |
run: luau-lsp analyze src --sourcemap=sourcemap.json --ignore="Packages/**" --ignore="**/Packages/**" --ignore="*.spec.luau" --ignore="out/**" --flag:LuauTypeInferIterationLimit=0 --flag:LuauCheckRecursionLimit=0 --flag:LuauTypeInferRecursionLimit=0 --flag:LuauTarjanChildLimit=0 --flag:LuauTypeInferTypePackLoopLimit=0 --flag:LuauVisitRecursionLimit=0 --definitions=types/globalTypes.d.lua --flag:LuauParseDeclareClassIndexer=true | |
- name: lint src files | |
run: selene src | |
- name: lint built files | |
run: selene out | |
- name: Update version and labels | |
shell: bash | |
run: | | |
repo_owner=${{needs.get_published_release.outputs.repo_owner_name}} | |
repo_name=${{needs.get_published_release.outputs.repo_name}} | |
repo_desc=${{needs.get_published_release.outputs.repo_desc}} | |
goal_version_str=${{needs.get_published_release.outputs.tag_name}} | |
# remove letters | |
goal_version_str=$(echo "$goal_version_str" | sed 's/[a-zA-Z]//g') | |
# read file | |
wally_toml_contents=$(<wally.toml) | |
# swap out version | |
goal_version_line="version = \"${goal_version_str}\"" | |
target_version_line=$(echo "$wally_toml_contents" | grep -F "version = ") | |
wally_toml_contents="${wally_toml_contents/${target_version_line}/${goal_version_line}}" | |
# swap out name | |
goal_name_line="name = \"${repo_owner}/${repo_name}\"" | |
target_name_line=$(echo "$wally_toml_contents" | grep -F "name = ") | |
wally_toml_contents="${wally_toml_contents/${target_name_line}/${goal_name_line}}" | |
# swap out description | |
goal_desc_line="description = \"${repo_desc}\"" | |
target_desc_line=$(echo "$wally_toml_contents" | grep -F "description = ") | |
wally_toml_contents="${wally_toml_contents/${target_desc_line}/${goal_desc_line}}" | |
# update file | |
echo "$wally_toml_contents" > "wally.toml" | |
# read json file | |
default_json_contents=$(<default.project.json) | |
target_json_name_line=$(echo "$default_json_contents" | grep -F " \"name\": \"package\",") | |
goal_json_name_line=" \"name\": \"${repo_name}\"," | |
default_json_contents="${default_json_contents/${target_json_name_line}/${goal_json_name_line}}" | |
# update file | |
echo "$default_json_contents" > "default.project.json" | |
- name: Build place file | |
run: | | |
rojo build dev.project.json -o Package.rbxl | |
- name: Upload Package.rbxl file to release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} | |
with: | |
upload_url: ${{ needs.get_published_release.outputs.upload_url }} | |
asset_path: Package.rbxl | |
asset_name: Package.rbxl | |
asset_content_type: application/octet-stream | |
- name: Publish release to Wally | |
shell: bash | |
run: | | |
wally login --token "${{secrets.WALLY_TOKEN}}" | |
wally publish |