name: Analyze crash logs

on:
  issue_comment:
    types: [created]
  issues:
    types: [opened, edited]

jobs:
  analyze_crashlog:
    name: Analyze crash log
    runs-on: ubuntu-20.04
    if: |
      (github.event_name == 'issue_comment' && (
        contains(github.event.comment.body, 'CRASH') ||
        contains(github.event.comment.body, 'WATCHDOG'))) ||
      (github.event_name == 'issues' && (
          contains(github.event.issue.body, 'CRASH') ||
          contains(github.event.issue.body, 'WATCHDOG')))
    permissions:
      issues: write

    steps:
      - name: Check out code from GitHub
        uses: actions/checkout@v3

      - name: Install tools
        run: |
          sudo apt-get install binutils-arm-none-eabi

      - name: Analyze crash log from issue body
        if: github.event_name == 'issues'
        env:
          ISSUE_ID: ${{ github.event.issue.number }}
          GH_TOKEN: ${{ github.token }}
        run: |
          gh api repos/${GITHUB_REPOSITORY}/issues/${ISSUE_ID}/comments --jq '.[-1].body' | grep Automatic && exit 0 # Comment only once
          gh api repos/${GITHUB_REPOSITORY}/issues/${ISSUE_ID} --jq '.body' > comment.txt
          echo -e 'Automatic analysis of the crash log:\n\n<pre>' > output.txt
          utils/analyze_crashlog.sh comment.txt | tee -a output.txt
          echo '</pre>' >> output.txt
          grep '^0x' output.txt && gh issue comment ${ISSUE_ID} --body-file output.txt

      - name: Analyze crash log from issue comment
        if: github.event_name == 'issue_comment'
        env:
          ISSUE_ID: ${{ github.event.issue.number }}
          GH_TOKEN: ${{ github.token }}
        run: |
          gh api repos/${GITHUB_REPOSITORY}/issues/${ISSUE_ID}/comments --jq '.[-1].body' > comment.txt
          echo -e 'Automatic analysis of the crash log:\n\n<pre>' > output.txt
          utils/analyze_crashlog.sh comment.txt | tee -a output.txt
          echo '</pre>' >> output.txt
          grep '^0x' output.txt && gh issue comment ${ISSUE_ID} --body-file output.txt
