commit e56e59b35ad96cae864ce2486400e459e273f9bc
parent f444bf4f56a7ceaadbe3569d156c11b6d07b7a0c
Author: Matsuda Kenji <contact2655@matsudakenji.xyz>
Date: Fri, 15 Jul 2022 12:48:22 +0900
modify scripts
Diffstat:
M | bin/chogo | | | 76 | ++++++++++++++++++++++++++++++++++++++++++---------------------------------- |
M | bin/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"