Files
gitea-tea/main.go
T
bircni 2c5e005bcf fix(pr): report checks like gh, exit 8 while they are pending
tea pr checks printed relative links, "Error: pull request checks have
not all succeeded" with exit 1 for checks that were only pending, and
nothing at all without checks. It now heads the table with a colored
verdict and "0 failing, 1 successful, and 2 pending checks", prints a
status icon and absolute links, and exits 8 while checks are pending
and 1 when one failed, without an Error line (D21). clierr.Quiet
carries such an exit code past main without a message. Without checks
it says "no checks reported for pull request alice/x#8".

--watch redraws the summary in place on a terminal, and an expired
--timeout reads "timed out after 3s waiting for 2 pending checks". The
pull request argument is optional, and --web opens the pull request.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-11 23:54:47 +02:00

44 lines
1.2 KiB
Go

// Copyright 2020 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
// Tea is a scriptable command line tool for Gitea.
package main
import (
"context"
"errors"
"fmt"
"os"
"os/signal"
"syscall"
"gitea.dev/tea/internal/app"
"gitea.dev/tea/internal/clierr"
)
func main() {
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
code := run(ctx, app.System(), os.Args[1:])
stop()
os.Exit(code)
}
// run executes tea, reports a failure on stderr and returns the exit code. An interrupt exits
// silently, and a declined confirmation prints only "Canceled.".
func run(ctx context.Context, deps app.Dependencies, args []string) int {
err := app.Execute(ctx, deps, args)
if err != nil && ctx.Err() != nil {
// Whatever failed after Ctrl-C or SIGTERM failed because of it; the user knows why.
err = clierr.Wrap(clierr.Interrupted, err)
}
code := clierr.ExitCode(err)
switch {
case err == nil, code == clierr.Interrupted, clierr.IsQuiet(err):
case code == clierr.Canceled && !errors.Is(err, context.DeadlineExceeded):
fmt.Fprintln(deps.Streams.ErrOut, "Canceled.")
default:
fmt.Fprintf(deps.Streams.ErrOut, "Error: %v\n", app.Explain(ctx, deps, err))
}
return code
}