generated from LizardByte/template-base
-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a7ba048
commit 48f1ffe
Showing
23 changed files
with
1,579 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
--- | ||
# This file is centrally managed in https://github.com/<organization>/.github/ | ||
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in | ||
# the above-mentioned repo. | ||
|
||
# Generated from CLion C/C++ Code Style settings | ||
BasedOnStyle: LLVM | ||
AccessModifierOffset: -2 | ||
AlignAfterOpenBracket: DontAlign | ||
AlignConsecutiveAssignments: false | ||
AlignOperands: Align | ||
AllowAllArgumentsOnNextLine: false | ||
AllowAllConstructorInitializersOnNextLine: false | ||
AllowAllParametersOfDeclarationOnNextLine: false | ||
AllowShortBlocksOnASingleLine: Always | ||
AllowShortCaseLabelsOnASingleLine: false | ||
AllowShortFunctionsOnASingleLine: All | ||
AllowShortIfStatementsOnASingleLine: WithoutElse | ||
AllowShortLambdasOnASingleLine: All | ||
AllowShortLoopsOnASingleLine: true | ||
AlignTrailingComments: false | ||
AlwaysBreakAfterReturnType: All | ||
AlwaysBreakTemplateDeclarations: MultiLine | ||
BreakBeforeBraces: Custom | ||
BraceWrapping: | ||
AfterCaseLabel: false | ||
AfterClass: false | ||
AfterControlStatement: Never | ||
AfterEnum: false | ||
AfterFunction: false | ||
AfterNamespace: false | ||
AfterObjCDeclaration: false | ||
AfterUnion: false | ||
BeforeCatch: true | ||
BeforeElse: true | ||
IndentBraces: false | ||
SplitEmptyFunction: false | ||
SplitEmptyRecord: true | ||
BreakBeforeBinaryOperators: None | ||
BreakBeforeTernaryOperators: false | ||
BreakConstructorInitializers: AfterColon | ||
BreakInheritanceList: AfterColon | ||
ColumnLimit: 0 | ||
CompactNamespaces: false | ||
ContinuationIndentWidth: 2 | ||
IndentCaseLabels: true | ||
IndentPPDirectives: BeforeHash | ||
IndentWidth: 2 | ||
KeepEmptyLinesAtTheStartOfBlocks: false | ||
MaxEmptyLinesToKeep: 1 | ||
NamespaceIndentation: All | ||
ObjCSpaceAfterProperty: true | ||
ObjCSpaceBeforeProtocolList: true | ||
PointerAlignment: Right | ||
ReflowComments: true | ||
SpaceAfterCStyleCast: true | ||
SpaceAfterLogicalNot: false | ||
SpaceAfterTemplateKeyword: true | ||
SpaceBeforeAssignmentOperators: true | ||
SpaceBeforeCpp11BracedList: true | ||
SpaceBeforeCtorInitializerColon: false | ||
SpaceBeforeInheritanceColon: false | ||
SpaceBeforeParens: ControlStatements | ||
SpaceBeforeRangeBasedForLoopColon: true | ||
SpaceInEmptyParentheses: false | ||
SpacesBeforeTrailingComments: 2 | ||
SpacesInAngles: Never | ||
SpacesInCStyleCastParentheses: false | ||
SpacesInContainerLiterals: false | ||
SpacesInParentheses: false | ||
SpacesInSquareBrackets: false | ||
TabWidth: 2 | ||
Cpp11BracedListStyle: false | ||
UseTab: Never |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
[flake8] | ||
filename = | ||
*.py, | ||
*.pys | ||
max-line-length = 120 | ||
extend-exclude = | ||
venv/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
--- | ||
name: CI | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- master | ||
types: | ||
- opened | ||
- synchronize | ||
- reopened | ||
push: | ||
branches: | ||
- master | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
build_win: | ||
name: Windows | ||
runs-on: windows-2019 | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Prepare tests | ||
id: prepare-tests | ||
run: | | ||
# function to download and extract a zip file | ||
function DownloadAndExtract { | ||
param ( | ||
[string]$Uri, | ||
[string]$OutFile | ||
) | ||
$maxRetries = 5 | ||
$retryCount = 0 | ||
$success = $false | ||
while (-not $success -and $retryCount -lt $maxRetries) { | ||
$retryCount++ | ||
Write-Host "Downloading $Uri to $OutFile, attempt $retryCount of $maxRetries" | ||
try { | ||
Invoke-WebRequest -Uri $Uri -OutFile $OutFile | ||
$success = $true | ||
} catch { | ||
Write-Host "Attempt $retryCount of $maxRetries failed with error: $($_.Exception.Message). Retrying..." | ||
Start-Sleep -Seconds 5 | ||
} | ||
} | ||
if (-not $success) { | ||
Write-Host "Failed to download the file after $maxRetries attempts." | ||
exit 1 | ||
} | ||
# use .NET to get the base name of the file | ||
$baseName = (Get-Item $OutFile).BaseName | ||
# Extract the zip file | ||
Expand-Archive -Path $OutFile -DestinationPath $baseName | ||
} | ||
# virtual display driver | ||
DownloadAndExtract ` | ||
-Uri "https://www.amyuni.com/downloads/usbmmidd_v2.zip" ` | ||
-OutFile "usbmmidd_v2.zip" | ||
# install | ||
Set-Location -Path usbmmidd_v2/usbmmidd_v2 | ||
./deviceinstaller64 install usbmmidd.inf usbmmidd | ||
# create up to 4 virtual displays | ||
for ($i = 1; $i -le 4; $i++) { | ||
./deviceinstaller64 enableidd 1 | ||
} | ||
- name: Setup Dependencies Windows | ||
uses: msys2/setup-msys2@v2 | ||
with: | ||
update: true | ||
install: >- | ||
base-devel | ||
make | ||
mingw-w64-x86_64-binutils | ||
mingw-w64-x86_64-cmake | ||
mingw-w64-x86_64-toolchain | ||
- name: Setup python | ||
id: setup-python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.11' | ||
|
||
- name: Python Path | ||
id: python-path | ||
shell: msys2 {0} | ||
run: | | ||
# replace backslashes with double backslashes | ||
python_path=$(echo "${{ steps.setup-python.outputs.python-path }}" | sed 's/\\/\\\\/g') | ||
# step output | ||
echo "python-path=${python_path}" | ||
echo "python-path=${python_path}" >> $GITHUB_OUTPUT | ||
- name: Build Windows | ||
shell: msys2 {0} | ||
run: | | ||
mkdir build | ||
cd build | ||
cmake \ | ||
-G "MinGW Makefiles" \ | ||
.. | ||
mingw32-make -j$(nproc) | ||
- name: Run tests | ||
id: test | ||
shell: msys2 {0} | ||
working-directory: build/tests | ||
run: | | ||
./test_libdisplaydevice.exe --gtest_color=yes | ||
- name: Generate gcov report | ||
# any except canceled or skipped | ||
if: always() && (steps.test.outcome == 'success' || steps.test.outcome == 'failure') | ||
id: test_report | ||
shell: msys2 {0} | ||
working-directory: build | ||
run: | | ||
${{ steps.python-path.outputs.python-path }} -m pip install gcovr | ||
${{ steps.python-path.outputs.python-path }} -m gcovr -r .. \ | ||
--exclude ../tests/ \ | ||
--exclude ../third-party/ \ | ||
--xml-pretty \ | ||
-o coverage.xml | ||
- name: Upload coverage | ||
# any except canceled or skipped | ||
if: always() && (steps.test_report.outcome == 'success') | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
fail_ci_if_error: true | ||
files: ./build/coverage.xml | ||
flags: ${{ runner.os }} | ||
token: ${{ secrets.CODECOV_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
--- | ||
# This action is centrally managed in https://github.com/<organization>/.github/ | ||
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in | ||
# the above-mentioned repo. | ||
|
||
# Lint c++ source files and cmake files. | ||
|
||
name: C++ Lint | ||
|
||
on: | ||
pull_request: | ||
branches: [master, nightly] | ||
types: [opened, synchronize, reopened] | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
clang-format: | ||
name: Clang Format Lint | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Find cpp files | ||
id: find_files | ||
run: | | ||
# find files | ||
found_files=$(find . -type f -iname "*.cpp" -o -iname "*.h" -o -iname "*.m" -o -iname "*.mm") | ||
ignore_files=$(find . -type f -iname ".clang-format-ignore") | ||
# Loop through each C++ file | ||
for file in $found_files; do | ||
for ignore_file in $ignore_files; do | ||
ignore_directory=$(dirname "$ignore_file") | ||
# if directory of ignore_file is beginning of file | ||
if [[ "$file" == "$ignore_directory"* ]]; then | ||
echo "ignoring file: ${file}" | ||
found_files="${found_files//${file}/}" | ||
break 1 | ||
fi | ||
done | ||
done | ||
# remove empty lines | ||
found_files=$(echo "$found_files" | sed '/^\s*$/d') | ||
echo "found cpp files: ${found_files}" | ||
# do not quote to keep this as a single line | ||
echo found_files=${found_files} >> $GITHUB_OUTPUT | ||
- name: Clang format lint | ||
if: ${{ steps.find_files.outputs.found_files }} | ||
uses: DoozyX/[email protected] | ||
with: | ||
source: ${{ steps.find_files.outputs.found_files }} | ||
extensions: 'cpp,h,m,mm' | ||
clangFormatVersion: 16 | ||
style: file | ||
inplace: false | ||
|
||
- name: Upload Artifacts | ||
if: failure() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: clang-format-fixes | ||
path: ${{ steps.find_files.outputs.found_files }} | ||
|
||
cmake-lint: | ||
name: CMake Lint | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.11' | ||
|
||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip setuptools cmakelang | ||
- name: Find cmake files | ||
id: find_files | ||
run: | | ||
# find files | ||
found_files=$(find . -type f -iname "CMakeLists.txt" -o -iname "*.cmake") | ||
ignore_files=$(find . -type f -iname ".cmake-lint-ignore") | ||
# Loop through each C++ file | ||
for file in $found_files; do | ||
for ignore_file in $ignore_files; do | ||
ignore_directory=$(dirname "$ignore_file") | ||
# if directory of ignore_file is beginning of file | ||
if [[ "$file" == "$ignore_directory"* ]]; then | ||
echo "ignoring file: ${file}" | ||
found_files="${found_files//${file}/}" | ||
break 1 | ||
fi | ||
done | ||
done | ||
# remove empty lines | ||
found_files=$(echo "$found_files" | sed '/^\s*$/d') | ||
echo "found cmake files: ${found_files}" | ||
# do not quote to keep this as a single line | ||
echo found_files=${found_files} >> $GITHUB_OUTPUT | ||
- name: Test with cmake-lint | ||
run: | | ||
cmake-lint --line-width 120 --tab-size 4 ${{ steps.find_files.outputs.found_files }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
--- | ||
# This action is centrally managed in https://github.com/<organization>/.github/ | ||
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in | ||
# the above-mentioned repo. | ||
|
||
# Lint python files with flake8. | ||
|
||
name: flake8 | ||
|
||
on: | ||
pull_request: | ||
branches: [master, nightly] | ||
types: [opened, synchronize, reopened] | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
flake8: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v5 # https://github.com/actions/setup-python | ||
with: | ||
python-version: '3.10' | ||
|
||
- name: Install dependencies | ||
run: | | ||
# pin flake8 before v6.0.0 due to removal of support for type comments (required for Python 2.7 type hints) | ||
python -m pip install --upgrade pip setuptools "flake8<6" | ||
- name: Test with flake8 | ||
run: | | ||
python -m flake8 --verbose |
Oops, something went wrong.