1 unstable release
0.1.0 | Feb 23, 2023 |
---|
#315 in Email
49KB
1.5K
SLoC
identity
A tool for managing your identity from the command line.
If you have more than one identity, such as work and personal, on the same machine then identity
can help. It currently
supports Git and Cargo. The usage of each is described below. If you prefer, there is a set of functional tests provided with
the source code.
Configuring identities
The identity
CLI looks for a configuration file at ~/.config/identity.toml
. You can create or upgrade your identity file
using identity --verify
.
version = "1.0"
[[identity]]
id = "personal"
email = "your-email@example.com"
[[identity.account]]
service = "git"
user = "my-username"
match_url = "https://github.com/my-username/*"
description = "my personal github"
[[identity.account]]
service = "cargo"
user = "my-username"
token = "a-token"
[[identity]]
id = "work"
email = "your-email@company.com"
[[identity.account]]
service = "git"
user = "company-username"
match_url = "https://github.com/company-username/*"
description = "my work github"
This configures two identities, personal
and work
. The personal
identity has a GitHub account and a Cargo (crates.io) account.
The work
identity just has a GitHub account.
Git
Your username and email address are the first thing to keep separate. Git gives you several options for configuring these
and you can use identity
to find out what's currently being used
identity whoami --service git
Note: You can omit the --service git
argument and you will be prompted instead.
This will output something like
user.name = ThetaSinner
user.email = your-email@example.com
Knowing is one thing, but preventing commits with the wrong user information is the goal. While in a Git repository run
identity git install
which will install a pre-commit hook to verify your identity on every commit. The origin URL will be matched against the identities in your configuration file, and if the current Git identity isn't the same as the matched on, the commit will be prevented.
If you're already using pre-commit hooks then you can add the check manually by putting identity git hook --pre-commit
into .git/hooks/pre-commit
.
To check that a repository is currently configured to use identity
and that the identity is configured correctly you can run
identity git --check
Cargo
Cargo doesn't have accounts in the same sense. You have a token which can be used to publish crates and this is your identity
as far as identity
is concerned.
To check your current identity, use
identity whoami --service cargo
Or to switch to a new identity
identity switch --service cargo
which will prompt you for an identity to switch to.
Other service
I plan to add more services as I need them, feel free to open an issue or a PR on GitHub if you'd like something else supported.
Dependencies
~9–18MB
~237K SLoC