Check TSV #290
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: Check TSV | |
# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows | |
on: | |
push: | |
paths: | |
- ".github/workflows/check-tsv.yml" | |
- "**.tsv" | |
pull_request: | |
paths: | |
- ".github/workflows/check-tsv.yml" | |
- "**.tsv" | |
schedule: | |
# Run every Tuesday at 8 AM UTC to catch breakage caused by changes to checkcsv | |
- cron: "0 8 * * TUE" | |
workflow_dispatch: | |
repository_dispatch: | |
jobs: | |
check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
# `actions/setup-go` only adds the `go install` target path to PATH when you specify a `go-version` input. | |
go-version: ">=1.x" | |
- name: Install checkcsv | |
run: go install github.com/Clever/csvlint/cmd/csvlint@latest | |
- name: Check TSV format | |
run: | | |
# No idea why this only works with quadruple escaping on the delimiter (specific to bash -c though). | |
find . \ | |
-path './.git' -prune -or \ | |
\( -name '*.tsv' -and -type f \) \ | |
-print0 | \ | |
xargs \ | |
--null \ | |
--max-lines=1 \ | |
bash \ | |
-c \ | |
' \ | |
echo "Checking: $0"; | |
csvlint \ | |
--delimiter='\\\\t' \ | |
"$0" \ | |
' | |
line-leading: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Check for leading whitespace on line | |
run: | | |
find . \ | |
-path './.git' -prune -or \ | |
\( -name '*.tsv' -and -type f \) \ | |
-exec \ | |
grep \ | |
--with-filename \ | |
--line-number \ | |
--binary-files=without-match \ | |
--regexp='^ ' \ | |
'{}' \ | |
\; \ | |
-exec \ | |
echo 'Leading whitespace found on line.' \; \ | |
-exec \ | |
false \ | |
'{}' + | |
cell-leading: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Check for leading space in cells | |
run: | | |
find . \ | |
-path './.git' -prune -or \ | |
\( -name '*.tsv' -and -type f \) \ | |
-exec \ | |
grep \ | |
--with-filename \ | |
--line-number \ | |
--binary-files=without-match \ | |
--regexp=$'\t ' \ | |
'{}' \ | |
\; \ | |
-exec \ | |
echo 'Leading whitespace found in cell.' \; \ | |
-exec \ | |
false \ | |
'{}' + | |
cell-trailing: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Check for trailing space in cells | |
run: | | |
find . \ | |
-path './.git' -prune -or \ | |
\( -name '*.tsv' -and -type f \) \ | |
-exec \ | |
grep \ | |
--with-filename \ | |
--line-number \ | |
--binary-files=without-match \ | |
--regexp=$' \t' \ | |
'{}' \ | |
\; \ | |
-exec \ | |
echo 'Trailing whitespace found in cell.' \; \ | |
-exec \ | |
false \ | |
'{}' + | |
line-trailing: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Check for trailing whitespace on line | |
run: | | |
find . \ | |
-path './.git' -prune -or \ | |
\( -name '*.tsv' -and -type f \) \ | |
-exec \ | |
grep \ | |
--with-filename \ | |
--line-number \ | |
--binary-files=without-match \ | |
--regexp=' $' \ | |
'{}' \ | |
\; \ | |
-exec \ | |
echo 'Trailing whitespace found on line.' \; \ | |
-exec \ | |
false \ | |
'{}' + |