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 # Something something old releases being hostile and damaging, boo hoo dkp. Maybe don't make extremely breaking changes. container: devkitpro/devkitarm:20241104 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