1 | # TSV utilities
|
2 | #
|
3 | # Usage:
|
4 | # source test/tsv-lib.sh
|
5 |
|
6 | test -n "${__TEST_TSV_LIB_SH:-}" && return
|
7 | readonly __TEST_TSV_LIB_SH=1
|
8 |
|
9 | if test -z "${REPO_ROOT:-}"; then
|
10 | echo "${BASH_SOURCE[0]}: \$REPO_ROOT must be set before sourcing" >&2
|
11 | exit 2
|
12 | fi
|
13 |
|
14 | readonly TAB=$'\t'
|
15 |
|
16 | time-tsv() {
|
17 | ### Run a task and output TSV
|
18 | $REPO_ROOT/benchmarks/time_.py --tsv "$@"
|
19 | }
|
20 |
|
21 | time-tsv3() {
|
22 | ### Maybe run with python3, our CI VMs don't have python2
|
23 |
|
24 | # Some Soil tasks like dev-setup-* and raw-vm run on the VM, with python3, not python2
|
25 | # Others run in a container with python2, not python3 (this may go away)
|
26 |
|
27 | if command -v python3 >/dev/null; then
|
28 | python3 $REPO_ROOT/benchmarks/time_.py --tsv "$@"
|
29 | else
|
30 | $REPO_ROOT/benchmarks/time_.py --tsv "$@"
|
31 | fi
|
32 | }
|
33 |
|
34 | tsv2html() {
|
35 | ### Convert TSV to an HTML table
|
36 | $REPO_ROOT/web/table/csv2html.py --tsv "$@"
|
37 | }
|
38 |
|
39 | tsv2html3() {
|
40 | ### Convert TSV to an HTML table
|
41 | python3 $REPO_ROOT/web/table/csv2html.py --tsv "$@"
|
42 | }
|
43 |
|
44 | tsv-row() {
|
45 | ### Usage: tsv-row a b c
|
46 | local i=0
|
47 | for cell in "$@"; do
|
48 | if test $i -ne 0; then
|
49 | echo -n $'\t'
|
50 | fi
|
51 |
|
52 | # note: if this were QTT, then it would be quoted
|
53 | echo -n "$cell"
|
54 |
|
55 | i=$((i + 1))
|
56 | done
|
57 |
|
58 | echo # newline
|
59 | }
|
60 |
|
61 | here-schema-tsv() {
|
62 | ### Read a legible text format on stdin, and write TSV on stdout
|
63 |
|
64 | while read -r one two; do
|
65 | echo "${one}${TAB}${two}"
|
66 | done
|
67 | }
|
68 |
|
69 | here-schema-tsv-3col() {
|
70 | ### As above, with 3 cols
|
71 | while read -r one two three; do
|
72 | echo "${one}${TAB}${two}${TAB}${three}"
|
73 | done
|
74 | }
|
75 |
|
76 | here-schema-tsv-4col() {
|
77 | ### As above, with 4 cols
|
78 | while read -r one two three four; do
|
79 | echo "${one}${TAB}${two}${TAB}${three}${TAB}${four}"
|
80 | done
|
81 | }
|
82 |
|
83 |
|
84 | tsv-concat() {
|
85 | devtools/tsv_concat.py "$@"
|
86 | }
|
87 |
|
88 | # TSV and CSV concatenation are actually the same. Just use the same script.
|
89 | csv-concat() {
|
90 | devtools/tsv_concat.py "$@"
|
91 | }
|
92 |
|
93 | tsv-add-const-column() {
|
94 | ### Used to add a host name to GC stats
|
95 |
|
96 | local col_name=$1
|
97 | local const_value=$2
|
98 |
|
99 | local i=0
|
100 | while read -r line; do
|
101 | if test $i = 0; then
|
102 | echo -n "$col_name$TAB"
|
103 | else
|
104 | echo -n "$const_value$TAB"
|
105 | fi
|
106 | # Print the other columns
|
107 | printf '%s\n' "$line"
|
108 |
|
109 | i=$((i+1))
|
110 | done
|
111 | }
|