I needed a simple tool to track my work time. This is exactly what I was looking for.
-- myself
# Adding entries for today
$ punch-card start now
$ punch-card stop 12:00
$ punch-card 13:00-17:00
$ punch-card punch
# Adding entries for an arbitrary day
$ punch-card start 09:00 12.12.2021
$ punch-card stop 12:00 12.12.2021
$ punch-card 13:00-17:00 12.12.2021
$ punch-card today
╭──────────────────╮
│ 📅 05.11.2021 │
╰──────────────────╯
╭──────────────────┬──────────────────┬──────────────────┬──────────────────╮
│ Entries │ Total hours │ Diff │ Project │
├──────────────────┼──────────────────┼──────────────────┼──────────────────┤
│ 08:30 - 11:45 │ │ │ │
│ 12:45 - 18:15 │ 8:45 │ +0:45 │ │
╰──────────────────┴──────────────────┴──────────────────┴──────────────────╯
$ punch-card 05.11.2021
╭──────────────────╮
│ 📅 05.11.2021 │
╰──────────────────╯
╭──────────────────┬──────────────────┬──────────────────┬──────────────────╮
│ Entries │ Total hours │ Diff │ Project │
├──────────────────┼──────────────────┼──────────────────┼──────────────────┤
│ 08:30 - 11:45 │ │ │ Project A │
│ 12:45 - 18:15 │ 8:45 │ +0:45 │ Project B │
╰──────────────────┴──────────────────┴──────────────────┴──────────────────╯
$ punch-card month
╭──────────────────╮
│ 📅 Nov 2021 │
╰──────────────────╯
╭──────────────────┬──────────────────┬──────────────────┬──────────────────╮
│ Day │ Total hours │ Diff │ Projects │
├──────────────────┼──────────────────┼──────────────────┼──────────────────┤
│ Mon 01.11.2021 │ 8:00 │ 0:00 │ │
│ Tue 02.11.2021 │ 8:00 │ 0:00 │ │
│ Wed 03.11.2021 │ 7:30 │ -0:30 │ │
│ Thu 04.11.2021 │ 7:00 │ -1:00 │ │
│ Fri 05.11.2021 │ 8:45 │ +0:45 │ │
╰──────────────────┴──────────────────┴──────────────────┴──────────────────╯
╭──────────────────┬──────────────────┬──────────────────╮
│ Total │ 39:15 │ -0:45 │
╰──────────────────┴──────────────────┴──────────────────╯
sudo snap install punch-card
First you'll need to install Crystal.
$ git clone git@github.com:koffeinfrei/punch-card.git
$ cd punch-card
$ shards build --release
$ cp bin/punch-card <some directory in your $PATH>
- Fork it (https://github.com/koffeinfrei/punch-card/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Semantic Versioning is used, obviously.
There's a script that bumps the version in all necessary files and creates a git tag.
# bump the major version, e.g. from 1.2.0 to 2.0.0
$ scripts/version bump:major
# bump the minor version, e.g. from 1.2.0 to 1.3.0
$ scripts/version bump:minor
# bump the patch version, e.g. from 1.2.0 to 1.2.1
$ scripts/version bump:patch
$ snapcraft
...
Snapped punch-card_<version>_amd64.snap
$ snapcraft upload punch-card_<version>_amd64.snap
...
Revision <revision> created for 'punch-card'
$ snapcraft release punch-card <revision> candidate
$ snapcraft release punch-card <revision> stable
Made with ☕️ by Koffeinfrei