name: License Scan

on: [pull_request]


permissions:
  contents: read

jobs:
  licensescan:
    name: License Scan
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.9]

    steps:
      - name: Checkout target
        uses: actions/checkout@v2
        with:
          path: sdkbase
          ref: ${{ github.base_ref }}
      - name: Checkout this ref
        uses: actions/checkout@v2
        with:
          path: new-ref
          fetch-depth: 0
      - name: Get Diff
        run: git --git-dir ./new-ref/.git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.sha }} > refDiffFiles.txt
      - name: Get Target Files
        run: git --git-dir ./sdkbase/.git ls-files | grep -xf refDiffFiles.txt - > targetFiles.txt
      - name: Checkout scancode
        uses: actions/checkout@v2
        with:
          repository: nexB/scancode-toolkit
          path: scancode-toolkit
          fetch-depth: 1
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      # ScanCode
      - name: Self-configure scancode
        working-directory: ./scancode-toolkit
        run: ./scancode --help
      - name: Run Scan code on target
        run: cat targetFiles.txt | while read filename; do echo ./sdkbase/$filename; done | xargs ./scancode-toolkit/scancode -l -n 30 --json-pp - | grep short_name | sort | uniq >> old-licenses.txt
      - name: Run Scan code on pr ref
        run: cat refDiffFiles.txt | while read filename; do echo ./new-ref/$filename; done | xargs ./scancode-toolkit/scancode -l -n 30 --json-pp - | grep short_name | sort | uniq >> new-licenses.txt
      # compare
      - name: License test
        run: if ! cmp old-licenses.txt new-licenses.txt; then echo "Licenses differ! Failing."; exit -1; else echo "Licenses are the same. Success."; exit 0; fi
