Address review feedback on CI lint workflow
- Fix ((errors++)) causing early exit under set -e - Fix command injection in workflow by using env variable - Add strategy/ directory to lint paths and AGENT_DIRS
This commit is contained in:
7
.github/workflows/lint-agents.yml
vendored
7
.github/workflows/lint-agents.yml
vendored
@@ -12,6 +12,7 @@ on:
|
|||||||
- 'support/**'
|
- 'support/**'
|
||||||
- 'spatial-computing/**'
|
- 'spatial-computing/**'
|
||||||
- 'specialized/**'
|
- 'specialized/**'
|
||||||
|
- 'strategy/**'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
@@ -28,7 +29,7 @@ jobs:
|
|||||||
FILES=$(git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- \
|
FILES=$(git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- \
|
||||||
'design/*.md' 'engineering/*.md' 'marketing/*.md' 'product/*.md' \
|
'design/*.md' 'engineering/*.md' 'marketing/*.md' 'product/*.md' \
|
||||||
'project-management/*.md' 'testing/*.md' 'support/*.md' \
|
'project-management/*.md' 'testing/*.md' 'support/*.md' \
|
||||||
'spatial-computing/*.md' 'specialized/*.md')
|
'spatial-computing/*.md' 'specialized/*.md' 'strategy/*.md')
|
||||||
echo "files=$FILES" >> "$GITHUB_OUTPUT"
|
echo "files=$FILES" >> "$GITHUB_OUTPUT"
|
||||||
if [ -z "$FILES" ]; then
|
if [ -z "$FILES" ]; then
|
||||||
echo "No agent files changed."
|
echo "No agent files changed."
|
||||||
@@ -39,6 +40,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Run agent linter
|
- name: Run agent linter
|
||||||
if: steps.changed.outputs.files != ''
|
if: steps.changed.outputs.files != ''
|
||||||
|
env:
|
||||||
|
CHANGED_FILES: ${{ steps.changed.outputs.files }}
|
||||||
run: |
|
run: |
|
||||||
chmod +x scripts/lint-agents.sh
|
chmod +x scripts/lint-agents.sh
|
||||||
./scripts/lint-agents.sh ${{ steps.changed.outputs.files }}
|
./scripts/lint-agents.sh $CHANGED_FILES
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ AGENT_DIRS=(
|
|||||||
support
|
support
|
||||||
spatial-computing
|
spatial-computing
|
||||||
specialized
|
specialized
|
||||||
|
strategy
|
||||||
)
|
)
|
||||||
|
|
||||||
REQUIRED_FRONTMATTER=("name" "description" "color")
|
REQUIRED_FRONTMATTER=("name" "description" "color")
|
||||||
@@ -36,7 +37,7 @@ lint_file() {
|
|||||||
first_line=$(head -1 "$file")
|
first_line=$(head -1 "$file")
|
||||||
if [[ "$first_line" != "---" ]]; then
|
if [[ "$first_line" != "---" ]]; then
|
||||||
echo "ERROR $file: missing frontmatter opening ---"
|
echo "ERROR $file: missing frontmatter opening ---"
|
||||||
((errors++))
|
errors=$((errors + 1))
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ lint_file() {
|
|||||||
|
|
||||||
if [[ -z "$frontmatter" ]]; then
|
if [[ -z "$frontmatter" ]]; then
|
||||||
echo "ERROR $file: empty or malformed frontmatter"
|
echo "ERROR $file: empty or malformed frontmatter"
|
||||||
((errors++))
|
errors=$((errors + 1))
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ lint_file() {
|
|||||||
for field in "${REQUIRED_FRONTMATTER[@]}"; do
|
for field in "${REQUIRED_FRONTMATTER[@]}"; do
|
||||||
if ! echo "$frontmatter" | grep -qE "^${field}:"; then
|
if ! echo "$frontmatter" | grep -qE "^${field}:"; then
|
||||||
echo "ERROR $file: missing frontmatter field '${field}'"
|
echo "ERROR $file: missing frontmatter field '${field}'"
|
||||||
((errors++))
|
errors=$((errors + 1))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -65,14 +66,14 @@ lint_file() {
|
|||||||
for section in "${RECOMMENDED_SECTIONS[@]}"; do
|
for section in "${RECOMMENDED_SECTIONS[@]}"; do
|
||||||
if ! echo "$body" | grep -qi "$section"; then
|
if ! echo "$body" | grep -qi "$section"; then
|
||||||
echo "WARN $file: missing recommended section '${section}'"
|
echo "WARN $file: missing recommended section '${section}'"
|
||||||
((warnings++))
|
warnings=$((warnings + 1))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# 4. Check file has meaningful content
|
# 4. Check file has meaningful content
|
||||||
if [[ $(echo "$body" | wc -w) -lt 50 ]]; then
|
if [[ $(echo "$body" | wc -w) -lt 50 ]]; then
|
||||||
echo "WARN $file: body seems very short (< 50 words)"
|
echo "WARN $file: body seems very short (< 50 words)"
|
||||||
((warnings++))
|
warnings=$((warnings + 1))
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user