OILS / regtest / aports / stats.awk View on Github | oils.pub

52 lines, 45 significant
1# Script to calculate size stats from APKINDEX
2#
3# Generated by Claude, then lightly edited
4
5BEGIN {
6 # Initialize variables
7 package_name = ""
8 package_size = 0
9 total_packages = 0
10 total_size = 0
11}
12
13# Match package name lines (P:package-name)
14/^P:/ {
15 package_name = substr($0, 3) # Remove "P:" prefix
16}
17
18# Match size lines (S:123456)
19/^S:/ {
20 package_size = substr($0, 3) # Remove "S:" prefix
21
22 # Only print if we have both package name and size
23 if (package_name != "" && package_size > 0) {
24 printf "%-40s %12s %15s\n", package_name, package_size, human_readable(package_size)
25 total_packages++
26 total_size += package_size
27 }
28
29 # Reset for next package
30 package_name = ""
31 package_size = 0
32}
33
34# Function to convert bytes to human readable format
35function human_readable(bytes) {
36 if (bytes >= 1e9) {
37 return sprintf("%.1f GB", bytes / 1e9)
38 } else if (bytes >= 1e6) {
39 return sprintf("%.1f MB", bytes / 1e6)
40 } else if (bytes >= 1e3) {
41 return sprintf("%.1f KB", bytes / 1e3)
42 } else {
43 return sprintf("%d B", bytes)
44 }
45}
46
47END {
48 printf "\n"
49 printf "Total packages: %d\n", total_packages
50 printf "Total size: %s (%s)\n", total_size, human_readable(total_size)
51 printf "Average size: %s\n", human_readable(total_size / total_packages)
52}