dotfiles

Dotfiles for my OpenBSD environment.
Log | Files | Refs

commit e56e59b35ad96cae864ce2486400e459e273f9bc
parent f444bf4f56a7ceaadbe3569d156c11b6d07b7a0c
Author: Matsuda Kenji <contact2655@matsudakenji.xyz>
Date:   Fri, 15 Jul 2022 12:48:22 +0900

modify scripts

Diffstat:
Mbin/chogo | 76++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mbin/kagero | 27+++++++++++++++++++++------
2 files changed, 63 insertions(+), 40 deletions(-)

diff --git a/bin/chogo b/bin/chogo @@ -1,37 +1,44 @@ #!/bin/sh usage(){ - echo 'usage: '$(basename "$0")' <command> [-d <depth>] <file>' + echo 'usage: '$(basename "$0")' [-d <depth>] <command> <file>' echo ' <command>: st|bs|cf|bf' } st(){ - #awk '{sum[$3]+=$4}END{for(key in sum){print key, sum[key]}}' "$1" | sort - awk -v depth=$depth '{split($3, a, ":") - for(k = 1; k <= depth; k++){ - if(k > length(a)){ - break; + if [ "$depth" -lt 0 ]; then + awk '{sum[$3]+=$4}END{for(key in sum){print key, sum[key]}}' | sort + else + awk -v depth=$depth '{ + split($3, a, ":") + for(k = 1; k <= depth; k++){ + printf "%s:", a[k] + if(k >= length(a)){ + break; + } } - printf "%s:", a[k] - } - printf "\b %s\n", $4 - }' "$1" + printf "\b %s\n", $4 + }' | + awk '{sum[$1]+=$2}END{for(key in sum){print key, sum[key]}}' | + sort + fi } bs(){ - st "$1" | + st | grep -e 'assets' -e 'liabilities' -e 'equity' } cf(){ #TODO: display in the same order with budget file - st "$1" | + # btw budget file doesn't exist + st | grep -e 'expenses' -e 'income' } bf(){ d=$(date "+%Y-%m-00") - bs "$1" | + bs | grep -v brought_forward | awk -v d="$d" '{printf "0 %s %s %d\n", d, $1, $2}' | awk -v d="$d" ' @@ -53,27 +60,28 @@ bf(){ } #main -if [ ! -n "$1" ]; then usage >&2; exit 1; fi -if [ ! -n "$2" ]; then usage >&2; exit 1; fi -if [ ! -f "$2" ]; then echo "file $2 not found" >&2; exit 1; fi - depth=3 -#TODO: read depth from option +while getopts d: opt; do + case $opt in + d) depth="$OPTARG" ;; ##TODO: check wether depth is number + *) usage >&2; exit 1 ;; + esac +done +shift $(($OPTIND - 1)) + +if [ ! -n "$1" ]; then usage >&2; exit 1; fi +if [ -n "$3" ]; then usage >&2; exit 1; fi +if [ -n "$2" ]; then + if [ ! -f "$2" ]; then echo "file $2 not found" >&2; exit 1; fi + cat "$2" +else + cat +fi | +sed '/^[:space:]*$/d' | case "$1" in - st) - st "$2" - ;; - bs) - bs "$2" - ;; - cf) - cf "$2" - ;; - bf) - bf "$2" - ;; - *) - usage >&2 - exit 1; - ;; + st) st ;; + bs) bs ;; + cf) cf ;; + bf) bf ;; + *) usage >&2; exit 1 ;; esac diff --git a/bin/kagero b/bin/kagero @@ -1,4 +1,6 @@ #!/bin/sh -e +#TODO: stat(1) is not in POSIX: 7/14 removed stat(1) but not yet tested well. +# pathnames should not contain white spaces man=$(pwd)/man pub=$(pwd)/pub @@ -49,8 +51,11 @@ render_sitemap(){ e=$(printf ' -name "*.html" ! -name "." ! -path "./error/*" ! -path "./draft/*"') echo '<?xml version="1.0" encoding="UTF-8"?>' echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' - (cd "$man" && eval "find . -type f $e $ignore \ - -exec stat -f '%Sm %N' -t '%Y-%m-%d' {} + ") | + (cd "$man" && eval "find . -type f $e $ignore" | + ls_files_with_date ) | + # I coded this line at night + #-exec stat -f '%Sm %N' -t '%Y-%m-%d' {} + ") | + sort -hr | sed 's! \./! /!;s!/index.html!/!' | sed -E 's;(^....-..-..?) (.*$);<url><loc>'"$url"'\2</loc><lastmod>\1</lastmod></url>;' echo '</urlset>' @@ -63,18 +68,28 @@ render_rss(){ render_weblog(){ e=$(printf ' -name "*.html" ! -name "." ! -path "./error/*" ! -path "./draft/*"') if [ -f "$weblog" ]; then - (cd "$man" && eval "find . -type f $e $ignore -newer $weblog \ - -exec stat -f '%Sm %N' -t '%Y-%m-%d' {} + ") | + (cd "$man" && eval "find . -type f $e $ignore -newer $weblog" | + ls_files_with_date ) | sort -h | sed 's! \./! /!' >> "$weblog" else - (cd "$man" && eval "find . -type f $e $ignore \ - -exec stat -f '%Sm %N' -t '%Y-%m-%d' {} + ") | + (cd "$man" && eval "find . -type f $e $ignore" | + ls_files_with_date ) | sort -h | sed 's! \./! /!' >> "$weblog" fi } +ls_files_with_date(){ + Y=$(date "+%Y") + ls -l $(cat) | + awk '{print $8, $6, $7, $9}' | + awk -v Y=$Y '$1!~/:/{print}$1~/:/{$1=Y; print}' | + sed 's/Jan/01/; s/Feb/02/; s/Mar/03/; s/Apr/04/; s/May/05/; s/Jun/06/; + s/Jul/07/; s/Aug/08/; s/Sep/09/; s/Oct/10/; s/Nov/11/; s/Dec/12/' | + awk '{printf "%s-%02s-%02s %s\n", $1, $2, $3, $4}' +} + # main should_exist_dir "$man" should_exist_dir "$pub"