#gitlab #starship #cli

app starship-gitlab

GitLab Custom Command for starship.rs

3 releases

0.1.4 Nov 10, 2021
0.1.2 Sep 23, 2021
0.1.1 Sep 21, 2021

#47 in #gitlab

MIT license

54KB
1K SLoC

🏭 starship-gitlab

This is not an official starship.rs project.

WIP project for showing GitLab Pipeline status on terminal with starship.rs.

Installation

Currently, starship-gitlab is only installable through cargo by running:

cargo install starship-gitlab

Installation from source:

cargo install --git https://gitlab.com/Kores/starship-gitlab

May need additional dependencies, such as git

Configuration

Update your ~/.config/starship.toml adding the following lines:

[custom.starship_gitlab]
command = "starship-gitlab"
directories = [".git"]
format = "[$output]($style)"

Example

Example

Configure your PAT token for a Gitlab host

To retrieve Pipeline information of private repos you will need to register an access token.

Personal Token

starship-gitlab token-set --host gitlab.com --personal-token TOKEN

Project Token

starship-gitlab token-set --host gitlab.com --project-token TOKEN

OAuth2 Token

starship-gitlab token-set --host gitlab.com --oauth2-token TOKEN

Caching

starship-gitlab uses sled database for caching, this reduces the amount of queries to Gitlab and avoids expressive lag in command execution.

Rate Limit

Gitlab does have a rate-limit, reported in HTTP Headers when requesting resources to Gitlab API. At the time that this documentation was written, there was rate limit of 2000 unauthenticated requests.

These values can be found here, and may change in the future.

However, caching is made to make the experience more fluid (and not because of rate limit), since requests take a bit of time (even in expressively fast connection) and affects the experience negatively.

Cache location

Cache data is stored in ~/.cache/starship-gitlab,

Cache conditions

In order to be cached, the Pipeline must be in one of those states:

  • success
  • failed
  • canceled
  • skipped

Other states are not cache, this means that a request is done to check the pipeline status everytime, which may slow down commands in projects with Gitlab remote.

Cache invalidation

Cache invalidation happens for revision when there is a new commit or there is commits that are not pushed to the remote.

Also, cache can be invalidated with --clear argument:

starship-gitlab --clear

Dependencies

~25–37MB
~625K SLoC