Last active
May 6, 2023 04:46
-
-
Save yumaikas/39a8830adeb9e3556718e4be88d5380e to your computer and use it in GitHub Desktop.
Nushell snippet for timers, can be added to config.nu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def-env "timers init" [] { | |
if not ("~/.timers.nuon" | path exists) { | |
[{name: _default, start: (date now)}] | save -f ~/.timers.nuon | |
} | |
if not ("~/.timers_done.nuon" | path exists) { | |
[{name: '_default', duration: ((date now) - (date now)), ended: (date now)}] | save -f ~/.timers_done.nuon | |
} | |
} | |
def-env "timers start" [name] { | |
timers init | |
let timers = (open ~/.timers.nuon) | |
if $name in ($timers | get name) { | |
echo $"Timer ($name) already started" | |
} else { | |
$timers | append {name: $name, start: (date now)} | save -f ~/.timers.nuon | |
} | |
} | |
def to-duration [col] { | |
update $col { |it| (date now) - ($it | get $col) } | |
} | |
def-env "timers active" [] { | |
timers init | |
open ~/.timers.nuon | where name != "_default" | to-duration start | rename name duration | |
} | |
def-env "timers end" [name] { | |
timers init | |
let timers = (open ~/.timers.nuon) | |
let completed = (open ~/.timers_done.nuon) | |
if not ($name in ($timers | get name)) { | |
echo $"Timer ($name) not started" | |
} else { | |
$timers | where name != $name | save -f ~/.timers.nuon | |
$completed | |
| append ( | |
$timers | |
| where name == $name | |
| select name start | |
| to-duration start | |
| rename name duration | |
| insert ended (date now) | |
) | |
| save -f ~/.timers_done.nuon | |
} | |
} | |
def is-today [dt] { | |
let to_compare = ($dt | date to-record | select year month day) | |
let today = (date now | date to-record | select year month day) | |
return ($to_compare == $today) | |
} | |
def-env "timers from today" [] { | |
timers init | |
open ~/.timers_done.nuon | where name != "_default" | where (is-today $it.ended) | |
} | |
def-env "timers summary" [] { | |
timers from today | |
| group-by name | |
| transpose name entries | |
| update entries { |it| $it.entries | get duration | math sum } | |
| rename name total_duration | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment