name: ci on: push: branches: [main] pull_request: branches: [main] jobs: lint: runs-on: ubuntu-latest steps: - name: Check out code. uses: actions/checkout@v7 with: fetch-depth: 0 - name: 'Get Changed Files' id: 'files' run: | CHANGED_FILES=$(git diff --name-only "${BASE_SHA:-$BEFORE_SHA}...${HEAD_SHA:-$GITHUB_REF}") echo "::notice::Changed files: $CHANGED_FILES" { echo "added_modified<> "$GITHUB_OUTPUT" env: BASE_SHA: ${{ github.event.pull_request.base.sha }} HEAD_SHA: ${{ github.event.pull_request.head.sha }} BEFORE_SHA: "${{ github.event.before }}" - uses: 'actions/setup-go@v7' with: go-version: '1.20' - name: 'Install EditorConfig Lint' run: go install 'github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker@latest' - name: 'Check EditorConfig Lint' run: echo "$FILES" | xargs ~/go/bin/editorconfig-checker env: # NOTE: use env to pass the output in order to avoid possible injection attacks FILES: "${{ steps.files.outputs.added_modified }}" - name: checkstyle run: ./scripts/checkstyle.py - name: Shellcheck run: shellcheck --severity=error bin/* ./*.sh typo: runs-on: ubuntu-latest steps: - name: Check out code. uses: actions/checkout@v7 - name: Install codespell run: python3 -m pip install codespell==2.4 - name: spell check run: | git grep --cached -l '' . | \ grep -v -e 'History\.md' -e 'AUTHORS' -e 'man/.*\.1' -e 'man/.*\.html' | \ xargs codespell --ignore-words=.github/.ignore_words test-bats: name: 'Test with Bats' runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 with: submodules: recursive - name: Setup Bats id: setup-bats uses: bats-core/bats-action@4.0.0 with: bats-version: 'v1.8.1' - name: Test with Bats env: BATS_LIB_PATH: ${{ steps.setup-bats.outputs.lib-path }} TERM: xterm run: bats ./tests build: strategy: fail-fast: false matrix: platform: - ubuntu-latest - macos-latest runs-on: ${{ matrix.platform }} steps: - name: Check out code. uses: actions/checkout@v7 - name: Linux Install if: matrix.platform == 'ubuntu-latest' run: sudo apt-get install -y bsdmainutils - name: Script run: ./check_integrity.sh - name: Brew release if: matrix.platform == 'macos-latest' run: | mkdir ../release && git archive --format=tar.gz HEAD > ../release/git-extras-release.tar.gz cd ../release tar -xzf git-extras-release.tar.gz && make PREFIX=$(pwd) INSTALL_VIA=brew ./bin/git-extras update | grep "brew upgrade git-extras"