|
4 | 4 | # |
5 | 5 | # <file_type> <number_of_bytes> <file_path> |
6 | 6 |
|
| 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 | + |
7 | 13 | # * `git ls-files` |
8 | 14 | # - List indexed files. |
9 | 15 | # * `ls -l` |
10 | 16 | # - Print file info, which includes number of bytes. |
11 | 17 | # * `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