Skip to content

Commit acc0a28

Browse files
committed
Simplify script
1 parent 9f975f5 commit acc0a28

File tree

1 file changed

+10
-145
lines changed

1 file changed

+10
-145
lines changed

tools/git/scripts/bytes_per_file

Lines changed: 10 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -4,153 +4,18 @@
44
#
55
# <file_type> <number_of_bytes> <file_path>
66

7+
# Determine root directory:
8+
root="$(git rev-parse --show-toplevel)"
9+
10+
# Define the path to a utility to annotate a file statistic stream:
11+
annotate_file_type="${root}/tools/git/scripts/annotate_file_type.awk"
12+
713
# * `git ls-files`
814
# - List indexed files.
915
# * `ls -l`
1016
# - Print file info, which includes number of bytes.
1117
# * `awk '{}'`
12-
# - Format output.
13-
git ls-files | xargs ls -l | awk '
14-
# Special cases...
15-
/(LICENSE|NOTICE)$/ {
16-
print "LICENSE" OFS $5 OFS $9
17-
next
18-
}
19-
/datapackage\.json$/ {
20-
print "datapackage.json" OFS $5 OFS $9
21-
next
22-
}
23-
/package\.json$/ {
24-
print "package.json" OFS $5 OFS $9
25-
next
26-
}
27-
28-
# Known file extensions (keep in alphabetical order)...
29-
/\.awk$/ {
30-
print "AWK" OFS $5 OFS $9
31-
next
32-
}
33-
/\.bib$/ {
34-
print "BibTeX" OFS $5 OFS $9
35-
next
36-
}
37-
/\.c$/ {
38-
print "C" OFS $5 OFS $9
39-
next
40-
}
41-
/\.cpp$/ {
42-
print "C++" OFS $5 OFS $9
43-
next
44-
}
45-
/\.csl$/ {
46-
print "CSL" OFS $5 OFS $9
47-
next
48-
}
49-
/\.css$/ {
50-
print "CSS" OFS $5 OFS $9
51-
next
52-
}
53-
/\.csv$/ {
54-
print "CSV" OFS $5 OFS $9
55-
next
56-
}
57-
/\.eot$/ {
58-
print "fonts" OFS $5 OFS $9
59-
next
60-
}
61-
/\.gif$/ {
62-
print "gif" OFS $5 OFS $9
63-
next
64-
}
65-
/\.go$/ {
66-
print "Go" OFS $5 OFS $9
67-
next
68-
}
69-
/\.h$/ {
70-
print "C" OFS $5 OFS $9
71-
next
72-
}
73-
/\.hpp$/ {
74-
print "C++" OFS $5 OFS $9
75-
next
76-
}
77-
/\.html$/ {
78-
print "HTML" OFS $5 OFS $9
79-
next
80-
}
81-
/\.jl$/ {
82-
print "Julia" OFS $5 OFS $9
83-
next
84-
}
85-
/\.jpg$/ {
86-
print "JPG" OFS $5 OFS $9
87-
next
88-
}
89-
/\.js$/ {
90-
print "JavaScript" OFS $5 OFS $9
91-
next
92-
}
93-
/\.json$/ {
94-
print "JSON" OFS $5 OFS $9
95-
next
96-
}
97-
/Makefile$/ {
98-
print "make" OFS $5 OFS $9
99-
next
100-
}
101-
/\.md$/ {
102-
print "Markdown" OFS $5 OFS $9
103-
next
104-
}
105-
/\.mk$/ {
106-
print "make" OFS $5 OFS $9
107-
next
108-
}
109-
/\.png$/ {
110-
print "PNG" OFS $5 OFS $9
111-
next
112-
}
113-
/\.py$/ {
114-
print "Python" OFS $5 OFS $9
115-
next
116-
}
117-
/\.R$/ {
118-
print "R" OFS $5 OFS $9
119-
next
120-
}
121-
/\.sh$/ {
122-
print "bash" OFS $5 OFS $9
123-
next
124-
}
125-
/\.svg$/ {
126-
print "SVG" OFS $5 OFS $9
127-
next
128-
}
129-
/\.txt$/ {
130-
print "plaintext" OFS $5 OFS $9
131-
next
132-
}
133-
/\.woff$/ {
134-
print "fonts" OFS $5 OFS $9
135-
next
136-
}
137-
/\.yml$/ {
138-
print "YAML" OFS $5 OFS $9
139-
next
140-
}
141-
142-
# Special cases...
143-
$9 ~ /^\.([A-Za-z])+$|\/\.([A-Za-z])+$/ {
144-
print "dotfiles" OFS $5 OFS $9
145-
next
146-
}
147-
$9 ~ /\/([A-Za-z0-9_-])+$/ {
148-
print "executables" OFS $5 OFS $9
149-
next
150-
}
151-
152-
# Everything else...
153-
{
154-
print "OTHER" OFS $5 OFS $9
155-
}
156-
'
18+
# - Extract `bytes` and `filename` columns.
19+
# * `annotate_file_type`
20+
# - Prefix each result with a file type.
21+
git ls-files | xargs ls -l | awk '{print $5 OFS $9}' | "${annotate_file_type}"

0 commit comments

Comments
 (0)