Skip to content
forked from zaquestion/lab

Lab wraps Git or Hub, making it simple to clone, fork, and interact with repositories on GitLab

License

Notifications You must be signed in to change notification settings

yashraj2312/lab

 
 

Repository files navigation

git + = gitlab Build Status Go Report Card codecov Join the chat at https://gitter.im/labcli CC0 License Donate

Lab wraps Git or Hub, 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 [email protected]:gitlab-com/infrastructure

hub + = hublab??

lab will look for hub and uses that as your git binary when available so you don't have to give up hub to use lab

$ lab version
git version 2.11.0
hub version 2.3.0-pre9
lab version 0.17.2

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 or hub

Homebrew

brew install zaquestion/tap/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 peaking at the install script itself (ours is pretty simply ;)

PreBuilt Binaries

Head to the releases page and download your preferred release

Source

Required

git clone [email protected]: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;
  2. environment variables: CI_PROJECT_URL, CI_JOB_TOKEN;
    • Note: these are meant for when lab is running within a GitLab CI pipeline
  3. directory-specific configuration file in HashiCorp configuration language (HCL): ./lab.hcl;
  4. user-specific configuration file in HCL: ~/.config/lab.hcl.

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

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

Completions

lab provides completions for bash, elvish, fish, powershell and zsh.

Bash

lab completion bash will generate a bash completion script. Save this script and source it in your .bashrc:

source "/path/to/lab-completions.bash"

Elvish

lab completion elvish will generate an elvish completion script. Save this script to ~/.elvish/lib/lab.elv and add use lab to your startup script at ~/.elvish/rc.elv

Fish

lab completion fish will generate a fish completion script. Save this script to ~/.config/fish/completions/lab.fish.

Powershell

lab completion powershell will generate a powershell completion script. Save this script to ~/.config/powershell/lab-completions.ps1 and add Get-Content ~/.config/powershell/lab-completions.ps1 | Out-String | Invoke-Expression to your profile script at ~/.config/powershell/Microsoft.PowerShell_profile.ps1 (you might want to enable menu completion as well with Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete).

Zsh

lab completion zsh will generate a zsh completion script. zsh completions are denoted with the syntax _command-name, so save the output of lab completion to a file name _lab. Place the file in your $FPATH, or create an new directory and add it to your $FPATH.

fpath=(/path/to/script_directory $fpath)

Aliasing

Like hub, lab feels best when aliased as git. 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:

$ 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.

About

Lab wraps Git or Hub, making it simple to clone, fork, and interact with repositories on GitLab

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.3%
  • Other 0.7%