Skip to content
This repository has been archived by the owner on Feb 10, 2024. It is now read-only.

gabe565/gh-profile

Repository files navigation

gh-profile

Build Go Report Card

Work with multiple GitHub accounts using the gh cli.

Important

Official multi-account support was added to the gh cli in v2.40.0. This repository will no longer be maintained, and it is suggested to use the official multi-account implementation. See GitHub's multi-account docs here.

gh-profile demo

Installation

gh extension install gabe565/gh-profile

Usage

See the generated usage docs, or see a summary of each subcommand below.

Note As of v2.26.0, the gh cli now uses secure auth tokens by default. Secure auth tokens are not yet supported by gh-profile, so when logging into GitHub, make sure to run:
gh auth login --insecure-storage

  • gh profile create [NAME]: Creates a new profile.

    Details

    Aliases: c, new, add

    Params:

    • NAME is optional. If not set, command will run interactively.

    Example:

    $ gh profile create example
    ✨ Creating profile: example
    🔧 Activating global profile: example
  • gh profile switch [NAME] [--local-dir]: Activates a profile.

    Details

    Aliases: activate, active, sw, s

    Params:

    • NAME is optional. If not set, command will run interactively.
      • If set to -, gh-profile will switch back to the previous profile.
    • --local-dir/-l activates the profile only for the current directory.
      • For this to work, you must install a per-directory env tool like direnv.

    Example:

    $ gh profile switch example
    🔧 Activating global profile: example
  • gh profile rename [NAME] [NEW_NAME]: Renames a profile.

    Details

    Aliases: mv

    Params:

    • NAME and NEW_NAME are optional. If not set, command will run interactively.

    Example:

    $ gh profile rename example example2
    🚚 Renaming profile: example to example2
    🔧 Activating global profile: example2
  • gh profile list: Lists all profiles. Active profile will be bold with a green check.

    Details

    Aliases: ls, l

    Example:

    $ gh profile list
    ✓ example
      gabe565
  • gh profile remove [NAME]: Removes a profile.

    Details

    Aliases: delete, rm, d

    Params:

    • NAME is optional. If not set, command will run interactively.

    Example:

    $ gh profile remove example2
    🔥 Removing profile: example2
  • gh profile show: Prints the active profile name. If no profile is active, nothing will be printed. Useful as a prompt element.

    Details

    Example:

    $ gh profile show
    example

Prompt Element

gh profile show is useful for displaying the current profile in your shell's prompt. This command will work for any prompt, but configuration with Powerlevel10k is provided below.

Powerlevel10k

Powerlevel10k ships with a custom formatter for git repositories. This formatter can be easily modified to show the current profile.

  1. Edit ~/.p10k.zsh.
  2. Find the my_git_formatter function
  3. Find the line local res
  4. Add the following below that line:
        local profile="$(gh profile show 2>/dev/null)"
        [[ -n "$profile" ]] && res+="$profile "

Now, the current profile will be shown when you are in a git repo!

Example

Before After
Before After