#gitlab #time #gitlab-api #productivity #logs #command-line-tool #time-tracking

app gitlab-timelogs

CLI utility to assist you with your time logs in GitLab. gitlab-timelogs is not associated with the official GitLab project!

7 unstable releases (3 breaking)

new 0.4.0 Sep 3, 2024
0.3.0 Aug 26, 2024
0.2.2 Jul 4, 2024
0.1.1 Jul 4, 2024
0.1.0 Jun 27, 2024

#117 in Command line utilities

Download history 97/week @ 2024-06-22 336/week @ 2024-06-29 79/week @ 2024-07-06 1/week @ 2024-07-13 58/week @ 2024-07-27 147/week @ 2024-08-24 153/week @ 2024-08-31

300 downloads per month

MIT license

260KB
587 lines

gitlab-timelogs CLI

CLI utility to assist you with your time logs in GitLab. The GitLab web UI for time logs is very rudimentary and the UX is poor (June 2024, GitLab 16.11), especially a summary view is missing. This is where gitlab-timelogs help you by leveraging the GitLab API.

This CLI is made by developers for developers who want to check their timelogs at the of the work day or week. gitlab-timelogs is not associated with the official GitLab project!

screenshot.png (The screenshot is slightly outdated. The latest version shows more information.)

Features

gitlab-timelogs provides you with an overview of your time logs and prints warnings for typical mistakes. It does not allow you to modify entries, but just to inspect existing records, so you can fix them in GitLab (if necessary).

  • ✅ collect time logs from issues (timelogs associated with MRs currently not supported)
  • ✅ group them by week
  • ✅ specify time range
  • ✅ print warnings for common pitfalls:
    • accounted less than 15 minutes to an issue (typically a mistake)
    • accounted time to a Saturday or Sunday (not common in normal positions)
    • accounted more than 10h a day (10h is the legal maximum in Germany)
  • ✅ Created for GitLab 16.11. Older and newer versions should work as well, but haven't been tested. Note that the free tier may not support time logs, but only the enterprise edition.

Supported Platforms

(For compilation and running.)

gitlab-timelogs builds and runs at least on the following platforms:

  • Linux (all architectures, I guess?)
  • MacOS (all architectures, I guess?)
  • Windows (all architectures, I guess?)

Note that I only tested recent versions of these OSs in Mid-2024. Older versions of these systems should work as well.

Consume / Install

Via cargo:

  • $ cargo install https://github.com/phip1611/gitlab-timelogs

Via Nix / on NixOS:

  • Option A: Add gitlab-timelogs.nixosModules.default (gitlab-timelogs is referring to the flake input) to the modules of your NixOS configuration, which will add gitlab-timelogs to your system-wide packages.
  • Option B:
    • B1: $ nix shell github:phip1611/gitlab-timelogs
    • B2: $ nix run github:phip1611/gitlab-timelogs -- <args>
  • Option C: add this flake as input and add the package into your system config

Via home-manager:

  1. import the home-manager module: gitlab-timelogs.nixosModules.home-manager
  2. enable and configure gitlab-timelogs:
gitlab-timelogs = {
  enable = true;
  config = {
    gitlabHost = "gitlab.example.com";
    gitlabUsername = "exampleuser";
    # Either write as a string here, or read from a file that you do not push:
    gitlabToken = with builtins; readFile (toPath ./gitlab-token.txt);
  };
};

Usage

  • $ gitlab-timelogs --help
  • $ gitlab-timelogs --host gitlab.vpn.cyberus-technology.de --username pschuster --token ********** --after 2024-06-01 --before 2024-06-30

Configuration

  1. Via CLI options. Type --help for guidance.
  2. Via environment variables:
    • GITLAB_HOST
    • GITLAB_USERNAME
    • GITLAB_TOKEN
  3. Via a configuration file either in ~/.config/gitlab-timelogs/config.toml (UNIX) or
    %LOCALAPPDATA%/gitlab-timelogs/config.toml (Windows) with the following content: \
    gitlab_host = "gitlab.example.com"
    gitlab_username = "<user>"
    gitlab_token = "<token>"
    

MSRV

The MSRV is Rust stable 1.74.0.

Trivia

The main motivation to create this was the unbelievable poor UX of the GitLab web UI for time logs. For example, the input mask transformed a 1h 30 to 3d 7h instead of 1h 30m. This common pitfall was unbelievable annoying and hard to spot - badly influencing a lot of our time records.

Hence, I created this as part of my work time at Cyberus Technology GmbH to boost our internal productivity. We love open source! Interested in a cool employer? Contact us!

Dependencies

~8–21MB
~328K SLoC