AutoRelease + Header Checker Upgrades (#236)

* decouple kernel check configs from fr/fr + checker sources from PR ref

* Combo of various small edits

* enable compatibility with git action + create autorelease action
diff --git a/.github/scripts/kernel_checker.py b/.github/scripts/kernel_checker.py
new file mode 100755
index 0000000..3d96d05
--- /dev/null
+++ b/.github/scripts/kernel_checker.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python3
+
+import os
+from common.header_checker import HeaderChecker
+
+#--------------------------------------------------------------------------------------------------
+#                                            CONFIG
+#--------------------------------------------------------------------------------------------------
+KERNEL_IGNORED_EXTENSIONS = [
+    '.yml',
+    '.css',
+    '.idx',
+    '.md',
+    '.url',
+    '.sty',
+    '.0-rc2',
+    '.s82',
+    '.js',
+    '.out',
+    '.pack',
+    '.2',
+    '.1-kernel-only',
+    '.0-kernel-only',
+    '.0-rc1',
+    '.readme',
+    '.tex',
+    '.png',
+    '.bat',
+    '.sh'
+]
+
+KERNEL_IGNORED_PATTERNS = [
+    r'.*\.git.*'
+]
+
+KERNEL_HEADER = [
+    '/*\n',
+    ' * FreeRTOS Kernel V10.4.2\n',
+    ' * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\n',
+    ' *\n',
+    ' * Permission is hereby granted, free of charge, to any person obtaining a copy of\n',
+    ' * this software and associated documentation files (the "Software"), to deal in\n',
+    ' * the Software without restriction, including without limitation the rights to\n',
+    ' * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n',
+    ' * the Software, and to permit persons to whom the Software is furnished to do so,\n',
+    ' * subject to the following conditions:\n',
+    ' *\n',
+    ' * The above copyright notice and this permission notice shall be included in all\n',
+    ' * copies or substantial portions of the Software.\n',
+    ' *\n',
+    ' * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n',
+    ' * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n',
+    ' * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n',
+    ' * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n',
+    ' * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n',
+    ' * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n',
+    ' *\n',
+    ' * https://www.FreeRTOS.org\n',
+    ' * https://github.com/FreeRTOS\n',
+    ' *\n',
+    ' */\n',
+]
+
+
+def main():
+    parser = HeaderChecker.configArgParser()
+    args   = parser.parse_args()
+
+    # Configure the checks then run
+    checker = HeaderChecker(KERNEL_HEADER)
+    checker.ignoreExtension(*KERNEL_IGNORED_EXTENSIONS)
+    checker.ignorePattern(*KERNEL_IGNORED_PATTERNS)
+    checker.ignoreFile(os.path.split(__file__)[-1])
+
+    return checker.processArgs(args)
+
+if __name__ == '__main__':
+    exit(main())
+
diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml
new file mode 100644
index 0000000..18712c4
--- /dev/null
+++ b/.github/workflows/auto-release.yml
@@ -0,0 +1,54 @@
+name: Kernel-Auto-Release
+
+on:
+  workflow_dispatch:
+    inputs:
+      commit_id:
+        description: 'Commit ID'
+        required: true
+        default: 'HEAD'
+      version_number:
+        description: 'Version Number (Ex. 10.4.0)'
+        required: true
+        default: '10.4.0'             
+
+jobs:
+  release-packager:
+    name: Release Packager
+    runs-on: ubuntu-latest
+    steps:
+      # Install python 3
+      - name: Tool Setup
+        uses: actions/setup-python@v2
+        with:
+          python-version: 3.8.5
+          architecture:   x64
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+      # Currently FreeRTOS/.github/scripts houses the release script. Download it for upcoming usage
+      - name: Checkout FreeRTOS Release Tools
+        uses: actions/checkout@v2
+        with:
+          repository: FreeRTOS/FreeRTOS
+          path: tools
+      
+      # Simpler git auth if we use checkout action and forward the repo to release script 
+      - name: Checkout FreeRTOS Kernel
+        uses: actions/checkout@v2
+        with: 
+          path: local_kernel
+          fetch-depth: 0
+
+      - name: Release
+        run: |
+          # Configure repo for push
+          git config --global user.name ${{ github.actor }}
+          git config --global user.email ${{ github.actor }}@users.noreply.github.com
+          
+          # Install deps and run
+          pip install -r ./tools/.github/scripts/release-requirements.txt
+          ./tools/.github/scripts/release.py FreeRTOS --kernel-repo-path=local_kernel --kernel-commit=${{ github.event.inputs.commit_id }} --new-kernel-version=${{ github.event.inputs.version_number }}
+          exit $?
+        env:
+            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/header-checks.yml b/.github/workflows/kernel-checks.yml
similarity index 72%
rename from .github/workflows/header-checks.yml
rename to .github/workflows/kernel-checks.yml
index 4d9546c..8c64487 100644
--- a/.github/workflows/header-checks.yml
+++ b/.github/workflows/kernel-checks.yml
@@ -1,10 +1,10 @@
-name: FreeRTOS-Header-Checker
+name: Kernel-Checker
 
 on: [pull_request]
 
 jobs:
-  header-checker:
-    name: File Header Checks
+  kernel-checker:
+    name: FreeRTOS Kernel Header Checks
     runs-on: ubuntu-latest
     steps:
       # Install python 3
@@ -16,7 +16,7 @@
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 
-      # Get latest checks from master
+      # There is shared code, hosted by FreeRTOS/FreeRTOS, with deps needed by header checker
       - name: Checkout FreeRTOS Tools
         uses: actions/checkout@v2
         with:
@@ -36,11 +36,12 @@
         uses: lots0logs/gh-action-get-changed-files@2.1.4
         with:
           token: ${{ secrets.GITHUB_TOKEN }}
-
+      
       # Run checks
       - name: Check File Headers
         run: |
+          mv tools/.github/scripts/common inspect/.github/scripts
           cd inspect
-          ../tools/.github/scripts/check-header.py --kernel --json ${HOME}/files.json
+          .github/scripts/kernel_checker.py --json ${HOME}/files_modified.json ${HOME}/files_added.json ${HOME}/files_renamed.json
           exit $?