From 1f7fc8f98caf4d29fd1b02d9ad7e5d32f30d3b24 Mon Sep 17 00:00:00 2001 From: "R. S. Doiel" Date: Fri, 13 Jan 2023 14:22:25 -0800 Subject: [PATCH] fix: reorganzie documentation --- Makefile | 5 +- README.md | 102 ++-- TODO.html | 502 ++++++------------ about.html | 116 +--- codemeta2cff.1.html | 89 +--- csv2json.1.html | 142 ++--- csv2mdtable.1.html | 124 ++--- csv2tab.1.html | 100 +--- csv2xlsx.1.html | 136 ++--- csvcleaner.1.html | 178 ++----- csvcols.1.html | 152 ++---- csvfind.1.html | 190 ++----- csvjoin.1.html | 184 ++----- csvrows.1.html | 151 ++---- docs/csv2json/index.html | 3 - docs/csv2json/nav.md | 1 - docs/csv2mdtable/index.html | 3 - docs/csv2mdtable/nav.md | 1 - docs/csv2tab/index.html | 3 - docs/csv2tab/nav.md | 1 - docs/csv2xlsx/index.html | 3 - docs/csv2xlsx/nav.md | 1 - docs/csvcleaner/index.html | 3 - docs/csvcleaner/nav.md | 1 - docs/csvcols/index.html | 3 - docs/csvcols/nav.md | 1 - docs/csvfind/index.html | 3 - docs/csvfind/nav.md | 1 - docs/csvjoin/index.html | 3 - docs/csvjoin/nav.md | 1 - docs/csvrows/index.html | 3 - docs/csvrows/nav.md | 1 - docs/finddir/index.html | 3 - docs/finddir/nav.md | 1 - docs/findfile/index.html | 3 - docs/findfile/nav.md | 1 - docs/index.html | 3 - docs/json2toml/index.html | 3 - docs/json2toml/nav.md | 1 - docs/json2yaml/index.html | 3 - docs/json2yaml/nav.md | 1 - docs/jsoncols/index.html | 3 - docs/jsoncols/nav.md | 1 - docs/jsonjoin/index.html | 3 - docs/jsonjoin/nav.md | 1 - docs/jsonmunge/index.html | 3 - docs/jsonmunge/nav.md | 1 - docs/jsonrange/index.html | 3 - docs/jsonrange/nav.md | 1 - docs/mergepath/index.html | 3 - docs/mergepath/nav.md | 1 - docs/nav.md | 9 - docs/options.html | 3 - docs/range/index.html | 3 - docs/range/nav.md | 1 - docs/reldate/index.html | 3 - docs/reldate/nav.md | 1 - docs/reltime/index.html | 3 - docs/reltime/nav.md | 1 - docs/string/contains.html | 3 - docs/string/count.html | 3 - docs/string/englishtitle.html | 3 - docs/string/hasprefix.html | 3 - docs/string/hassuffix.html | 3 - docs/string/index.html | 3 - docs/string/join.html | 3 - docs/string/length.html | 3 - docs/string/nav.md | 1 - docs/string/padleft.html | 3 - docs/string/padright.html | 3 - docs/string/position.html | 3 - docs/string/replace.html | 3 - docs/string/replacen.html | 3 - docs/string/slice.html | 3 - docs/string/split.html | 3 - docs/string/splitn.html | 3 - docs/string/tolower.html | 3 - docs/string/totitle.html | 3 - docs/string/toupper.html | 3 - docs/string/trim.html | 3 - docs/string/trimleft.html | 3 - docs/string/trimprefix.html | 3 - docs/string/trimright.html | 3 - docs/string/trimsuffix.html | 3 - docs/tab2csv/index.html | 3 - docs/tab2csv/nav.md | 1 - docs/timefmt/index.html | 3 - docs/timefmt/nav.md | 1 - docs/toml2json/index.html | 3 - docs/toml2json/nav.md | 1 - docs/urlparse/index.html | 3 - docs/urlparse/nav.md | 1 - docs/xlsx2csv/index.html | 3 - docs/xlsx2csv/nav.md | 1 - docs/xlsx2json/index.html | 3 - docs/xlsx2json/nav.md | 1 - docs/yaml2json/index.html | 3 - docs/yaml2json/nav.md | 1 - finddir.1.html | 133 ++--- findfile.1.html | 135 ++--- gen-nav.bash | 66 --- how-to/{csvcols/2col.csv => 2col-2.csv} | 0 how-to/{csvcleaner => }/2cols.csv | 0 how-to/{csvcols/3col.csv => 3col-2.csv} | 0 how-to/{csvcleaner => }/3cols.csv | 0 how-to/{csvrows => }/4rows.csv | 0 how-to/{xlsx2csv => }/My-worksheet-1.csv | 0 how-to/{xlsx2json => }/My-worksheet-1.json | 0 how-to/{xlsx2json => }/My-worksheet-2.json | 0 how-to/{csv2xlsx => }/MyWorkbook.xlsx | Bin how-to/{jsonrange => }/array1.json | 0 how-to/{jsonrange => }/array2.json | 0 how-to/{jsonrange => }/array3.json | 0 how-to/{jsoncols => }/blob2.json | 0 how-to/{csv2json => }/blobs.txt | 0 how-to/{csvfind => }/books.csv | 0 how-to/convert-lines-into-an-array.html | 59 +- .../demo.bash => csb2xlsx-demo.bash} | 0 .../demo.bash => csv2json-demo.bash} | 0 how-to/{csv2json/index.html => csv2json.html} | 58 +- how-to/{csv2json/index.md => csv2json.md} | 10 +- how-to/csv2json/nav.md | 9 - .../demo.bash => csv2mdtable-demo.bash} | 0 .../index.html => csv2mdtable.html} | 56 +- .../{csv2mdtable/index.md => csv2mdtable.md} | 6 + how-to/csv2mdtable/data1.csv | 4 - how-to/csv2mdtable/nav.md | 9 - how-to/csv2xlsx.html | 51 ++ how-to/{csv2xlsx/index.md => csv2xlsx.md} | 10 +- how-to/csv2xlsx/data1.csv | 4 - how-to/csv2xlsx/index.html | 73 --- how-to/csv2xlsx/nav.md | 9 - .../demo.bash => csvcleaner-demo.bash} | 0 .../index.html => csvcleaner.html} | 74 +-- how-to/{csvcleaner/index.md => csvcleaner.md} | 11 + how-to/csvcleaner/nav.md | 9 - .../{csvcols/demo.bash => csvcols-demo.bash} | 0 how-to/csvcols.html | 73 +++ how-to/{csvcols/index.md => csvcols.md} | 26 +- how-to/csvcols/index.html | 101 ---- how-to/csvcols/nav.md | 9 - .../{csvfind/demo.bash => csvfind-demo.bash} | 0 how-to/{csvfind/index.html => csvfind.html} | 72 +-- how-to/{csvfind/index.md => csvfind.md} | 8 + how-to/csvfind/nav.md | 9 - .../{csvjoin/demo.bash => csvjoin-demo.bash} | 0 how-to/csvjoin.html | 51 ++ how-to/csvjoin.md | 21 + how-to/csvjoin/index.html | 68 --- how-to/csvjoin/index.md | 14 - how-to/csvjoin/nav.md | 9 - .../{csvrows/demo.bash => csvrows-demo.bash} | 0 how-to/{csvrows/index.html => csvrows.html} | 69 +-- how-to/{csvrows/index.md => csvrows.md} | 13 +- how-to/csvrows/nav.md | 9 - how-to/{csvjoin/data1.csv => data1-2.csv} | 0 how-to/{csv2json => }/data1.csv | 0 how-to/{csv2mdtable => }/data1.html | 70 +-- how-to/{csv2json => }/data1.json | 0 how-to/{csv2mdtable => }/data1.md | 0 how-to/{csvjoin/data2.csv => data2-2.csv} | 0 how-to/{finddir => }/doc/1.txt | 0 how-to/{finddir => }/docs/2.txt | 0 how-to/{finddir => }/docs/3.txt | 0 how-to/{finddir => }/documents/t4.txt | 0 how-to/{findfile => }/documents/t5.txt | 0 how-to/{xlsx2csv => }/expected1.csv | 0 how-to/{jsonjoin => }/expected1.json | 0 how-to/{jsonrange => }/expected1.txt | 0 how-to/{jsonrange => }/expected2.txt | 0 how-to/{jsonjoin => }/expected3.json | 0 how-to/{jsonrange => }/expected3.txt | 0 how-to/{jsonjoin => }/expected4.json | 0 how-to/{jsonrange => }/expected4.txt | 0 how-to/{jsonjoin => }/expected5.json | 0 how-to/{jsonrange => }/expected5.txt | 0 how-to/{jsonjoin => }/expected6.json | 0 how-to/{jsonrange => }/expected6.txt | 0 how-to/{jsonrange => }/expected7.txt | 0 how-to/{jsonrange => }/expected8.txt | 0 how-to/{jsonrange => }/expected9.txt | 0 how-to/find-duplicates-in-a-column.html | 79 +-- .../{finddir/demo.bash => finddir-demo.bash} | 0 how-to/{findfile/index.html => finddir.html} | 50 +- how-to/{finddir/index.md => finddir.md} | 5 + how-to/finddir/nav.md | 9 - .../demo.bash => findfile-demo.bash} | 0 how-to/findfile.html | 44 ++ how-to/findfile.md | 13 + how-to/findfile/doc/1.txt | 0 how-to/findfile/docs/2.txt | 0 how-to/findfile/docs/3.txt | 0 how-to/findfile/index.md | 9 - how-to/findfile/nav.md | 9 - how-to/index.html | 220 +++----- how-to/index.md | 60 +-- .../demo.bash => jsoncols-demo.bash} | 0 how-to/{jsoncols/index.html => jsoncols.html} | 84 +-- how-to/{jsoncols/index.md => jsoncols.md} | 6 + how-to/jsoncols/nav.md | 9 - .../demo.bash => jsonjoin-demo.bash} | 0 how-to/{jsonjoin/index.html => jsonjoin.html} | 164 ++---- how-to/{jsonjoin/index.md => jsonjoin.md} | 6 + how-to/jsonjoin/nav.md | 9 - .../demo.bash => jsonmunge-demo.bash} | 0 .../{jsonmunge/index.html => jsonmunge.html} | 70 +-- how-to/{jsonmunge/index.md => jsonmunge.md} | 6 + how-to/jsonmunge/nav.md | 9 - how-to/jsonmunge/person.json | 1 - how-to/jsonmunge/result1.json | 1 - .../demo.bash => jsonrange-demo.bash} | 0 .../{jsonrange/index.html => jsonrange.html} | 98 +--- how-to/{jsonrange/index.md => jsonrange.md} | 0 how-to/jsonrange/nav.md | 9 - how-to/jsonrange/person.json | 1 - how-to/{csvcleaner => }/ltrim.csv | 0 .../merged-data.csv => merged-data-2.csv} | 0 how-to/{jsoncols/myblob.json => myblog.json} | 0 how-to/{csvcleaner => }/mysheet.csv | 0 how-to/{jsonmunge => }/name.tmpl | 0 how-to/nav.md | 9 - how-to/{finddir/index.html => page.tmpl} | 46 +- how-to/{jsonjoin => }/person.json | 0 how-to/{jsonjoin => }/profile.json | 0 how-to/{csvcols => }/quoting-example.csv | 0 how-to/{csvcols => }/quoting-expected.csv | 0 how-to/{range/demo.bash => range-demo.bash} | 0 how-to/{range/index.html => range.html} | 86 +-- how-to/{range/index.md => range.md} | 4 + how-to/range/nav.md | 9 - .../{reldate/demo.bash => reldate-demo.bash} | 0 how-to/reldate.html | 82 +++ how-to/{reldate/index.md => reldate.md} | 5 + how-to/reldate/index.html | 134 ----- how-to/reldate/nav.md | 9 - how-to/reorder-a-comma-delimited-string.html | 130 ++--- how-to/{csvrows/result1.csv => result1-2.csv} | 0 .../{jsoncols/result1.txt => result1-3.txt} | 0 how-to/{csvfind => }/result1.csv | 0 how-to/{jsonjoin => }/result1.json | 0 how-to/{jsonrange => }/result1.txt | 0 how-to/{csvrows/result2.csv => result2-2.csv} | 0 .../{jsoncols/result2.txt => result2-3.txt} | 0 how-to/{csvfind => }/result2.csv | 0 how-to/{jsonjoin => }/result2.json | 0 how-to/{jsonrange => }/result2.txt | 0 .../{jsoncols/result3.txt => result3-3.txt} | 0 how-to/{csvfind => }/result3.csv | 0 how-to/{jsonjoin => }/result3.json | 0 how-to/{jsonrange => }/result3.txt | 0 how-to/{jsonjoin => }/result4.json | 0 how-to/{jsonrange => }/result4.txt | 0 how-to/{jsonjoin => }/result5.json | 0 how-to/{jsonrange => }/result5.txt | 0 how-to/{jsonjoin => }/result6.json | 0 how-to/{jsonrange => }/result6.txt | 0 how-to/{jsonrange => }/result7.txt | 0 how-to/{jsonrange => }/result8.txt | 0 how-to/{jsonrange => }/result9.txt | 0 how-to/{csvcleaner => }/rtrim.csv | 0 .../select-random-rows-from-a-CSV-file.html | 98 ++-- how-to/{xlsx2csv => }/sheet1.csv | 0 how-to/{xlsx2json => }/sheet1.json | 0 .../{timefmt/demo.bash => timefmt-demo.bash} | 0 how-to/{timefmt/index.html => timefmt.html} | 62 +-- how-to/{timefmt/index.md => timefmt.md} | 4 + how-to/timefmt/nav.md | 9 - ...m-a-trailing-newline-from-a-text-file.html | 81 +-- how-to/{csvcleaner => }/trim.csv | 0 how-to/{csvfind => }/trimspace.csv | 0 .../demo.bash => urlparse-demo.bash} | 0 how-to/{urlparse/index.html => urlparse.html} | 80 +-- how-to/{urlparse/index.md => urlparse.md} | 4 + how-to/urlparse/nav.md | 9 - how-to/website.mak | 20 + .../demo.bash => xlsx2csv-demo.bash} | 0 how-to/{xlsx2csv/index.html => xlsx2csv.html} | 67 +-- how-to/{xlsx2csv/index.md => xlsx2csv.md} | 5 + how-to/xlsx2csv/MyWorkbook.xlsx | Bin 7241 -> 0 bytes how-to/xlsx2csv/expected3.txt | 2 - how-to/xlsx2csv/nav.md | 9 - .../demo.bash => xlsx2json-demo.bash} | 0 .../{xlsx2json/index.html => xlsx2json.html} | 68 +-- how-to/{xlsx2json/index.md => xlsx2json.md} | 6 + how-to/xlsx2json/MyWorkbook.xlsx | Bin 7241 -> 0 bytes how-to/xlsx2json/expected1.json | 1 - how-to/xlsx2json/expected3.txt | 2 - how-to/xlsx2json/nav.md | 9 - index.html | 299 +++-------- install.html | 344 ++++-------- json2toml.1.html | 107 +--- json2yaml.1.html | 103 +--- jsoncols.1.html | 184 ++----- jsonjoin.1.html | 107 +--- jsonmunge.1.html | 132 ++--- jsonrange.1.html | 256 +++------ license.html | 101 ---- mergepath.1.html | 121 ++--- mk-website.bash | 52 -- nav.md | 9 - nav.tmpl | 9 - page.tmpl | 15 +- range.1.html | 160 ++---- reldate.1.html | 200 ++----- reltime.1.html | 96 +--- sql2csv.1.html | 183 ++----- string.1.html | 342 ++++-------- tab2csv.1.html | 120 ++--- timefmt.1.html | 140 ++--- toml2json.1.html | 109 +--- urlparse.1.html | 166 ++---- user-manual.html | 224 +++----- user-manual.md | 22 +- version.go | 22 - website.mak | 26 +- xlsx2csv.1.html | 128 ++--- xlsx2json.1.html | 130 ++--- yaml2json.1.html | 109 +--- 318 files changed, 2831 insertions(+), 6985 deletions(-) delete mode 100644 docs/nav.md delete mode 100755 gen-nav.bash rename how-to/{csvcols/2col.csv => 2col-2.csv} (100%) rename how-to/{csvcleaner => }/2cols.csv (100%) rename how-to/{csvcols/3col.csv => 3col-2.csv} (100%) rename how-to/{csvcleaner => }/3cols.csv (100%) rename how-to/{csvrows => }/4rows.csv (100%) rename how-to/{xlsx2csv => }/My-worksheet-1.csv (100%) rename how-to/{xlsx2json => }/My-worksheet-1.json (100%) rename how-to/{xlsx2json => }/My-worksheet-2.json (100%) rename how-to/{csv2xlsx => }/MyWorkbook.xlsx (100%) rename how-to/{jsonrange => }/array1.json (100%) rename how-to/{jsonrange => }/array2.json (100%) rename how-to/{jsonrange => }/array3.json (100%) rename how-to/{jsoncols => }/blob2.json (100%) rename how-to/{csv2json => }/blobs.txt (100%) rename how-to/{csvfind => }/books.csv (100%) rename how-to/{csv2xlsx/demo.bash => csb2xlsx-demo.bash} (100%) mode change 100644 => 100755 rename how-to/{csv2json/demo.bash => csv2json-demo.bash} (100%) mode change 100644 => 100755 rename how-to/{csv2json/index.html => csv2json.html} (55%) rename how-to/{csv2json/index.md => csv2json.md} (65%) delete mode 100644 how-to/csv2json/nav.md rename how-to/{csv2mdtable/demo.bash => csv2mdtable-demo.bash} (100%) mode change 100644 => 100755 rename how-to/{csv2mdtable/index.html => csv2mdtable.html} (55%) rename how-to/{csv2mdtable/index.md => csv2mdtable.md} (65%) delete mode 100644 how-to/csv2mdtable/data1.csv delete mode 100644 how-to/csv2mdtable/nav.md create mode 100644 how-to/csv2xlsx.html rename how-to/{csv2xlsx/index.md => csv2xlsx.md} (55%) delete mode 100644 how-to/csv2xlsx/data1.csv delete mode 100644 how-to/csv2xlsx/index.html delete mode 100644 how-to/csv2xlsx/nav.md rename how-to/{csvcleaner/demo.bash => csvcleaner-demo.bash} (100%) rename how-to/{csvcleaner/index.html => csvcleaner.html} (54%) rename how-to/{csvcleaner/index.md => csvcleaner.md} (74%) delete mode 100644 how-to/csvcleaner/nav.md rename how-to/{csvcols/demo.bash => csvcols-demo.bash} (100%) create mode 100644 how-to/csvcols.html rename how-to/{csvcols/index.md => csvcols.md} (65%) delete mode 100644 how-to/csvcols/index.html delete mode 100644 how-to/csvcols/nav.md rename how-to/{csvfind/demo.bash => csvfind-demo.bash} (100%) rename how-to/{csvfind/index.html => csvfind.html} (54%) rename how-to/{csvfind/index.md => csvfind.md} (81%) delete mode 100644 how-to/csvfind/nav.md rename how-to/{csvjoin/demo.bash => csvjoin-demo.bash} (100%) create mode 100644 how-to/csvjoin.html create mode 100644 how-to/csvjoin.md delete mode 100644 how-to/csvjoin/index.html delete mode 100644 how-to/csvjoin/index.md delete mode 100644 how-to/csvjoin/nav.md rename how-to/{csvrows/demo.bash => csvrows-demo.bash} (100%) rename how-to/{csvrows/index.html => csvrows.html} (57%) rename how-to/{csvrows/index.md => csvrows.md} (68%) delete mode 100644 how-to/csvrows/nav.md rename how-to/{csvjoin/data1.csv => data1-2.csv} (100%) rename how-to/{csv2json => }/data1.csv (100%) rename how-to/{csv2mdtable => }/data1.html (60%) rename how-to/{csv2json => }/data1.json (100%) rename how-to/{csv2mdtable => }/data1.md (100%) rename how-to/{csvjoin/data2.csv => data2-2.csv} (100%) rename how-to/{finddir => }/doc/1.txt (100%) rename how-to/{finddir => }/docs/2.txt (100%) rename how-to/{finddir => }/docs/3.txt (100%) rename how-to/{finddir => }/documents/t4.txt (100%) rename how-to/{findfile => }/documents/t5.txt (100%) rename how-to/{xlsx2csv => }/expected1.csv (100%) rename how-to/{jsonjoin => }/expected1.json (100%) rename how-to/{jsonrange => }/expected1.txt (100%) rename how-to/{jsonrange => }/expected2.txt (100%) rename how-to/{jsonjoin => }/expected3.json (100%) rename how-to/{jsonrange => }/expected3.txt (100%) rename how-to/{jsonjoin => }/expected4.json (100%) rename how-to/{jsonrange => }/expected4.txt (100%) rename how-to/{jsonjoin => }/expected5.json (100%) rename how-to/{jsonrange => }/expected5.txt (100%) rename how-to/{jsonjoin => }/expected6.json (100%) rename how-to/{jsonrange => }/expected6.txt (100%) rename how-to/{jsonrange => }/expected7.txt (100%) rename how-to/{jsonrange => }/expected8.txt (100%) rename how-to/{jsonrange => }/expected9.txt (100%) rename how-to/{finddir/demo.bash => finddir-demo.bash} (100%) rename how-to/{findfile/index.html => finddir.html} (58%) rename how-to/{finddir/index.md => finddir.md} (64%) delete mode 100644 how-to/finddir/nav.md rename how-to/{findfile/demo.bash => findfile-demo.bash} (100%) create mode 100644 how-to/findfile.html create mode 100644 how-to/findfile.md delete mode 100644 how-to/findfile/doc/1.txt delete mode 100644 how-to/findfile/docs/2.txt delete mode 100644 how-to/findfile/docs/3.txt delete mode 100644 how-to/findfile/index.md delete mode 100644 how-to/findfile/nav.md rename how-to/{jsoncols/demo.bash => jsoncols-demo.bash} (100%) rename how-to/{jsoncols/index.html => jsoncols.html} (62%) rename how-to/{jsoncols/index.md => jsoncols.md} (87%) delete mode 100644 how-to/jsoncols/nav.md rename how-to/{jsonjoin/demo.bash => jsonjoin-demo.bash} (100%) rename how-to/{jsonjoin/index.html => jsonjoin.html} (77%) rename how-to/{jsonjoin/index.md => jsonjoin.md} (94%) delete mode 100644 how-to/jsonjoin/nav.md rename how-to/{jsonmunge/demo.bash => jsonmunge-demo.bash} (100%) rename how-to/{jsonmunge/index.html => jsonmunge.html} (62%) rename how-to/{jsonmunge/index.md => jsonmunge.md} (74%) delete mode 100644 how-to/jsonmunge/nav.md delete mode 100644 how-to/jsonmunge/person.json delete mode 100644 how-to/jsonmunge/result1.json rename how-to/{jsonrange/demo.bash => jsonrange-demo.bash} (100%) rename how-to/{jsonrange/index.html => jsonrange.html} (68%) rename how-to/{jsonrange/index.md => jsonrange.md} (100%) delete mode 100644 how-to/jsonrange/nav.md delete mode 100644 how-to/jsonrange/person.json rename how-to/{csvcleaner => }/ltrim.csv (100%) rename how-to/{csvjoin/merged-data.csv => merged-data-2.csv} (100%) rename how-to/{jsoncols/myblob.json => myblog.json} (100%) rename how-to/{csvcleaner => }/mysheet.csv (100%) rename how-to/{jsonmunge => }/name.tmpl (100%) delete mode 100644 how-to/nav.md rename how-to/{finddir/index.html => page.tmpl} (54%) rename how-to/{jsonjoin => }/person.json (100%) rename how-to/{jsonjoin => }/profile.json (100%) rename how-to/{csvcols => }/quoting-example.csv (100%) rename how-to/{csvcols => }/quoting-expected.csv (100%) rename how-to/{range/demo.bash => range-demo.bash} (100%) rename how-to/{range/index.html => range.html} (52%) rename how-to/{range/index.md => range.md} (90%) delete mode 100644 how-to/range/nav.md rename how-to/{reldate/demo.bash => reldate-demo.bash} (100%) create mode 100644 how-to/reldate.html rename how-to/{reldate/index.md => reldate.md} (96%) delete mode 100644 how-to/reldate/index.html delete mode 100644 how-to/reldate/nav.md rename how-to/{csvrows/result1.csv => result1-2.csv} (100%) rename how-to/{jsoncols/result1.txt => result1-3.txt} (100%) rename how-to/{csvfind => }/result1.csv (100%) rename how-to/{jsonjoin => }/result1.json (100%) rename how-to/{jsonrange => }/result1.txt (100%) rename how-to/{csvrows/result2.csv => result2-2.csv} (100%) rename how-to/{jsoncols/result2.txt => result2-3.txt} (100%) rename how-to/{csvfind => }/result2.csv (100%) rename how-to/{jsonjoin => }/result2.json (100%) rename how-to/{jsonrange => }/result2.txt (100%) rename how-to/{jsoncols/result3.txt => result3-3.txt} (100%) rename how-to/{csvfind => }/result3.csv (100%) rename how-to/{jsonjoin => }/result3.json (100%) rename how-to/{jsonrange => }/result3.txt (100%) rename how-to/{jsonjoin => }/result4.json (100%) rename how-to/{jsonrange => }/result4.txt (100%) rename how-to/{jsonjoin => }/result5.json (100%) rename how-to/{jsonrange => }/result5.txt (100%) rename how-to/{jsonjoin => }/result6.json (100%) rename how-to/{jsonrange => }/result6.txt (100%) rename how-to/{jsonrange => }/result7.txt (100%) rename how-to/{jsonrange => }/result8.txt (100%) rename how-to/{jsonrange => }/result9.txt (100%) rename how-to/{csvcleaner => }/rtrim.csv (100%) rename how-to/{xlsx2csv => }/sheet1.csv (100%) rename how-to/{xlsx2json => }/sheet1.json (100%) rename how-to/{timefmt/demo.bash => timefmt-demo.bash} (100%) rename how-to/{timefmt/index.html => timefmt.html} (58%) rename how-to/{timefmt/index.md => timefmt.md} (84%) delete mode 100644 how-to/timefmt/nav.md rename how-to/{csvcleaner => }/trim.csv (100%) rename how-to/{csvfind => }/trimspace.csv (100%) rename how-to/{urlparse/demo.bash => urlparse-demo.bash} (100%) rename how-to/{urlparse/index.html => urlparse.html} (59%) rename how-to/{urlparse/index.md => urlparse.md} (93%) delete mode 100644 how-to/urlparse/nav.md create mode 100644 how-to/website.mak rename how-to/{xlsx2csv/demo.bash => xlsx2csv-demo.bash} (100%) rename how-to/{xlsx2csv/index.html => xlsx2csv.html} (58%) rename how-to/{xlsx2csv/index.md => xlsx2csv.md} (87%) delete mode 100644 how-to/xlsx2csv/MyWorkbook.xlsx delete mode 100644 how-to/xlsx2csv/expected3.txt delete mode 100644 how-to/xlsx2csv/nav.md rename how-to/{xlsx2json/demo.bash => xlsx2json-demo.bash} (100%) rename how-to/{xlsx2json/index.html => xlsx2json.html} (56%) rename how-to/{xlsx2json/index.md => xlsx2json.md} (83%) delete mode 100644 how-to/xlsx2json/MyWorkbook.xlsx delete mode 100644 how-to/xlsx2json/expected1.json delete mode 100644 how-to/xlsx2json/expected3.txt delete mode 100644 how-to/xlsx2json/nav.md delete mode 100644 license.html delete mode 100755 mk-website.bash delete mode 100644 nav.md delete mode 100644 nav.tmpl delete mode 100644 version.go diff --git a/Makefile b/Makefile index b7effa9..efe751b 100644 --- a/Makefile +++ b/Makefile @@ -70,9 +70,8 @@ $(MAN_PAGES): .FORCE man: $(MAN_PAGES) -website: - bash gen-nav.bash - bash mk-website.bash +website: .FORCE + make -f website.mak status: git status diff --git a/README.md b/README.md index b2fbdf3..2223d5c 100644 --- a/README.md +++ b/README.md @@ -2,46 +2,54 @@ datatools ========= -_datatools_ provides a variety of command line programs for working with -data in different formats as well as to ease Posix shell scripting -(e.g. writing scripts that run under Bash). The tools are group as data, -strings and scripting. - -For data --------- - -Command line utilities for simplifying work with CSV, JSON, TOML, YAML, -Excel Workbooks and plain text files or content. - -+ [csv2json](docs/csv2json/) - a tool to take a CSV file and convert it into a JSON array or a list of JSON blobs one per line -+ [csv2mdtable](docs/csv2mdtable/) - a tool to render CSV as a Github Flavored Markdown table -+ [csv2tab](docs/csv2tab/) - a tool to take a CSV file and convert to tab separated values -+ [csv2xlsx](docs/csv2xlsx/) - a tool to take a CSV file and add it as a sheet to a Excel Workbook -+ [csvcleaner](docs/csvcleaner/) - normalize a CSV file by column and row including trimming spaces and removing comments -+ [csvcols](docs/csvcols/) - a tool for formatting command line arguments into CSV row of columns or filtering CSV rows for specific columns -+ [csvfind](docs/csvfind/) - a tool for filtering a CSV file rows by column -+ [csvjoin](docs/csvjoin/) - a tool to join two CSV files on common values in designated columns, writes combined CSV rows -+ [csvrows](docs/csvrows/) - a tool for formatting command line arguments into CSV columns of rows or filtering CSV for specific rows -+ [json2toml](docs/json2toml/) - a tool for converting JSON to TOML -+ [json2yaml](docs/json2yaml/) - a tool for converting JSON to YAML -+ [jsoncols](docs/jsoncols/) - a tool for exploring and extracting JSON values into columns -+ [jsonjoin](docs/jsonjoin/) - a tool for joining JSON object documents -+ [jsonmunge](docs/jsonmunge/) - a tool to transform JSON documents into something else -+ [jsonrange](docs/jsonrange/) - a tool for iterating over JSON objects and arrays (return keys or values) -+ [tab2csv](docs/tab2csv/) - a tool to convert from tab separated values to comma separated values -+ [toml2json](docs/toml2json/) - a tool for converting TOML to JSON -+ [xlsx2csv](docs/xlsx2csv/) - a tool for converting Excel Workbooks sheets to CSV files -+ [xlsx2json](docs/xlsx2json/) - a tool for converting Excel Workbooks to JSON files -+ [yaml2json](docs/yaml2json/) - a tool for converting YAML files to JSON -+ [codemeta2cff](codemeta2cff.1.html) - a tool to convert a codemeta.json file into a CITATION.cff file. -+ [sql2csv](sql2csv.1.html) - a tool to execute a SQL query in MySQL or SQLIte3 and render the results in CSV encoding - - -Compiled versions are provided for Linux (amd64), Mac OS X (amd64), -Windows 10 (amd64) and Raspbian (ARM7). See https://github.com/caltechlibrary/datatools/releases. +_datatools_ is a rich collection of command line programs targetting +data conversion, cleanup and analysis directly from your favorite +POSIX shell. It has proven useful for data collaberations where +individual members of a project may prefer different toolsets in their +analysis (e.g. Julia, R, Python) but want to work from a common baseline. +It also has been used intensively for internal reporting from various +Caltech Library metadata sources. + +The tools fall into three broad categories + +- data transformation and conversion +- shell scripting helpers +- "string", a tool providing the common string operations missing from shell + +See [user manual](user-manual.md) for a complete list of the command line +programs. The data transformation tools include support for formats such as +Excel XML, csv, tab delimited files, json, yaml and toml. + +Compiled versions of the datatools collection are provided for Linux +(amd64), Mac OS X (amd64), Windows 10 (amd64) and Raspbian (ARM7). +See https://github.com/caltechlibrary/datatools/releases. Use "-help" option for a full list of options for each utility (e.g. `csv2json -help`). +Data transformation +------------------- + +The tooling around transformation includes data conversion. These +include tools that work with CSV, tab delimited, JSON, TOML, YAML +and Excel XML. + +There is also tooling to change data shapes using JSON as the +intermediate data format. + +For the shell +------------- + +Various utilities for simplifying work on the command line. + ++ [findfile](docs/findfile/) - find files based on prefix, suffix or contained string ++ [finddir](docs/finddir/) - find directories based on prefix, suffix or contained string ++ [mergepath](docs/mergepath/) - prefix, append, clip path variables ++ [range](docs/range/) - emit a range of integers (useful for numbered loops in Bash) ++ [reldate](docs/reldate/) - display a relative date in YYYY-MM-DD format ++ [reltime](docs/reltime/) - display a relative time in 24 hour notation, HH:MM:SS format ++ [timefmt](docs/timefmt/) - format a time value based on Golang's time format language ++ [urlparse](docs/urlparse/) - split a URL into parts + For strings ----------- @@ -71,26 +79,6 @@ Some of the features included See [string](docs/string/) for full details -For scripting -------------- - -Various utilities for simplifying work on the command line. - -+ [findfile](docs/findfile/) - find files based on prefix, suffix or contained string -+ [finddir](docs/finddir/) - find directories based on prefix, suffix or contained string -+ [mergepath](docs/mergepath/) - prefix, append, clip path variables -+ [range](docs/range/) - emit a range of integers (useful for numbered loops in Bash) -+ [reldate](docs/reldate/) - display a relative date in YYYY-MM-DD format -+ [reltime](docs/reltime/) - display a relative time in 24 hour notation, HH:MM:SS format -+ [timefmt](docs/timefmt/) - format a time value based on Golang's time format language -+ [urlparse](docs/urlparse/) - split a URL into parts - -Compiled versions are provided for Linux (amd64), Mac OS X (amd64), -Windows 10 (amd64) and Raspbian (ARM7). See https://github.com/caltechlibrary/datatools/releases. - -Use the utilities try "-help" option for a full list of options. - - Installation ------------ diff --git a/TODO.html b/TODO.html index 264b303..c16f70e 100644 --- a/TODO.html +++ b/TODO.html @@ -11,365 +11,195 @@
-

-Action Items -

-

-Bug -

+

Action Items

+

Bug

-

-Next -

+

Next

-

-Someday, Maybe -

+

Someday, Maybe

+ +

Completed