Add bdl-lib.sh which provides functions to assit in debugging git shell scripts and tests. The primary public interace are two routines, bdl and bdl_nsl which print strings. The difference between the two is that bdl outputs location of the statement optionally followed by a string to print. For example: $ cat -n bdl-exmpl1.sh 1 #!/usr/bin/env bash 2 . bdl-lib.sh 3 bdl "hi" 4 5 # If no parameters just the location is printed 6 bdl $ ./bdl-exmpl1.sh bdl-exmpl1.sh:3: hi bdl-exmpl1.sh:6: bdl_nsl means bdl with no source location being printed and at least one parameter is required. For example: $ cat -n bdl-exmpl2.sh 1 #!/usr/bin/env bash 2 . bdl-lib.sh 3 bdl_nsl "hi" 4 5 # If no parameters nothing is printed 6 bdl_nsl $ ./bdl-exmpl1.sh hi These routines can also take two parameters where the first parameter is the destination for the string. There are two types of destinations, either a single digit file descriptor 1..9 or a file name. For example: $ cat -n bdl-exmpl3.sh 1 #!/usr/bin/env bash 2 . bdl-lib.sh 3 4 # Output to STDOUT 5 bdl_nsl 1 "hi there" 6 7 # Map 5 to STDOUT 8 exec 5>&1 9 bdl 5 "yo dude" 10 11 # Output to a file 12 bdl bdl_out.txt "good bye!" 13 cat bdl_out.txt 14 rm bdl_out.txt $ ./bdl-exmpl3.sh hi there bdl-exmpl3.sh:9: yo dude bdl-exmpl3.sh:12: good bye! If a destination is not provided as a parameter than there are two variables, bdl_dst and bdl_stdout, that can be used to provide a defaults. With bdl_dst taking presedence over bdl_stdout and a destination parameter taking presedence over the variables. For example: $ cat -n bdl-exmpl4.sh 1 #!/usr/bin/env bash 2 . bdl-lib.sh 3 4 # Set defaults with bdl_dst taking presedence 5 bdl_dst=bdl_dst_out.txt 6 bdl_stdout=5 7 8 bdl_nsl "printed by bdl_nsl to bdl_dst_out.txt" 9 bdl "printed by bdl to bdl_dst_out.txt" 10 11 # But the parameter the ultimate presedence 12 bdl bdl_out.txt "good bye to bdl_out.txt" 13 14 cat bdl_dst_out.txt 15 cat bdl_out.txt 16 17 rm bdl_dst_out.txt 18 rm bdl_out.txt 19 20 # Now clear bdl_dst and bdl_stdout takes presedence 21 # but parameters take presedence 22 bdl_dst= 23 exec 5>&1 24 25 bdl_nsl "monkeys via 5" 26 bdl 1 "horses via 1" 27 bdl bdl_out.txt "orcas to bdl_out.txt" 28 29 cat bdl_out.txt 30 rm bdl_out.txt $ ./bdl-exmpl4.sh printed by bdl_nsl to bdl_dst_out.txt bdl-exmpl4.sh:9: printed by bdl to bdl_dst_out.txt bdl-exmpl4.sh:26: orcas to bdl_out.txt bdl-exmpl4.sh:12: good bye to bdl_out.txt monkeys via 5 bdl-exmpl4.sh:26: horses via 1 bdl-exmpl4.sh:27: orcas to bdl_out.txt TODO: More tests and documentation needed. Wink Saville (1): bdl-lib.sh: add bash debug logger bdl-exmpl.sh | 46 ++++++++++++ bdl-lib.sh | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++++ t/t0014-bdl-lib.sh | 115 ++++++++++++++++++++++++++++ t/test-lib.sh | 4 + 4 files changed, 380 insertions(+) create mode 100755 bdl-exmpl.sh create mode 100644 bdl-lib.sh create mode 100755 t/t0014-bdl-lib.sh -- 2.16.3