gitlab-cli

command module
v0.22.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2021 License: CC0-1.0 Imports: 5 Imported by: 0

README

gitlab-cli

Lab wraps Git, making it simple to clone, fork, and interact with repositories on GitLab, including seamless workflows for creating merge requests, issues and snippets.

$ lab clone gitlab-com/infrastructure

# expands to:
$ git clone git@gitlab.com:gitlab-com/infrastructure

Inspiration

The hub tool made my life significantly easier and still does! lab is heavily inspired by hub and attempts to provide a similar feel.

Installation

Dependencies

  • git
Homebrew
brew install lab
NixOS
nix-env -f '<nixpkgs>' -iA gitAndTools.lab
Scoop
scoop bucket add zaquestion https://github.com/zaquestion/scoop-bucket.git
scoop install lab
Alpine
apk add lab
Bash

Installs lab into /usr/local/bin/

curl -s https://raw.githubusercontent.com/zaquestion/lab/master/install.sh | sudo bash

NOTE: Please take care when executing scripts in this fashion. Make sure you trust the developer providing the script and consider peeking at the install script itself (ours is pretty simple ;)

PreBuilt Binaries

Head to the releases page and download your preferred release

Source

Required

git clone git@github.com:zaquestion/lab
cd lab
go install -ldflags "-X \"main.version=$(git  rev-parse --short=10 HEAD)\"" .

or

make install
Tests

See the contribution guide.

Configuration

lab needs your GitLab information in order to interact with to your GitLab instance. There are several ways to provide this information to lab:

  1. environment variables: LAB_CORE_HOST, LAB_CORE_TOKEN;
    • If these variables are set, the config files will not be updated.
  2. environment variables: CI_PROJECT_URL, CI_JOB_TOKEN;
    • Note: these are meant for when lab is running within a GitLab CI pipeline
    • If these variables are set, the config files will not be updated.
  3. local configuration file in Tom's Obvious, Minimal Language (TOML): ./lab.toml;
    • No other config files will be used as overrides if a local configuration file is specified
  4. user-specific configuration file in TOML: ~/.config/lab/lab.toml.
  5. work-tree configuration file in TOML: .git/lab/lab.toml. The values in this file will override any values set in the user-specific configuration file.

If no suitable config values are found, lab will prompt for your GitLab information and save it into ~/.config/lab/lab.toml. For example:

$ lab
Enter default GitLab host (default: https://gitlab.com):
Enter default GitLab token:

Command-specific flags can be set in the config files.

[mr_show]
  comments = true # sets --comments on 'mr show' commands

Completions

lab provides completions for Bash, Elvish, Fish, Oil, Powershell, Xonsh and Zsh. Scripts can be directly sourced (though using pre-generated versions is recommended to avoid shell startup delay):

# bash (~/.bashrc)
source <(lab completion)

# elvish (~/.elvish/rc.elv)
eval (lab completion|slurp)

# fish (~/.config/fish/config.fish)
lab completion | source

# oil
source <(lab completion)

# powershell (~/.config/powershell/Microsoft.PowerShell_profile.ps1)
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
lab completion | Out-String | Invoke-Expression

# xonsh (~/.config/xonsh/rc.xsh)
COMPLETIONS_CONFIRM=True
exec($(lab completion xonsh))

# zsh (~/.zshrc)
source <(lab completion zsh)

Aliasing

lab feels best when aliased as git, however it's perfectly reasonable to use as a standalone tool. In your .bashrc or .bash_profile:

alias git=lab

NOTE: before aliasing, if you use git in your shell prompt command, be sure lab works by it's own first:

What about GLab?

Both glab and lab are open-source tools with the same goal of bringing GitLab to your command line and simplifying the developer workflow. In many ways lab is to hub, what glab is to gh.

lab aims to feel familiar to a git user and leverages git to power many of it's commands. glab will feel more familiar to gh users and in turn is more interactive and likely more beginner friendly for that reason.

$ lab
Enter GitLab host (default: https://gitlab.com):

CC0
To the extent possible under law, Zaq? Wiedmann has waived all copyright and related or neighboring rights to Lab. This work is published from: United States.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
git
gitlab
Package gitlab is an internal wrapper for the go-gitlab package Most functions serve to expose debug logging if set and accept a project name string over an ID.
Package gitlab is an internal wrapper for the go-gitlab package Most functions serve to expose debug logging if set and accept a project name string over an ID.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL