#时间 #时间跟踪 #json文件 #时间段 #线条 #数据 #记录

app reti

reti 允许您通过跟踪一天中的时间段来通过 CLI 记录时间。所有数据都存储在 json 文件(store)中。

1 个不稳定版本

0.2.0 2021年1月6日

#428日期和时间

BSD-3-Clause

62KB
1.5K SLoC

reti - Rust中的时间记录

License Build status Crates.io

reti 允许您通过在一天中的时间段进行跟踪来通过 CLI 记录时间。所有数据都存储在 json 文件(store)中。

背景

一段时间前,我开始感到有必要跟踪我工作的小时数。我开始在文本文件中跟踪时间,并编写了一个简单的 Python 脚本来解析、计数和汇总条目。条目基于行,这意味着每一行恰好包含一天的所有时间段、因子和注释。

# date          parts with factor            comment
# yyyy-mm-dd    separated by ' '
#               (value of last '-'
#               i.e. '...-1', 1 if
#               not present)

2016-04-02     08:00-12:00-1 13:00-17:00 19:00-21:00-1.5  # long day

# the line above consits of 3 parts, where the last part (19-21) has a factor of
# 1.5 of the base fee

日期也可以仅指定为 mm-dd,此时假定当前年份。

除了这有点笨拙之外,我还想继续使用 Rust,这让我有了实现某种东西并存储数据的另一种格式的想法。

然而,由于上面指定的格式在 your-favorite-editor 中很容易理解和编辑,reti 继续在编辑条目时使用此格式。

安装

通过 Cargo

从 crates.io 安装 reti

> cargo install reti

从源代码构建

克隆仓库

> git clone https://github.com/awidegreen/reti.git
> cd reti

通过 cargo 构建 和安装。注意您需要相当新的 Rust 版本。

> cargo install --path .

二进制发行版

Github 发布页面 获取最新发行版。

功能

如前所述,reti 在单个文件上工作,可以使用 -f 指定。

# use the 'year2016.json' for all reti subcommands
$ reti -f year2016.json show

记录

每一天由时间段组成(部分),例如午餐前后的工作时间,其中午餐被视为休息时间。如果时间段需要按加班计算,则可以为时间段分配一个因子。此因子基于通过 reti set fee <val> 设置的文件特定基本费率。

# show help for adding
$ reti add help

# help for adding parts
$ reti add part -h

# record a period (part) for the current day (from 08 to 12).
$ reti add part 08:00 12:00

# add via parse will parse the provided data as legacy format
$ reti add parse 04-02 08:00-12:00

显示

可以通过 show 子命令显示记录的数据(每个 store)。这包括以不同详细程度显示一天、一周、一个月和一年的数据(请参阅 reti show help)。

输入 reti show help 以获取详细说明和一些示例

# show a summary of the current mont
$ reti show month

# get a verbose (-v) summary of year 2016 in the 'bla.json' file.
# all days (-d) and all their parts (-p) will be shown
$ reti -f bla.json show -p -v -d year 2016

导入

仍然可以使用“传统”格式导入文件...手动编辑文本文件比编写JSON更容易。

编辑

可以使用 edit 子命令更改现有条目。所有请求的条目将按 传统 格式(每行)在临时文件中查询和显示。一旦保存并退出 $EDITOR,条目将被解析并覆盖。如果某行应被忽略,则可以保持其不变,注释掉(# ...)或从文件中删除该行。

# edit the current day in $EDITOR from file foo.json
$ reti -f foo.json edit

getset 文件属性

为了允许 reti 进行费用计算,可以设置基本费用

# set fee configured for file bla.json
$ reti -f bla.json set fee 50

费用不受任何货币的限制 - 保持简单。一天中的每一部分都可以是基本费用的一个因子,其中默认因子为 1

# get the current fee for bla.json
$ reti -f bla.json get fee

入门

创建一个新的商店文件。

# init file 2016.json (empty)
$ reti init 2016.json

# alternative init a file with a legacy (e.g. under examples/test_leg_format.txt)
$ reti init 2016..json examples/test_leg_format.txt

# show the whole year
$ reti -f 2016.json show -p -d year 2016

# set some arbitrary fee per hour
$ reti -f 2016.json set fee 250
# show year should show some proper calculation now
$ reti -f 2016.json show -p -d year 2016

# edit a specific date, e.g. change end time and comment to 3h
$ reti -f 2016.json edit 2016-08-27
# check if everything was updates
$ reti -f 2016.json show -p -d year 2016

# edit mulitple days, only September
$ reti -f 2016.json edit 2016-09-01 2016-09-02

配置文件

reti 支持配置文件,可以在 $XDG_CONFIG_DIR/reti/reti.toml(例如 $HOME/.config/reti/reti.conf)中预先定义某些属性,这些属性在 reti 启动时使用。

  • storage-file:默认 JSON 存储文件的路径(字符串)
  • save-pretty:指定 JSON 文件是否应可读(布尔值)

可以使用命令行参数覆盖这些属性,请参阅帮助。

示例配置文件:$HOME/.config/reti/reti.toml

storage-file = "/home/awidegreen/reti_2018.json"

免责声明

自行承担风险使用

许可证

版权(C)2018 由 Armin Widegreen

这是免费软件,根据 The BSD-3-Clause 许可。

依赖项

~6–15MB
~194K SLoC