feat: added LeetCode problem 1,2 #7793
Workflow file for this run
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
name: Awesome CI Workflow | |
on: [push, pull_request] | |
permissions: | |
contents: write | |
jobs: | |
MainSequence: | |
name: Code Formatter | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v4 | |
- name: requirements | |
run: | | |
sudo apt-get -qq update | |
sudo apt-get -qq install clang-tidy clang-format | |
# checks are passing with less errors when used with this version. | |
# The default installs v6.0 which did not work out well in my tests | |
- name: Setup Git Specs | |
run: | | |
git config --global user.name github-actions[bot] | |
git config --global user.email 'github-actions@users.noreply.github.com' | |
- name: Filename Formatter | |
run: | | |
wget https://raw.githubusercontent.com/TheAlgorithms/scripts/main/filename_formatter.sh | |
chmod +x filename_formatter.sh | |
./filename_formatter.sh . .cpp,.hpp | |
- name: Update DIRECTORY.md | |
run: | | |
wget https://raw.githubusercontent.com/TheAlgorithms/scripts/main/build_directory_md.py | |
python3 build_directory_md.py C-Plus-Plus . .cpp,.hpp,.h > DIRECTORY.md | |
git commit -m "updating DIRECTORY.md" DIRECTORY.md || true | |
- name: Get file changes | |
run: | | |
git branch | |
git diff --diff-filter=dr --name-only origin/master > git_diff.txt | |
echo "Files changed-- `cat git_diff.txt`" | |
- name: Configure for static lint checks | |
# compiling first gives clang-tidy access to all the header files and settings used to compile the programs. | |
# This will check for macros, if any, on linux and not for Windows. But the use of portability checks should | |
# be able to catch any errors for other platforms. | |
run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON | |
- name: Lint modified files | |
shell: python | |
run: | | |
import os | |
import subprocess | |
import sys | |
print("Python {}.{}.{}".format(*sys.version_info)) # Python 3.8 | |
with open("git_diff.txt") as in_file: | |
modified_files = sorted(in_file.read().splitlines()) | |
print("{} files were modified.".format(len(modified_files))) | |
cpp_exts = tuple(".c .c++ .cc .cpp .cu .cuh .cxx .h .h++ .hh .hpp .hxx".split()) | |
cpp_files = [file for file in modified_files if file.lower().endswith(cpp_exts)] | |
print(f"{len(cpp_files)} C++ files were modified.") | |
if not cpp_files: | |
sys.exit(0) | |
subprocess.run(["clang-tidy", "--fix", "-p=build", "--extra-arg=-std=c++11", *cpp_files, "--"], | |
check=True, text=True, stderr=subprocess.STDOUT) | |
subprocess.run(["clang-format", "-i", "-style=file", *cpp_files], | |
check=True, text=True, stderr=subprocess.STDOUT) | |
upper_files = [file for file in cpp_files if file != file.lower()] | |
if upper_files: | |
print(f"{len(upper_files)} files contain uppercase characters:") | |
print("\n".join(upper_files) + "\n") | |
space_files = [file for file in cpp_files if " " in file or "-" in file] | |
if space_files: | |
print(f"{len(space_files)} files contain space or dash characters:") | |
print("\n".join(space_files) + "\n") | |
nodir_files = [file for file in cpp_files if file.count(os.sep) != 1] | |
if nodir_files: | |
print(f"{len(nodir_files)} files are not in one and only one directory:") | |
print("\n".join(nodir_files) + "\n") | |
bad_files = len(upper_files + space_files + nodir_files) | |
if bad_files: | |
sys.exit(bad_files) | |
- name: Commit and push changes | |
run: | | |
git diff DIRECTORY.md | |
git commit -am "clang-format and clang-tidy fixes for ${GITHUB_SHA::8}" || true | |
git push origin HEAD:$GITHUB_REF || true | |
build: | |
name: Compile checks | |
runs-on: ${{ matrix.os }} | |
needs: [MainSequence] | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- run: cmake -B ./build -S . | |
- run: cmake --build build |