11 个版本
0.2.1 | 2021年7月5日 |
---|---|
0.2.0 | 2020年6月4日 |
0.1.8 | 2019年12月23日 |
0.1.7 | 2019年9月16日 |
0.1.0 | 2019年1月22日 |
#264 in 日期和时间
34KB
630 行
Work Tock
一个命令行工作跟踪程序。
请参阅文档了解基本文件格式
否则,--help 命令应该足够有用。
基本用法
您可以使用此程序进行打卡
work_tock -i <JobName>
下班打卡
work_tock -o
或使用标志打印最近的打卡记录
work_tock --job_s dothing -p --since 03/04/2020
程序使用单个文本文件,如果需要可以轻松编辑。程序将永远不会覆盖您的文件,只会读取和追加,因此该文件中的所有数据将保持不变。
要设置核心文件的位置,您程序的默认配置可以在 "$HOME/.config/work_tock/init.toml" 中找到
[config]
# Set path the the current working file
# anything within "{}" is read as an environment variable
file="{HOME}/<path>/<to>/<file>"
#Optional require all job entries to be snake_case
snake=true
#camel=true #if you prefer camelCase
一个标准的文件看起来像这样
$home_jobs[car_wash,eat]
23/01/2019
car_wash,12:30-13:50
15:00,#car_wash is implied by previous Job
programming,16:00,#Clockout for car_wash is implied by new Job
eat,17:00
-18:00,#Clockout
24/01/2019
12:00,#Eating is implied as it was the last job
-13:00
programming,14:00
-16:00
- 逗号和换行符开始新条目
- 空白字符在逗号或换行符两侧被忽略
- 工作项仅由字母组成
- 打卡时间为 "hh:mm"
- 下班打卡时间为 "-hh:mm"
- 标签以 "_" 开始,可以用 "__" 清除
- 日期为 dd/mm/yyyy,但如果您设置 year=2019,则日期可以是 dd/mm。
- 组由以下格式定义:
$group_name[list,of,jobs,in,group]
每个打卡都将使用最近的任务、日期和标签
因此,给定的示例文件 work_tock
将产生
{"car_wash": 02:20, "eat": 04:00, "programming": 01:00}
Total Time = 07:20
打印和过滤
使用 "-p" 将打印所有条目,但如果您想更具体,可以应用过滤条件,-p 将只打印通过该过滤条件的条目。
注意:-t 用于今天的选项原来使用的是 -d,现在用于指定要工作的日期
要获取更相关的数据,您可以使用如 "-t":今天,或 "--day 3/1/2019",或按工作项过滤
例如:work_tock -p --job car_wash
将返回
23/01/2019
car_wash: 12:30-13:50 = 01:20 => 01:20
car_wash: 15:00-16:00 = 01:00 => 02:20
{"car_wash": 02:20}
Total Time = 02:20
或 work_tock -p --group home_jobs
将产生
Filtering by group home_jobs
23/01/2019
car_wash: 12:30-13:50 = 01:20 => 01:20
car_wash: 15:00-16:00 = 01:00 => 02:20
eat: 17:00-18:00 = 01:00 => 03:20
24/01/2019
eat: 12:00-13:00 = 01:00 => 04:20
{"car_wash": 02:20, "eat": 02:00}
Total Time = 04:20
Tab 自动补全
bash
将以下内容添加到您的 bashrc 文件中
_work_tock_complete(){
local COMPLETES=$(work_tock complete)
COMPREPLY=( $(compgen -W "$COMPLETES" -- ${COMP_WORDS[COMP_CWORD]}) )
return 0
}
complete -F _work_tock_complete work_tock
ru_shell
将以下之一添加到 "$HOME/.config/ru_shell/init.rush"
#if first entry create a map object
let RU_COMPLETE={work_tock= r#"$[work_tock complete]"#}
#else add the map that already exists
push RU_COMPLETE={work_tock= r#"$[work_tock complete]"#}
获取更多信息,请使用 work_tock --help
更改
v 0.2.1
启用Tab自动补全
v 0.2.0
- 现在具有工作分组功能,允许您定义一组工作
- 现在允许您在配置文件中要求使用驼峰或蛇形命名
v 0.1.8
- 现在不存在 --outat,请改用 -o -a
- 现在使用 -a(时间)和 -d(日期)来设置日期和时间,而不是使用逗号分隔的解析。
为了帮助解决由于忘记昨天打卡而出现的问题,可以使用 -y 将当前天视为昨天,例如:昨天我12:00打卡,但忘记在17:00打卡
work_tock -oy -a 17:00
表示
work_tock out yesterday at 17:00
v 0.1.7
错误修复 -- 现在可以正确处理空文件(Oops)
现在接受 -q 选项以对先前工作打卡
v 0.1.6
增加了对不同日期登录和登出的错误处理。
交换了登录顺序和打印语句的顺序,以包括打印语句中的当前登出。
v 0.1.5
记录了使用 toml 而不是 lazyf 的用法
v 0.1.4
将库与应用程序分离
v 0.1.3
尝试在 Cargo 中显示存储库和文档
v 0.1.2
将文档添加到 readme 中
v 0.1.1
添加了基本用法文档
依赖项
~3–4MB
~69K SLoC