## p : string -> unit
p() {
+ local -r usage='Usage: p [FILE] NAME'
+ local name
+ local file
+
+ case "$#" in
+ 0)
+ echo "$usage" >&2
+ return 1;;
+ 1)
+ file=~/._p/p
+ name="$1";;
+ 2)
+ file="$1"
+ name="$2";;
+ *)
+ echo "$usage" >&2
+ return 1;;
+ esac
+
awk \
- -v _s="$1" \
+ -v _s="$name" \
'
BEGIN {_s = tolower(_s)}
u = tmp
printf("%d [C] s:\"%s\", e:\"%s\", u:\"%s\"\n", n, s, e, u) > "/dev/stderr"
}
-
- printf "%s", p # XXX Intentionally avoiding newline in the result.
+ ps[n] = p
}
END {
+ printf "%s", ps[n] # XXX Intentionally avoiding newline in the result.
if (n == 1) {
exit 0
} else if (n == 0) {
exit 1
} else if (n > 1) {
# TODO fzf-select which of the records the user (ahem, me) wants.
- printf "[WARNING] Found more than one record.\n" > "/dev/stderr"
+ printf "[WARNING] Found more than one record. Selecting the last one.\n" > "/dev/stderr"
exit 0
}
}
' \
- ~/._p/p \
+ "$file" \
| xsel -i -b -t 30000
}
git clone "$1"
}
-todo() {
+bar() {
+ local -r len="${1:-79}" # 1st arg or 79.
+ local -r char="${2:--}" # 2nd arg or a dash.
+ for _ in {1.."$len"}; do
+ printf '%c' "$char";
+ done
+}
+
+daily_todo_file_template() {
+cat << EOF
+===============================================================================
+$(date '+%F %A')
+===============================================================================
+
+-------------------------------------------------------------------------------
+TODAY
+-------------------------------------------------------------------------------
+
+
+-------------------------------------------------------------------------------
+CURRENT
+-------------------------------------------------------------------------------
+
+
+-------------------------------------------------------------------------------
+BLOCKED
+-------------------------------------------------------------------------------
+
+
+-------------------------------------------------------------------------------
+BACKLOG
+-------------------------------------------------------------------------------
+EOF
+}
+
+today() {
local date
- local timestamp
- local bar
- date=$(date +%F)
- timestamp=$(date '+%F %A')
- bar=$(for _ in {1..80}; do printf '='; done)
+ date="$(date +%F)"
local -r dir="$DIR_TODO/daily"
local -r file="$dir/$date.txt"
mkdir -p "$dir"
if [ ! -f "$file" ]
then
- printf '%s\n%s\n%s\n' "$bar" "$timestamp" "$bar" > "$file"
+ daily_todo_file_template > "$file"
fi
- cd "$DIR_TODO" && "$EDITOR" "$file"
+ cd "$DIR_TODO" && "$EDITOR" $EDITOR_ARGS "$file"
+}
+
+todo() {
+ cd "$DIR_TODO" && "$EDITOR" TODO
}
work_log_template() {