-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathgenerate-readme.sh
More file actions
executable file
·132 lines (115 loc) · 4.86 KB
/
generate-readme.sh
File metadata and controls
executable file
·132 lines (115 loc) · 4.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env bash
# Generate README.md
# Usage: ./generate-readme.sh
# Initialize warning counters
MISSING_PLUGIN_NAME=0
MISSING_TYPE=0
MISSING_STATUS=0
MISSING_DESCRIPTION=0
MISSING_VERSION=0
TOTAL_FILES=0
# Get all directories in the current directory
DIRECTORIES=$(find . -mindepth 1 -maxdepth 1 -type d)
README_SNIPPETS_FILE="README-snippets.md"
# Sort directories by name
DIRECTORIES=$(echo "$DIRECTORIES" | tr ' ' '\n' | sort)
# Generate $README_SNIPPETS_FILE
echo "# Minor Snippets" > $README_SNIPPETS_FILE
for DIRECTORY in $DIRECTORIES; do
if [[ $DIRECTORY == "./.git" ]]; then
continue
fi
DIRECTORY_NAME=$(basename $DIRECTORY)
echo "## [$DIRECTORY_NAME]($DIRECTORY_NAME)" >> $README_SNIPPETS_FILE
echo "" >> $README_SNIPPETS_FILE
echo "| Title | Version | Type | Status | Description |" >> $README_SNIPPETS_FILE
echo "| ----- | ------- | ---- | ------ | ----------- |" >> $README_SNIPPETS_FILE
for FILE in $DIRECTORY/*.php; do
FILE_NAME=$(basename $FILE)
if [ "$FILE_NAME" != "README.md" ] && [ "$FILE_NAME" != "$README_SNIPPETS_FILE" ]; then
TOTAL_FILES=$((TOTAL_FILES + 1))
# -- Title
TITLE=$(grep -i "Plugin Name:" "$FILE" | tail -n 1 | sed 's/ \* Plugin Name: //')
if [[ -z "$TITLE" ]]; then
TITLE="$FILE_NAME"
echo "⚠️ Warning: No 'Plugin Name:' found in $FILE - using filename as title"
MISSING_PLUGIN_NAME=$((MISSING_PLUGIN_NAME + 1))
fi
# -- Version
VERSION=$(grep -i "Version:" "$FILE" | tail -n 1 | sed 's/ \* Version: //')
if [[ -z "$VERSION" ]]; then
VERSION="Unknown"
echo "⚠️ Warning: No 'Version:' found in $FILE"
MISSING_VERSION=$((MISSING_VERSION + 1))
fi
# -- Type
TYPE=$(grep -i "Type:" "$FILE" | tail -n 1 | sed 's/ \* Type: //')
if [[ -z "$TYPE" ]]; then
echo "⚠️ Warning: No 'Type:' found in $FILE"
MISSING_TYPE=$((MISSING_TYPE + 1))
fi
# -- Status
STATUS=$(grep -i "Status:" "$FILE" | tail -n 1 | sed 's/ \* Status: //')
if [[ -z $STATUS ]]; then
STATUS="Unknown"
echo "⚠️ Warning: No 'Status:' found in $FILE"
MISSING_STATUS=$((MISSING_STATUS + 1))
fi
# -- Set Status emoji
if [[ $STATUS == "Complete" ]]; then
STATUS=":white_check_mark:"
elif [[ $STATUS == "Broken" ]]; then
STATUS=":x:"
elif [[ $STATUS == "WIP" ]]; then
STATUS=":construction:"
else
STATUS=":question:"
fi
# -- Description
DESCRIPTION=$(grep " * Description" "$FILE" | tail -n 1 | sed 's/ \* Description: //')
if [[ -z "$DESCRIPTION" ]]; then
DESCRIPTION="No description"
echo "⚠️ Warning: No 'Description:' found in $FILE"
MISSING_DESCRIPTION=$((MISSING_DESCRIPTION + 1))
fi
# -- Set default values for plugins
if [[ -z $TYPE && -n $TITLE ]]; then
TYPE="Plugin"
echo "ℹ️ Info: Setting default type 'Plugin' for $FILE"
fi
if [[ -z $TYPE && -z $TITLE ]]; then
TYPE="Unknown"
echo "⚠️ Warning: No type or title found for $FILE - setting both to 'Unknown'"
fi
echo "| [$TITLE]($FILE) | $VERSION | $TYPE | $STATUS | $DESCRIPTION |" >> $README_SNIPPETS_FILE
fi
done
echo "" >> $README_SNIPPETS_FILE
done
# -- Generate CHANGELOG.md
echo "# Changelog" > CHANGELOG.md
git log --pretty=format:"## %s%n%b%n" | sed '/^## /!{ /^[[:space:]]*$/!s/^/* /; }' >> CHANGELOG.md
# Generate README.md
cat README-header.md $README_SNIPPETS_FILE CHANGELOG.md > README.md
# Print summary
echo ""
echo "📊 Generation Summary:"
echo "===================="
echo "Total PHP files processed: $TOTAL_FILES"
echo "Files missing Plugin Name: $MISSING_PLUGIN_NAME"
echo "Files missing Version: $MISSING_VERSION"
echo "Files missing Type: $MISSING_TYPE"
echo "Files missing Status: $MISSING_STATUS"
echo "Files missing Description: $MISSING_DESCRIPTION"
if [[ $MISSING_PLUGIN_NAME -gt 0 || $MISSING_VERSION -gt 0 || $MISSING_TYPE -gt 0 || $MISSING_STATUS -gt 0 || $MISSING_DESCRIPTION -gt 0 ]]; then
echo ""
echo "🔧 To fix warnings, add the following to your PHP file headers:"
echo " * Plugin Name: Your Plugin Name"
echo " * Version: 1.0.0"
echo " * Type: mu-plugin|plugin|script|etc"
echo " * Status: Complete|WIP|Broken"
echo " * Description: Brief description of what this does"
else
echo ""
echo "✅ All files have complete metadata!"
fi