-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdate_project_status.sh
More file actions
executable file
·170 lines (139 loc) · 5.38 KB
/
update_project_status.sh
File metadata and controls
executable file
·170 lines (139 loc) · 5.38 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/bin/bash
# Updates the master PROJECT_STATUS.log from individual project STATUS.log files
# Usage: ./update_project_status.sh
MASTER_FILE="/home/k1/public/PROJECT_STATUS.log"
TEMP_FILE="/tmp/project_status_temp.log"
PUBLIC_DIR="/home/k1/public"
echo "Scanning for STATUS.log files in $PUBLIC_DIR..."
# Initialize counters
total_projects=0
active_projects=0
production_projects=0
template_projects=0
# Arrays to hold projects by category
declare -a active_list
declare -a production_list
declare -a unknown_list
# Scan for STATUS.log files
for status_file in "$PUBLIC_DIR"/*/STATUS.log; do
if [ -f "$status_file" ]; then
project_name=$(basename "$(dirname "$status_file")")
# Skip the template itself in the aggregation
if [ "$project_name" = "claude_code_project_template" ]; then
((template_projects++))
continue
fi
((total_projects++))
# Extract key information from loglog format (same line after colon)
last_updated=$(grep "Last Updated:" "$status_file" | head -1 | sed 's/.*Last Updated:[[:space:]]*//')
mode=$(grep "Development Mode:" "$status_file" | head -1 | sed 's/.*Development Mode:[[:space:]]*//')
stage=$(grep "Stage:" "$status_file" | head -1 | sed 's/.*Stage:[[:space:]]*//')
next_milestone=$(grep "Next Milestone:" "$status_file" | head -1 | sed 's/.*Next Milestone:[[:space:]]*//')
# Determine category based on stage
if [[ "$stage" =~ "Production Ready" ]] || [[ "$stage" =~ "Maintenance Mode" ]]; then
production_list+=("$project_name|$stage|$mode|$last_updated|$next_milestone")
((production_projects++))
elif [[ "$stage" =~ "Initial Setup" ]] || [[ "$stage" =~ "POC" ]] || [[ "$stage" =~ "MVP" ]] || [[ "$stage" =~ "Beta" ]]; then
active_list+=("$project_name|$stage|$mode|$last_updated|$next_milestone")
((active_projects++))
else
unknown_list+=("$project_name|$stage|$mode|$last_updated|$next_milestone")
fi
echo " Found: $project_name (Stage: $stage)"
fi
done
echo "Generating master status file..."
# Create header
cat > "$TEMP_FILE" << EOF
- Public Projects Overview
- Last Updated: $(date '+%Y-%m-%d %H:%M')
- Total Projects with STATUS.log: $total_projects
- Active Development: $active_projects
- Production/Maintenance: $production_projects
- Template Projects: $template_projects
EOF
# Add active development projects
if [ ${#active_list[@]} -gt 0 ]; then
echo "- Active Development" >> "$TEMP_FILE"
for project_data in "${active_list[@]}"; do
IFS='|' read -r name stage mode updated next <<< "$project_data"
# Add emoji based on stage
emoji="🟡"
[[ "$stage" =~ "Beta" ]] && emoji="🔵"
[[ "$stage" =~ "POC" ]] && emoji="🔴"
# Add emoji based on mode
mode_emoji="👤"
[[ "$mode" =~ "Claude Code" ]] && mode_emoji="🤖"
[[ "$mode" =~ "Hybrid" ]] && mode_emoji="🔀"
cat >> "$TEMP_FILE" << EOF
- $name
- Stage: $emoji $stage
- Mode: $mode_emoji $mode
- Last Updated: $updated
- Next: $next
EOF
done
fi
# Add production/maintenance projects
if [ ${#production_list[@]} -gt 0 ]; then
echo "- Production / Maintenance" >> "$TEMP_FILE"
for project_data in "${production_list[@]}"; do
IFS='|' read -r name stage mode updated next <<< "$project_data"
emoji="🟢"
[[ "$stage" =~ "Maintenance" ]] && emoji="⚫"
mode_emoji="👤"
[[ "$mode" =~ "Claude Code" ]] && mode_emoji="🤖"
[[ "$mode" =~ "Hybrid" ]] && mode_emoji="🔀"
cat >> "$TEMP_FILE" << EOF
- $name
- Stage: $emoji $stage
- Mode: $mode_emoji $mode
- Last Updated: $updated
- Next: $next
EOF
done
fi
# Add unknown/other projects
if [ ${#unknown_list[@]} -gt 0 ]; then
echo "- Other Projects" >> "$TEMP_FILE"
for project_data in "${unknown_list[@]}"; do
IFS='|' read -r name stage mode updated next <<< "$project_data"
mode_emoji="👤"
[[ "$mode" =~ "Claude Code" ]] && mode_emoji="🤖"
[[ "$mode" =~ "Hybrid" ]] && mode_emoji="🔀"
cat >> "$TEMP_FILE" << EOF
- $name
- Stage: $stage
- Mode: $mode_emoji $mode
- Last Updated: $updated
- Next: $next
EOF
done
fi
# Add template section
cat >> "$TEMP_FILE" << 'EOF'
- Template & Reference
- claude_code_project_template
- Stage: ⚫ Template
- Mode: 👤 Manual
- Status: Enhanced with STATUS.log and stage definitions
EOF
# Add footer
cat >> "$TEMP_FILE" << 'EOF'
- Notes
- This file is auto-generated from individual project STATUS.log files
- Add STATUS.log to projects as you work on them
- Projects without STATUS.log will not appear here
- Convert to markdown: loglog PROJECT_STATUS.log > PROJECT_STATUS.md
- Stage emojis: 🔴 POC | 🟡 MVP | 🔵 Beta | 🟢 Production | ⚫ Maintenance
- Mode emojis: 🤖 Claude Code | 👤 Manual | 🔀 Hybrid
EOF
# Replace master file
mv "$TEMP_FILE" "$MASTER_FILE"
echo "✓ Updated $MASTER_FILE"
echo " - $total_projects projects with STATUS.log"
echo " - $active_projects in active development"
echo " - $production_projects in production/maintenance"
echo ""
echo "To view: cat $MASTER_FILE"
echo "To convert to markdown: loglog $MASTER_FILE > PROJECT_STATUS.md"