bircni 4895aa089d feat(pr): merge with the repository's defaults, ready, gh flags and ✓ lines for pr mutations
pr merge takes the method from the repository's default merge style
instead of always merging (D22), accepts gh's --merge, --squash and
--rebase next to -s/--method, refuses methods the repository disables,
and adds -d/--delete-branch (defaulting to the repository setting),
--auto, -t, -b, -F and -e. On a terminal it asks for the method and
branch deletion with the defaults preselected, without a picker when
the current branch has a pull request. It reports "✓ Squashed and
merged pull request alice/x#3 (title)", the deleted remote branch, and
switches off and deletes the local head branch; --json returns the
merged pull request. Merged, closed and draft pull requests are
reported before anything is asked. -s without a value points at
--squash.

pr checkout names the local branch after the head branch when that
name is free or already at the head, falling back to OWNER/BRANCH for
forks and pr/NUMBER (D13), fetches and switches quietly, reports
"✓ Checked out #1 into feat/one", and has the alias co. pr clean
reports what it deleted and that a remote branch was already gone.

pr create asks for the title and body, then "What's next?": submit,
submit as a draft, add metadata or change the branches, without the
AGit question up front or a final confirmation. It pushes an unpushed
head with --set-upstream --quiet ("✓ Pushed feat/one to origin"),
prints "✓ Created pull request alice/x#9 (title)" and the URL, and
adds --fill, --web, the alias new, the gh shorthands, and milestones
by title.

New tea pr ready [--undo]. pr close and reopen take -c/--comment,
close takes -d/--delete-branch, and both say when the pull request
already is in that state. pr edit reports "✓ Edited", takes the
singular gh reviewer flags (the plurals still work), milestones by
title and --remove-milestone. pr diff is colored and paged on a
terminal and byte-exact when piped, with --name-only, --color and
--web. Every pull request argument accepts #N, URLs and branch names
and defaults to the current branch's pull request.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-11 23:55:11 +02:00
2020-12-14 20:33:54 +08:00
2025-02-27 18:33:37 +00:00
2023-09-08 01:40:02 +00:00
2018-09-03 14:43:00 +08:00
2024-12-27 02:00:57 +00:00
2026-02-02 23:05:45 +00:00

tea logo T E A

License: MIT Release Join the chat at https://img.shields.io/discord/322538954119184384.svg Go Report Card GoDoc Tea Release Status

The official CLI for Gitea

Tea manages repositories, issues, pull requests, releases, and other Gitea resources with explicit commands suitable for local development and CI.

tea auth login --host https://gitea.example.org --with-token < token-file
tea issue list --repo owner/repository
tea pr view 123 --repo owner/repository --json
tea alias set bugs 'issue list --label bug'
tea help

tea 1.0 is a breaking release: it requires Gitea 28 or newer, commands, flags and output formats changed, it uses separate config.yml and hosts.yml files, and it requires fresh authentication. Existing combined configuration files are left untouched; archive the old file or choose an isolated TEA_CONFIG_DIR before setup. See Migrating to tea 1.0 for the old-to-new mapping. Run tea --help or tea <command> --help for supported commands and flags; the full reference, man pages, and shell completions ship in each release's docs archive. Credentials use the operating-system keyring by default; explicitly select --credential-store file when private file storage is needed. For CI, supply GITEA_TOKEN and its instance through TEA_HOST or GITEA_INSTANCE_URL; environment credentials are never persisted.

Installation

There are different ways to get tea:

  1. Install via your system package manager:

    • macOS via brew (official):
      brew install tea
      
    • arch linux (tea, thirdparty)
    • alpine linux (tea, thirdparty)
    • Windows via MSYS2 (tea, thirdparty)
  2. Use the prebuilt binaries from dl.gitea.com

  3. Install from source: see Compilation

  4. Docker: Tea at docker hub

Log in to Gitea from tea

Gitea can use many different authentication schemes, and not every authentication method will work with every Gitea deployment. When you are a Gitea instance administrator you can tweak your settings to fit your use case. For the method that is most likely to work with any Gitea deployment use the following steps:

  1. Open your Gitea instance in a web browser

  2. Log in to Gitea in your web browser. Any MFA, IDP, or whatever else should be available this way.

  3. In your "user settings", generate an application token with at least user read permissions. If you want to do anything useful with the token add additional permissions/scopes.

  4. Save the token in a private file and run tea auth login --host https://your-instance --with-token < token-file. Credentials use the operating-system keyring by default.

You should now be logged in to your gitea instance from tea.

Alternatively, tea auth login --host https://your-instance --oauth authorizes tea in your browser. OAuth may not be available on all Gitea deployments, and needs a browser on the machine running tea.

Shell completion

If you installed from source or the package does not provide the completions with it you can add them yourself with tea completion <shell> command. Completion offers commands, flags, flag values such as --state and --json fields, and values from your instance such as repositories. Add the line for your shell to its startup file:

# ~/.bashrc (on macOS, ~/.bash_profile)
eval "$(tea completion bash)"

# ~/.zshrc, after compinit
autoload -U compinit && compinit
source <(tea completion zsh)

# fish
tea completion fish > ~/.config/fish/completions/tea.fish

# PowerShell profile
tea completion powershell | Out-String | Invoke-Expression

The bash script needs the bash-completion package. On macOS, install bash-completion with Homebrew for the system bash 3.2 (or bash-completion@2 for a Homebrew bash 4.2+), and use eval as above: bash 3.2 cannot source <(...). Without compinit, zsh reports command not found: compdef. tea completion <shell> --help shows these steps and how to install the script system-wide.

Man Page

The hidden command tea man can be used to generate the tea man page.

# for bash or zsh
man <(tea man)

# for fish
man (tea man | psub)

# write man page to a file
tea man --output-file ./tea.man

Compilation

Make sure you have a current Go version installed (1.27 or newer).

  • To compile the source yourself with the recommended flags & tags:

    git clone https://gitea.com/gitea/tea.git # or: tea repo clone https://gitea.com/gitea/tea ;)
    cd tea
    make
    

    Note that GNU Make (gmake on OpenBSD) is required. If you want to install the compiled program you have to execute the following command:

    make install
    

    This installs the binary into the "bin" folder inside of your GOPATH folder (go env GOPATH). It is possible that this folder isn't in your PATH Environment Variable.

  • For a quick installation without git & make, set $version and exec:

    go install gitea.dev/tea@${version}
    

Contributing

Fork -> Patch -> Push -> Pull Request

  • make test run unit tests
  • make vet run checks (check the order of imports; preventing failure on CI pipeline beforehand)
  • make build builds the production CLI
  • make docs regenerates references, man pages, and shell completions in docs/generated (not committed; built on release)
  • ... (for other development tasks, check the Makefile)

Please read the CONTRIBUTING documentation, it will tell you about internal structures and concepts.

License

This project is under the MIT License. See the LICENSE file for the full license text.

S
Description
A command line tool to interact with Gitea servers
Readme MIT
36 MiB
0 Stars 1 Watchers 0 Forks
Languages
Go 98.8%
Shell 0.6%
Makefile 0.4%