mirror of
https://github.com/rvtr/TwlNandTool.git
synced 2025-10-31 06:01:08 -04:00
116 lines
4.1 KiB
YAML
116 lines
4.1 KiB
YAML
name: Build TwlNandTool
|
|
|
|
on:
|
|
push:
|
|
branches: ["*"]
|
|
paths-ignore:
|
|
- 'README.md'
|
|
pull_request:
|
|
branches: ["*"]
|
|
paths-ignore:
|
|
- 'README.md'
|
|
release:
|
|
types: [created]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
container: devkitpro/devkitarm
|
|
name: Build with Docker using devkitARM
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
- name: Setup environment
|
|
run: git config --global safe.directory '*'
|
|
- name: Build TwlNandTool
|
|
run: make
|
|
- name: Upload prod SRL
|
|
uses: actions/upload-artifact@v4.3.6
|
|
with:
|
|
path: "TwlNandTool.prod.srl"
|
|
name: TwlNandTool-Prod
|
|
|
|
devsign:
|
|
runs-on: windows-latest
|
|
needs: [build]
|
|
name: Devsign TwlNandTool and build a TAD
|
|
steps:
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: TwlNandTool-Prod
|
|
path: TwlNandTool-Prod
|
|
- name: Set up Python 3.12
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
- name: Clone ntool
|
|
uses: GuillaumeFalourd/clone-github-repo-action@v2.1
|
|
with:
|
|
depth: 1
|
|
owner: 'xprism1'
|
|
repository: 'ntool'
|
|
- name: Devsign TwlNandTool
|
|
run: |
|
|
cp TwlNandTool-Prod\TwlNandTool.prod.srl ntool
|
|
pip install pycryptodome
|
|
python ntool/ntool.py srl_retail2dev ntool/TwlNandTool.prod.srl --out ntool/TwlNandTool.dev.srl
|
|
- name: Make a devsigned TAD
|
|
run: |
|
|
curl https://cdn.randommeaninglesscharacters.com/tools/maketad/maketad.zip -o maketad.zip
|
|
7z e maketad.zip
|
|
cp ntool/TwlNandTool.dev.srl .
|
|
.\maketad-20090604.exe TwlNandTool.dev.srl -s -o TwlNandTool.dev.tad
|
|
- name: Upload devsigned TAD
|
|
uses: actions/upload-artifact@v4.3.6
|
|
with:
|
|
path: "TwlNandTool.dev.tad"
|
|
name: TwlNandTool-Tad
|
|
- name: Upload devsigned SRL
|
|
uses: actions/upload-artifact@v4.3.6
|
|
with:
|
|
path: "ntool/TwlNandTool.dev.srl"
|
|
name: TwlNandTool-Dev
|
|
|
|
# Only run this for non-PR jobs.
|
|
publish_build:
|
|
runs-on: ubuntu-latest
|
|
name: Upload to release
|
|
if: ${{ success() && startsWith(github.ref, 'refs/tags') }}
|
|
needs: [devsign]
|
|
steps:
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: TwlNandTool-Prod
|
|
path: TwlNandTool-Prod
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: TwlNandTool-Dev
|
|
path: TwlNandTool-Dev
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: TwlNandTool-Tad
|
|
path: TwlNandTool-Tad
|
|
- name: Publish Build
|
|
run: |
|
|
ID=$(jq --raw-output '.release.id' $GITHUB_EVENT_PATH)
|
|
AUTH_HEADER="Authorization: token ${{ secrets.TOKEN }}"
|
|
CONTENT_TYPE="Content-Type: application/7z-x-compressed"
|
|
for file in ${{ github.workspace }}/TwlNandTool-Prod/*; do
|
|
CONTENT_LENGTH="Content-Length: $(stat -c%s $file)"
|
|
UPLOAD_URL="https://uploads.github.com/repos/${{ github.repository }}/releases/$ID/assets?name=$(basename $file)"
|
|
curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL"
|
|
done
|
|
for file in ${{ github.workspace }}/TwlNandTool-Dev/*; do
|
|
CONTENT_LENGTH="Content-Length: $(stat -c%s $file)"
|
|
UPLOAD_URL="https://uploads.github.com/repos/${{ github.repository }}/releases/$ID/assets?name=$(basename $file)"
|
|
curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL"
|
|
done
|
|
for file in ${{ github.workspace }}/TwlNandTool-Tad/*; do
|
|
CONTENT_LENGTH="Content-Length: $(stat -c%s $file)"
|
|
UPLOAD_URL="https://uploads.github.com/repos/${{ github.repository }}/releases/$ID/assets?name=$(basename $file)"
|
|
curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL"
|
|
done |