gitech
1// Copyright 2021 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package git5
6import (7"context"8
9giturl "code.gitea.io/gitea/modules/git/url"10)
11
12// GetRemoteAddress returns remote url of git repository in the repoPath with special remote name
13func GetRemoteAddress(ctx context.Context, repoPath, remoteName string) (string, error) {14var cmd *Command15if CheckGitVersionAtLeast("2.7") == nil {16cmd = NewCommand(ctx, "remote", "get-url").AddDynamicArguments(remoteName)17} else {18cmd = NewCommand(ctx, "config", "--get").AddDynamicArguments("remote." + remoteName + ".url")19}20
21result, _, err := cmd.RunStdString(&RunOpts{Dir: repoPath})22if err != nil {23return "", err24}25
26if len(result) > 0 {27result = result[:len(result)-1]28}29return result, nil30}
31
32// GetRemoteURL returns the url of a specific remote of the repository.
33func GetRemoteURL(ctx context.Context, repoPath, remoteName string) (*giturl.GitURL, error) {34addr, err := GetRemoteAddress(ctx, repoPath, remoteName)35if err != nil {36return nil, err37}38return giturl.Parse(addr)39}
40