1
0
Fork 0
mirror of https://gitea.com/gitea/tea.git synced 2025-06-16 03:00:22 +02:00
tea/cmd/open.go
TheFox0x7 0e54bae0c4 migrate tea to urfave v3 (#760)
I tested this somewhat, but I haven't been using the cli before so I'm not sure if there are changes - there shouldn't be though.

Reviewed-on: https://gitea.com/gitea/tea/pulls/760
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: TheFox0x7 <thefox0x7@gmail.com>
Co-committed-by: TheFox0x7 <thefox0x7@gmail.com>
2025-06-10 05:19:59 +00:00

78 lines
2 KiB
Go

// Copyright 2020 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package cmd
import (
stdctx "context"
"path"
"strings"
"code.gitea.io/tea/cmd/flags"
"code.gitea.io/tea/modules/context"
local_git "code.gitea.io/tea/modules/git"
"github.com/skratchdot/open-golang/open"
"github.com/urfave/cli/v3"
)
// CmdOpen represents a sub command of issues to open issue on the web browser
var CmdOpen = cli.Command{
Name: "open",
Aliases: []string{"o"},
Category: catHelpers,
Usage: "Open something of the repository in web browser",
Description: `Open something of the repository in web browser`,
Action: runOpen,
Flags: append([]cli.Flag{}, flags.LoginRepoFlags...),
}
func runOpen(_ stdctx.Context, cmd *cli.Command) error {
ctx := context.InitCommand(cmd)
ctx.Ensure(context.CtxRequirement{RemoteRepo: true})
var suffix string
number := ctx.Args().Get(0)
switch {
case strings.EqualFold(number, "issues"):
suffix = "issues"
case strings.EqualFold(number, "pulls"):
suffix = "pulls"
case strings.EqualFold(number, "releases"):
suffix = "releases"
case strings.EqualFold(number, "commits"):
repo, err := local_git.RepoForWorkdir()
if err != nil {
return err
}
b, err := repo.Head()
if err != nil {
return err
}
name := b.Name()
switch {
case name.IsBranch():
suffix = "commits/branch/" + name.Short()
case name.IsTag():
suffix = "commits/tag/" + name.Short()
}
case strings.EqualFold(number, "branches"):
suffix = "branches"
case strings.EqualFold(number, "wiki"):
suffix = "wiki"
case strings.EqualFold(number, "activity"):
suffix = "activity"
case strings.EqualFold(number, "settings"):
suffix = "settings"
case strings.EqualFold(number, "labels"):
suffix = "labels"
case strings.EqualFold(number, "milestones"):
suffix = "milestones"
case number != "":
suffix = "issues/" + number
default:
suffix = number
}
return open.Run(path.Join(ctx.GetRemoteRepoHTMLURL(), suffix))
}