1
0
mirror of https://gitea.com/gitea/tea.git synced 2024-11-03 04:27:21 -05:00
Go to file
leonard.vimond 20479663f0 tea branches list/protect/unprotect (#645)
Hello,
This is a proposal to support consulting / protecting / unprotecting branches for a specific repository.
I copied the existing code for "issues" report and adapted to branches. There is no change of legacy code so I do not expect any impact.

Supported commands are "list", "protect", "unprotect":
- "List" print the list of branches with some available fields from gitea.Branch type.
- "protect" creates a gitea.BranchProtection with some default parameters for some specific branches
- "unprotect" destroys gitea.BranchProtection for some specific branches

What is printed now could be enriched with additional information gitea datatypes already offer.

Could you please evaluate this proposal?
I would be happy to receive any comment or remark to take into account.

**tea branches unprotect** --login opsi --repo opensky main
**tea branches list**             --login opsi --repo opensky --fields name,protected,user-can-merge,user-can-push,protection
[name protected user-can-merge user-can-push protection]
+--------+-----------+----------------+---------------+------------+
|  NAME  | PROTECTED | USER-CAN-MERGE | USER-CAN-PUSH | PROTECTION |
+--------+-----------+----------------+---------------+------------+
| b_test | false     | true           | true          | <None>     |
| main   | false     | true           | true          | <None>     |
+--------+-----------+----------------+---------------+------------+

**tea branches protect**     --login opsi --repo opensky main
**tea branches list**             --login opsi --repo opensky --fields name,protected,user-can-merge,user-can-push,protection
[name protected user-can-merge user-can-push protection]
+--------+-----------+----------------+---------------+----------------------+
|  NAME  | PROTECTED | USER-CAN-MERGE | USER-CAN-PUSH |      PROTECTION      |
+--------+-----------+----------------+---------------+----------------------+
| b_test | false     | true           | true          | <None>               |
| main   | true      | true           | false         | - enable-push: false |
|        |           |                |               | - approving:  -      |
|        |           |                |               | merging:  - pushing: |
|        |           |                |               |                      |
+--------+-----------+----------------+---------------+----------------------+

Following commands run OK:
> make test
> make fmt
> make lint

Co-authored-by: Leonard Vimond <leonard.vimond.e@thalesdigital.io>
Co-authored-by: techknowlogick <techknowlogick@noreply.gitea.com>
Reviewed-on: https://gitea.com/gitea/tea/pulls/645
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: leonard.vimond <leonard.vimond@noreply.gitea.com>
Co-committed-by: leonard.vimond <leonard.vimond@noreply.gitea.com>
2024-07-26 16:02:07 +00:00
.devcontainer chore(deps): update ghcr.io/devcontainers/features/git-lfs docker tag to v1.2.2 (#656) 2024-07-20 13:37:20 +00:00
.gitea chore(deps): update goreleaser/goreleaser-action action to v6 (#654) 2024-07-20 13:38:07 +00:00
cmd tea branches list/protect/unprotect (#645) 2024-07-26 16:02:07 +00:00
contrib Add command to install shell completion (#309) 2020-12-17 00:01:59 +08:00
docs tea branches list/protect/unprotect (#645) 2024-07-26 16:02:07 +00:00
modules tea branches list/protect/unprotect (#645) 2024-07-26 16:02:07 +00:00
snap add snapcraft file (#600) 2023-10-23 18:36:38 +00:00
.changelog.yml Changelog v0.6.0 (#289) 2020-12-14 20:33:54 +08:00
.dockerignore Makefile: add STATIC=true for static PIE builds (#349) 2021-09-24 00:01:07 +08:00
.gitignore Fix for go tools called from make (#568) 2023-08-21 22:01:15 +00:00
.goreleaser.checksum.sh Switch CI to Actions and use Goreleaser (#536) 2023-03-30 10:24:03 +08:00
.goreleaser.yaml Update .goreleaser.yaml 2024-04-08 16:37:08 +00:00
.revive.toml Fix CI: disable package-comments lint rule (#494) 2022-08-22 20:53:19 +08:00
build.go spdx (#581) 2023-09-08 01:40:02 +00:00
CHANGELOG.md Changelog for v0.9.1 (#535) 2023-02-15 23:23:12 +01:00
CONTRIBUTING.md spdx (#581) 2023-09-08 01:40:02 +00:00
DCO init project 2018-09-03 14:43:00 +08:00
demo.gif Proper help text & new README structure (#311) 2020-12-21 21:37:20 +08:00
devbox.json feat: devbox (#572) 2023-09-08 15:24:52 +00:00
devbox.lock feat: devbox (#572) 2023-09-08 15:24:52 +00:00
Dockerfile pie doesn't mesh with scratch image 2023-09-10 00:50:04 -04:00
FEATURE-COMPARISON.md Add feature comparison chart between forge CLIs (#294) 2020-12-15 12:59:49 +08:00
go.mod fix(deps): update module github.com/charmbracelet/glamour to v0.7.0 (#631) 2024-07-26 16:01:37 +00:00
go.sum fix(deps): update module github.com/charmbracelet/glamour to v0.7.0 (#631) 2024-07-26 16:01:37 +00:00
LICENSE Fix license wrong declare. This project is created by Gitea itself, the license is a copy typo (#640) 2024-04-07 03:30:46 +00:00
main.go tea branches list/protect/unprotect (#645) 2024-07-26 16:02:07 +00:00
Makefile pie doesn't mesh with scratch image 2023-09-10 00:50:04 -04:00
README.md Update README.md to add actions badge (#651) 2024-05-28 06:21:14 +00:00
renovate.json5 Configure Renovate (#573) 2023-09-07 23:08:07 +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

demo gif

   tea - command line tool to interact with Gitea
   version 0.8.0-preview

 USAGE
   tea command [subcommand] [command options] [arguments...]

 DESCRIPTION
   tea is a productivity helper for Gitea. It can be used to manage most entities on
   one or multiple Gitea instances & provides local helpers like 'tea pr checkout'.
   
   tea tries to make use of context provided by the repository in $PWD if available.
   tea works best in a upstream/fork workflow, when the local main branch tracks the
   upstream repo. tea assumes that local git state is published on the remote before
   doing operations with tea.    Configuration is persisted in $XDG_CONFIG_HOME/tea.

 COMMANDS
   help, h  Shows a list of commands or help for one command
   ENTITIES:
     issues, issue, i                  List, create and update issues
     pulls, pull, pr                   Manage and checkout pull requests
     labels, label                     Manage issue labels
     milestones, milestone, ms         List and create milestones
     releases, release, r              Manage releases
     times, time, t                    Operate on tracked times of a repository's issues & pulls
     organizations, organization, org  List, create, delete organizations
     repos, repo                       Show repository details
     comment, c                        Add a comment to an issue / pr
   HELPERS:
     open, o                         Open something of the repository in web browser
     notifications, notification, n  Show notifications
     clone, C                        Clone a repository locally
   SETUP:
     logins, login                  Log in to a Gitea server
     logout                         Log out from a Gitea server
     shellcompletion, autocomplete  Install shell completion for tea
     whoami                         Show current logged in user

 OPTIONS
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)

 EXAMPLES
   tea login add                       # add a login once to get started

   tea pulls                           # list open pulls for the repo in $PWD
   tea pulls --repo $HOME/foo          # list open pulls for the repo in $HOME/foo
   tea pulls --remote upstream         # list open pulls for the repo pointed at by
                                       # your local "upstream" git remote
   # list open pulls for any gitea repo at the given login instance
   tea pulls --repo gitea/tea --login gitea.com

   tea milestone issues 0.7.0          # view open issues for milestone '0.7.0'
   tea issue 189                       # view contents of issue 189
   tea open 189                        # open web ui for issue 189
   tea open milestones                 # open web ui for milestones

   # send gitea desktop notifications every 5 minutes (bash + libnotify)
   while :; do tea notifications --mine -o simple | xargs -i notify-send {}; sleep 300; done

 ABOUT
   Written & maintained by The Gitea Authors.
   If you find a bug or want to contribute, we'll welcome you at https://gitea.com/gitea/tea.
   More info about Gitea itself on https://about.gitea.com.

Installation

There are different ways to get tea:

  1. Install via your system package manager:

    • macOS via brew (official):
      brew install tea
      
    • arch linux (gitea-tea-git, 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 (thirdparty): tgerczei/tea

  5. asdf (thirdparty): mvaldes14/asdf-tea

Compilation

Make sure you have a current go version installed (1.13 or newer).

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

    git clone https://gitea.com/gitea/tea.git # or: tea clone 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 code.gitea.io/tea@${version}
    

Contributing

Fork -> Patch -> Push -> Pull Request

  • make test run testsuite
  • make vet run checks (check the order of imports; preventing failure on CI pipeline beforehand)
  • ... (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.