diff options
author | Jakob Kaivo <jkk@ung.org> | 2018-10-14 15:10:29 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2018-10-14 15:10:29 -0400 |
commit | e91f71c43b79667e9cf73aeef73e028ac16c515b (patch) | |
tree | b87b98a00d87d452324cd6b6d0a7a5b322069802 | |
parent | dd6d50cd8b85496c5baf7683311d95ba926c2122 (diff) |
merge back into one file using stupid sh tricks to exec awk from sh
-rwxr-xr-x | color-ls | 95 | ||||
-rwxr-xr-x | color-ls.awk | 114 |
2 files changed, 94 insertions, 115 deletions
@@ -37,4 +37,97 @@ done shift $(($OPTIND - 1)) -exec ls -${options}F${one:-1} -- ${1+$*} | awk -vtrim=${trim:-1} -voutput=${output:-C} -f $(dirname $0)/color-ls.awk +exec ls -${options}F${one:-1} -- ${1+$*} | awk -vtrim=${trim:-1} -voutput=${output:-C} "$(tail -n +42 $0)" +exit + + +BEGIN { + long = 0; + widest = 0; + if (output == "l" || output == "o" || output == "n" || output == "g") { + long = 1; + } + columns = ENVIRON["COLUMNS"]; + if (columns == 0) { + columns = 80; + } +} + +function columns_output() { + width = widest + 1; # include a space + printfwidth = width + 9; # account for color escape sequences + ncolumns = int(columns / width); + nrows = int(NR / ncolumns) + 1; + + for (row = 0; row < nrows; row++) { + for (column = 0; column < ncolumns; column++) { + f = (column * nrows) + row + 1; + if (f <= NR) { + printf("%-*s", printfwidth, file[f]); + } + } + printf("\n"); + } +} + +function row_output() { + width = widest + 1; # include a space + printfwidth = width + 9; # account for color escape sequences + column = 0; + + for (i = 1; i <= NR; i++) { + column += width; + if (column > columns) { + printf("\n"); + column = width; + } + printf("%-*s", printfwidth, file[i]); + } + + if (column != 0) { + printf("\n"); + } +} + +function long_output() { + for (i = 1; i <= NR; i++) { + printf("%s\n", file[i]); + } +} + +function comma_output() { + for (i = 1; i <= NR; i++) { + printf("%s%s", i == 1 ? "" : ", ", file[i]); + } + printf("\n"); +} + +{ color=39; } +/\/$/ || (long && /^d/) || (long && $0 == $1) { color=34; } +/\*$/ || (long && /^-/ && $1 ~ /x/){ color=32; } +/\|$/ || (long && /^p/) { color=33; } +/@$/ || (long && /^l/) { color=35; } + +{ + if (trim == 1) { + gsub(/[\/\*\|@]$/, ""); + } + + if (length > widest) { + widest = length; + } + + file[NR] = "\033[" color "m" $0 "\033\[0m"; +} + +END { + if (output == "x") { + row_output(); + } else if (output == "C") { + columns_output(); + } else if (output == "m") { + comma_output(); + } else { + long_output(); + } +} diff --git a/color-ls.awk b/color-ls.awk deleted file mode 100755 index 2399736..0000000 --- a/color-ls.awk +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/sh - -# MIT License -# -# Copyright (c) 2018 Jakob Kaivo -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -BEGIN { - long = 0; - widest = 0; - if (output == "l" || output == "o" || output == "n" || output == "g") { - long = 1; - } - columns = ENVIRON["COLUMNS"]; - if (columns == 0) { - columns = 80; - } -} - -function columns_output() { - width = widest + 1; # include a space - printfwidth = width + 9; # account for color escape sequences - ncolumns = int(columns / width); - nrows = int(NR / ncolumns) + 1; - - for (row = 0; row < nrows; row++) { - for (column = 0; column < ncolumns; column++) { - f = (column * nrows) + row + 1; - if (f <= NR) { - printf("%-*s", printfwidth, file[f]); - } - } - printf("\n"); - } -} - -function row_output() { - width = widest + 1; # include a space - printfwidth = width + 9; # account for color escape sequences - column = 0; - - for (i = 1; i <= NR; i++) { - column += width; - if (column > columns) { - printf("\n"); - column = width; - } - printf("%-*s", printfwidth, file[i]); - } - - if (column != 0) { - printf("\n"); - } -} - -function long_output() { - for (i = 1; i <= NR; i++) { - printf("%s\n", file[i]); - } -} - -function comma_output() { - for (i = 1; i <= NR; i++) { - printf("%s%s", i == 1 ? "" : ", ", file[i]); - } - printf("\n"); -} - -{ color=39; } -/\/$/ || (long && /^d/) || (long && $0 == $1) { color=34; } -/\*$/ || (long && /^-/ && $1 ~ /x/){ color=32; } -/\|$/ || (long && /^p/) { color=33; } -/@$/ || (long && /^l/) { color=35; } - -{ - if (trim == 1) { - gsub(/[\/\*\|@]$/, ""); - } - - if (length > widest) { - widest = length; - } - - file[NR] = "\033[" color "m" $0 "\033\[0m"; -} - -END { - if (output == "x") { - row_output(); - } else if (output == "C") { - columns_output(); - } else if (output == "m") { - comma_output(); - } else { - long_output(); - } -} |