X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=2287d32ceffacaaed5496b36cc7761a5670a8a0e;hb=c17be636ca003e34172250a5f494f65b901fa27e;hp=fd9beaff2eacb0706b6bbf549e92ac9227dd6be8;hpb=3008cd5176a3b28768c1491853438e3df3dc7533;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index fd9beaf..2287d32 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -1,8 +1,97 @@ +# + +d() { + local -r word=$(fzf < /usr/share/dict/words) + dict "$word" +} + +shell_activity_report() { + # TODO: optional concrete number output + # TODO: manual weekday calc (since forking date is so expensive) + # TODO: optional combinations of granularities: hour, weekday, month, year + history \ + | awk ' + { + # NOTE: $2 & $3 are specific to oh-my-zsh history output + date = $2 + time = $3 + d_fields = split(date, d, "-") + t_fields = split(time, t, ":") + if (t_fields && d_fields) { + # +0 to coerce number from string + month = d[2] + 0 + hour = t[1] + 0 + c = count[month, hour]++ + } + if (c > max) + max = c + } + + END { + m[ 1] = "January" + m[ 2] = "February" + m[ 3] = "March" + m[ 4] = "April" + m[ 5] = "May" + m[ 6] = "June" + m[ 7] = "July" + m[ 8] = "August" + m[ 9] = "September" + m[10] = "October" + m[11] = "November" + m[12] = "December" + for (month = 1; month <= 12; month++) { + printf "%s\n", m[month]; + for (hour=0; hour<24; hour++) { + c = count[month, hour] + printf " %2d ", hour + for (i = 1; i <= (c * 100) / max; i++) + printf "|" + printf "\n" + } + } + }' +} + +top_commands() { + history \ + | awk ' + { + count[$4]++ + } + + END { + for (cmd in count) + print count[cmd], cmd + }' \ + | sort -n -r -k 1 \ + | head -50 \ + | awk ' + { + cmd[NR] = $2 + c = count[NR] = $1 + 0 # + 0 to coerce number from string + if (c > max) + max = c + } + + END { + for (i = 1; i <= NR; i++) { + c = count[i] + printf "%s %d ", cmd[i], c + scaled = (c * 100) / max + for (j = 1; j <= scaled; j++) + printf "|" + printf "\n" + } + }' \ + | column -t +} + # Top Disk-Using directories # TODO: Consider using numfmt instead of awk tdu() { du "$1" \ - | sort -n -k 1 -r --parallel="$(nproc)" \ + | sort -n -k 1 -r \ | head -50 \ | awk ' { @@ -89,6 +178,23 @@ howto() { cat "$(find ~/Archives/Documents/HOWTOs -mindepth 1 -maxdepth 1 | sort | fzf)" } +yt() { + local _yt_uri + local _yt_id + local _yt_title + local _yt_dir + + _yt_uri="$1" + _yt_id=$(youtube-dl --get-id "$_yt_uri") + _yt_title=$(youtube-dl --get-title "$_yt_uri") + _yt_dir="${DIR_YOUTUBE}/individual-videos/${_yt_title}--${_yt_id}" + + mkdir -p "$_yt_dir" + cd "$_yt_dir" || exit 1 + echo "$_yt_uri" > 'uri' + youtube-dl -c --write-description --write-info-json "$_yt_uri" +} + gh_fetch_repos() { curl "https://api.github.com/$1/$2/repos?page=1&per_page=10000" } @@ -123,7 +229,7 @@ gh_clone_repo() { work_log_template() { cat << EOF -$(date +%F) +$(date '+%F %A') ========== Morning report