#hours #tracker #work #timesheet #command-line #clockin

bin+lib work_tock

一个用于跟踪各个项目时间的程序

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 日期和时间

MIT 许可证

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