This repo contains workflow templates and other org level config and files
QuIC repos should enable the Repolinter GitHub Action upon creation. This action runs the Repolinter tool, which lints open source repositories for common issues.
- Navigate to the new repo
- Click on Actions
- If you have existing actions in the repo, click "New workflow", else skip to next step
- Locate the "By Qualcomm Innovation Center" section and click "Configure" under "QuIC Organization Repolinter Workflow"
- Click "Commit changes...", select "Commit directly to the main branch" (or feel free to create a new branch and start a PR), ensure your QuIC email is selected under "Commit Email", and then click "Sign off and commit changes"
- This will create a GitHub Action config file in your repo under the path
.github/workflows/quic-organization-repolinter.yml - Adjust it as needed, e.g. the Repolinter action is configured to run on Push and Pull Requests into the main/master branch, but you may want to further adjust when it runs.
When the GitHub Action is run, it first checks your QuIC repo for a local repolint.json file at the root directory. If it doesn't find one it'll use the default QuIC Repolinter ruleset, which is located here https://github.com/quic/.github/blob/main/repolint.json
To customize the default QuIC Repolinter ruleset (e.g. to add some language specific file extensions for the license check), you can extend the default ruleset and override specific rules. In other cases you may have to copy the ruleset locally and edit as needed. See below for examples.
For example, if we wanted to exclude the copyright/license check for a directory e.g. /test-data from Repolinter, we can extend the ruleset as we are adding additional rules.
- Create the file
repolint.jsonat the root of your project - "Extend" the QuIC repolint.json file
{
"extends": "https://raw.githubusercontent.com/quic/.github/main/repolint.json",
"rules": {}
}- Copy the rule block you need to adjust from
https://raw.githubusercontent.com/quic/.github/main/repolint.json. E.g. in this case we want to exclude/test-datafrom the license header check. So let's copy the json blocksource-license-headers-existand paste it into therulessection of the localrepolint.jsonwe extended - Now lets add the
test-datadirectory to the list of patterns to skip/exclude from being checked
{
"extends": "https://raw.githubusercontent.com/quic/.github/main/repolint.json",
"rules": {
"source-license-headers-exist": {
"level": "error",
"rule": {
"type": "file-starts-with",
"options": {
"globsAll": [
"**/*.py",
"**/*.js",
"**/*.c",
"**/*.cc",
"**/*.cpp",
"**/*.h",
"**/*.ts",
"**/*.sh",
"**/*.rs",
"**/*.java",
"**/*.go",
"**/*.bbclass",
"**/*.S"
],
"skip-paths-matching": {
"patterns": [
"babel.config.js",
"build\/",
"jest.config.js",
"node_modules\/",
"types\/",
"uthash.h",
"test-data\/"
]
},
"lineCount": 60,
"patterns": [
"(Copyright|©).*Qualcomm Innovation Center, Inc|Copyright (\\(c\\)|©) (20(1[2-9]|2[0-2])(-|,|\\s)*)+ The Linux Foundation",
"SPDX-License-Identifier|Redistribution and use in source and binary forms, with or without"
],
"flags": "i"
}
}
}
}
}For example, to only check .c files in a specific directory (e.g., /src) in the copyright/license check using Repolinter, we cannot extend and must instead replace the ruleset and edit it as necessary.
- Copy the default QuIC repolint.json ruleset to the root of your project
- Find the relevant rule to edit. In this example, we are going to edit the
source-license-headers-existrule and replace theglobsAllproperty to only.cfiles in the/srcdirectory.
[...]
"source-license-headers-exist": {
"level": "error",
"rule": {
"type": "file-starts-with",
"options": {
"globsAll": [
"src/**/*.c"
],
"skip-paths-matching": {
"patterns": []
},
"lineCount": 60,
"patterns": [
"(Copyright|©).*Qualcomm Innovation Center, Inc|Copyright (\\(c\\)|©) (20(1[2-9]|2[0-2])(-|,|\\s)*)+ The Linux Foundation",
"SPDX-License-Identifier|Redistribution and use in source and binary forms, with or without"
],
"flags": "i"
}
}
},
[...] - For more information on Repolinter rules and options, see Repolinter rules