Skip to content

Commit

Permalink
Merge pull request #616 from nasa/integration-candidate
Browse files Browse the repository at this point in the history
IC: Caelum-rc4+dev29
  • Loading branch information
dzbaker authored Nov 17, 2022
2 parents 30102b5 + fcf5044 commit 1df262a
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 3 deletions.
5 changes: 3 additions & 2 deletions .github/codeql/jpl-misra.qls
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
- cpp/jsf/av-rule-168
# MISRA 6-2-2
- cpp/jsf/av-rule-202
# MISRA Rule 9-5-1
- cpp/jsf/av-rule-153
# JPL Rules
- /cpp/jpl-c/*/
# Exclude queries with too many results
Expand All @@ -28,3 +26,6 @@
# JPL 24
- cpp/jpl-c/multiple-stmts-per-line
- cpp/jpl-c/multiple-var-decls-per-line
# Excluded since cFS use unions judiciously
# MISRA Rule 9-5-1
- cpp/jsf/av-rule-153
69 changes: 69 additions & 0 deletions .github/scripts/create_ccb_agenda.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import subprocess
import json
import sys
import time
import os

# extract pull request data from GitHub
repos = ['cFS', 'cFE', 'osal', 'psp', 'sch_lab', 'ci_lab', 'to_lab', 'sample_app', 'sample_lib', 'elf2cfetbl', 'tblcrctool','cFS-GroundSystem', 'CF', 'CS', 'DS','FM', 'HK', 'HS', 'LC', 'MD', 'MM', 'SC']

for repo in repos:
subprocess.Popen('gh pr list --repo nasa/' + str(repo) + ' --search "draft:false" --json number,author,title,url,additions,deletions,labels | jq -c ' + '\'reduce range(0, length) as $index (.; (.[$index].author=.[$index].author.login | .[$index].number=(.[$index].number|"\'' + str(repo) + '\' PR #\(.)") )) | .[]\' ' + '>> temp.json', shell=True)

time.sleep(5)
subprocess.Popen('jq -s . temp.json > prs.json', shell=True)
time.sleep(5)

# load a list of pull requests as python dictionaries
with open ('prs.json') as prs_file:
prs = json.load(prs_file)

PrData = dict() # {author: [pr1, pr2, pr3, ...]}
AuthorPrChanges = dict() # {author: #TotalChanges}

for pr in prs:
ignore = False
for label in pr['labels']:
if label['name'] == 'CCB:Ignore' or label['name'] == 'CCB:Approved':
ignore = True
break
if ignore == False:
if pr['author'] not in PrData:
PrData[pr['author']] = [pr]
AuthorPrChanges[pr['author']] = pr['additions'] + pr['deletions']
else:
PrData[pr['author']].append(pr)
AuthorPrChanges[pr['author']] += pr['additions'] + pr['deletions']

# no prs to write, exit program
if len(PrData) == 0:
print("Failed to find relevant Pull Requests for the agenda. Exiting...\n")
sys.exit()

# re-order dict according to sum(additions, deletions) of each pr for each author
AuthorPrChanges = {k: v for k, v in sorted(AuthorPrChanges.items(), key=lambda item: item[1])}

# write to markdown
CCBfilename = "CCBAgenda.md"
with open(CCBfilename, 'w') as f:
f.write("## Items for Discussion\n\n")
for author in AuthorPrChanges.keys():
f.write("### @" + author + "\n\n")
for pr_auth in PrData[author]:
if (author == pr_auth['author']):
f.write("[" + pr_auth['number'] + "](" + pr_auth['url'].replace("pull", "issues") + ") " + pr_auth['title'] + "\n\n")

# close files
f.close()
prs_file.close()
time.sleep(5)
try:
os.remove("prs.json")
os.remove("temp.json")
except OSError:
pass

time.sleep(5)

if (os.stat(CCBfilename).st_size != 0):
print("CCB markdown has been successfully created")
32 changes: 32 additions & 0 deletions .github/workflows/cfs-wiki.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Update wiki

on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Force bash to apply pipefail option so pipeline failures aren't masked
defaults:
run:
shell: bash

jobs:
build:
runs-on: ubuntu-latest

steps:
# Checks out a copy of your repository on the ubuntu-latest machine
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: true

- name: create CCB agenda
run: python3 .github/scripts/create_ccb_agenda.py
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Archive CCB agenda artifact
uses: actions/upload-artifact@v3
with:
name: ccb-agenda
path: ./CCBAgenda.md

0 comments on commit 1df262a

Please sign in to comment.