#yaml #applications #group #file #expense #stupid #refund

app minicount

一个小型退款应用程序

5个版本

0.2.3 2024年5月13日
0.2.2 2024年4月19日
0.2.1 2024年4月18日
0.2.0 2024年4月18日
0.1.0 2024年4月18日

2 in #stupid

Download history 227/week @ 2024-04-13 47/week @ 2024-04-20 2/week @ 2024-04-27 131/week @ 2024-05-11 39/week @ 2024-05-18 2/week @ 2024-05-25 3/week @ 2024-06-08 2/week @ 2024-06-15 4/week @ 2024-06-29 18/week @ 2024-07-06 65/week @ 2024-07-27

83 个月下载量

AGPL-3.0-or-later

24KB
402 行代码(不包括注释)

Minicount,一个小型退款应用程序

Minicount 是一个基于控制台的,自由软件版本的 Tricount 应用程序。

它的目标是使用一种 KISS原则 来最小化一群人的还款次数:没有手机应用,没有数据库,没有服务器。

在 yaml 文件中描述你的费用,让 minicount 输出详细信息。

查看 example.yml 文件以了解语法并创建自己的。

调用

Tricount基本上将一个像这样的 yaml 文件

$cat example.yml
# In this example, we have 3 people: Alice, Bob and Charly
---
# Alice paid a pizza for Bob (and for herself)
- who: Alice
  price: 35
  what: pizza
  for:
      - Alice
      - Bob
# Alice paid a restaurant to eveybody, no need to add all names
- who: Alice
  price: 100
  what: sunday's restaurant
# Charly paid some books for Bob
- who: Charly
  price: 53
  what: books
  for: [Bob]
# Bob paid ice creams to Charly and Alice
- who: Bob
  price: 35
  what: ice creams
  for: [Alice, Charly]

转换为你可以发送给朋友的文本报告

$ minicount example.yml

# Bills
- Alice paid 35.00 (pizza for Alice, Bob)
- Alice paid 100.00 (sunday's restaurant for everybody)
- Charly paid 53.00 (books for Bob)
- Bob paid 35.00 (ice creams for Alice, Charly)

# Balances
- Bob: +68.83
- Charly: -2.17
- Alice: -66.67

# Refunds
- Bob pays 66.67 to Alice
- Bob pays 2.17 to Charly

方法

在源代码中可以找到完整的解释(见 src/main.rs)。

我在一个复杂示例中得到了与 Tricount 应用程序相同的结果,所以我假设算法是相同的。

安装说明

$ cargo install minicount

构建说明

您需要安装 Rustlang 然后构建项目

$ cargo build --release

您将在 target/release/minicount 中找到程序。

许可证

整个项目都在 GNU Affero 通用公共许可证 v3 (AGPL-3.0) 下许可。

GNU Affero 通用公共许可证可以在 https://www.gnu.org/licenses/agpl.html 找到。

有关 AGPL-3.0 的概述,请参阅 tldrlegal

依赖项

~9–36MB
~530K SLoC