nanobot/core_agent_lines.sh

93 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
cd "$(dirname "$0")" || exit 1
count_top_level_py_lines() {
local dir="$1"
if [ ! -d "$dir" ]; then
echo 0
return
fi
find "$dir" -maxdepth 1 -type f -name "*.py" -print0 | xargs -0 cat 2>/dev/null | wc -l | tr -d ' '
}
count_recursive_py_lines() {
local dir="$1"
if [ ! -d "$dir" ]; then
echo 0
return
fi
find "$dir" -type f -name "*.py" -print0 | xargs -0 cat 2>/dev/null | wc -l | tr -d ' '
}
count_skill_lines() {
local dir="$1"
if [ ! -d "$dir" ]; then
echo 0
return
fi
find "$dir" -type f \( -name "*.md" -o -name "*.py" -o -name "*.sh" \) -print0 | xargs -0 cat 2>/dev/null | wc -l | tr -d ' '
}
print_row() {
local label="$1"
local count="$2"
printf " %-16s %6s lines\n" "$label" "$count"
}
echo "nanobot line count"
echo "=================="
echo ""
echo "Core runtime"
echo "------------"
core_agent=$(count_top_level_py_lines "nanobot/agent")
core_bus=$(count_top_level_py_lines "nanobot/bus")
core_config=$(count_top_level_py_lines "nanobot/config")
core_cron=$(count_top_level_py_lines "nanobot/cron")
core_heartbeat=$(count_top_level_py_lines "nanobot/heartbeat")
core_session=$(count_top_level_py_lines "nanobot/session")
print_row "agent/" "$core_agent"
print_row "bus/" "$core_bus"
print_row "config/" "$core_config"
print_row "cron/" "$core_cron"
print_row "heartbeat/" "$core_heartbeat"
print_row "session/" "$core_session"
core_total=$((core_agent + core_bus + core_config + core_cron + core_heartbeat + core_session))
echo ""
echo "Separate buckets"
echo "----------------"
extra_tools=$(count_recursive_py_lines "nanobot/agent/tools")
extra_skills=$(count_skill_lines "nanobot/skills")
extra_api=$(count_recursive_py_lines "nanobot/api")
extra_cli=$(count_recursive_py_lines "nanobot/cli")
extra_channels=$(count_recursive_py_lines "nanobot/channels")
extra_utils=$(count_recursive_py_lines "nanobot/utils")
print_row "tools/" "$extra_tools"
print_row "skills/" "$extra_skills"
print_row "api/" "$extra_api"
print_row "cli/" "$extra_cli"
print_row "channels/" "$extra_channels"
print_row "utils/" "$extra_utils"
extra_total=$((extra_tools + extra_skills + extra_api + extra_cli + extra_channels + extra_utils))
echo ""
echo "Totals"
echo "------"
print_row "core total" "$core_total"
print_row "extra total" "$extra_total"
echo ""
echo "Notes"
echo "-----"
echo " - agent/ only counts top-level Python files under nanobot/agent"
echo " - tools/ is counted separately from nanobot/agent/tools"
echo " - skills/ counts .md, .py, and .sh files"
echo " - not included here: command/, providers/, security/, templates/, nanobot.py, root files"