Skip to content

Commit 0399c1f

Browse files
committed
add badger
1 parent 6b09bf1 commit 0399c1f

File tree

4 files changed

+122
-59
lines changed

4 files changed

+122
-59
lines changed

.github/workflows/badges-notify.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Weekly Badge Monitor
2+
3+
on:
4+
schedule:
5+
# Run every Monday at 10:00 AM Amsterdam time (UTC+1/+2)
6+
# Using 8:00 UTC to account for Amsterdam time (adjusts for DST)
7+
- cron: '0 8 * * 1'
8+
workflow_dispatch: # Allow manual triggering
9+
10+
jobs:
11+
monitor-badges:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout repository
16+
uses: actions/checkout@v4
17+
18+
- name: Make script executable
19+
run: chmod +x .scripts/badger.sh
20+
21+
- name: Run badge finder script
22+
id: find_badges
23+
run: |
24+
# Run the script and capture output
25+
SCRIPT_OUTPUT=$(./scripts/badger.sh)
26+
27+
# Escape the output for JSON and store in GitHub output
28+
# Replace newlines with \n and escape quotes
29+
ESCAPED_OUTPUT=$(echo "$SCRIPT_OUTPUT" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
30+
31+
echo "badges_output<<EOF" >> $GITHUB_OUTPUT
32+
echo "$ESCAPED_OUTPUT" >> $GITHUB_OUTPUT
33+
echo "EOF" >> $GITHUB_OUTPUT
34+
35+
- name: Send webhook
36+
env:
37+
WEBHOOK_URL: ${{ secrets.DOCS_BADGER }}
38+
BADGES_OUTPUT: ${{ steps.find_badges.outputs.badges_output }}
39+
run: |
40+
# Create JSON payload
41+
JSON_PAYLOAD=$(cat <<EOF
42+
{
43+
"badges_list": "$BADGES_OUTPUT"
44+
}
45+
EOF
46+
)
47+
48+
# Send webhook
49+
curl -X POST \
50+
-H "Content-Type: application/json" \
51+
-d "$JSON_PAYLOAD" \
52+
"$WEBHOOK_URL"
53+
54+
- name: Log completion
55+
run: |
56+
echo "Badge monitoring completed successfully"
57+
echo "Webhook sent to configured endpoint"

scripts/badger.sh

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/bin/bash
2+
3+
# This script is used to generate a list of feature badges in use in the docs
4+
# It runs as part of a weekly github action and the result is sent as a notification
5+
# to the #docs channel in Slack.
6+
7+
# Default to 'docs' directory if no argument provided
8+
DOCS_DIR="${1:-docs}"
9+
10+
# Check if directory exists
11+
if [ ! -d "$DOCS_DIR" ]; then
12+
echo "Error: Directory '$DOCS_DIR' does not exist"
13+
exit 1
14+
fi
15+
16+
# Components to search for
17+
components=(
18+
"BetaBadge"
19+
"ExperimentalBadge"
20+
"PrivatePreviewBadge"
21+
"CloudNotSupportedBadge"
22+
"CloudAvailableBadge"
23+
)
24+
25+
# Function to extract slug from a file's frontmatter
26+
extract_slug_from_file() {
27+
local filepath="$1"
28+
local slug=""
29+
30+
# Look for "slug: some/path/slug" in the file
31+
slug=$(grep -m 1 "^slug:" "$filepath" 2>/dev/null | sed 's/^slug:[[:space:]]*//' | tr -d '"' | tr -d "'")
32+
33+
# If no slug found, return the filepath as fallback
34+
if [ -z "$slug" ]; then
35+
slug="[no slug] $filepath"
36+
fi
37+
38+
echo "$slug"
39+
}
40+
41+
# Search for each component and collect all slugs
42+
for component in "${components[@]}"; do
43+
echo "$component:"
44+
45+
# Get unique files containing the component
46+
files=$(grep -rl --include="*.md" --include="*.mdx" --include="*.jsx" --include="*.tsx" \
47+
-E "<$component[[:space:]/>]|</$component>" "$DOCS_DIR" 2>/dev/null | sort -u)
48+
49+
if [ -z "$files" ]; then
50+
echo " (none)"
51+
else
52+
while IFS= read -r file; do
53+
if [ -n "$file" ]; then
54+
slug=$(extract_slug_from_file "$file")
55+
if [[ "$slug" == \[no\ slug\]* ]]; then
56+
echo " $slug"
57+
else
58+
echo " https://clickhouse.com/docs$slug"
59+
fi
60+
fi
61+
done <<< "$files"
62+
fi
63+
64+
echo
65+
done

src/theme/badges/ClickHouseSupported/index.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/theme/badges/ClickHouseSupported/styles.module.css

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)