1 Star 0 Fork 0

yangx282441848/scm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
linker.go 1.79 KB
一键复制 编辑 原始数据 按行查看 历史
Your Name 提交于 2021-10-11 10:02 . gitee
// Copyright 2017 Drone.IO Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package bitbucket
import (
"context"
"fmt"
"strings"
"gitee.com/yangx282441848/scm/scm"
)
type linker struct {
base string
}
// Resource returns a link to the resource.
func (l *linker) Resource(ctx context.Context, repo string, ref scm.Reference) (string, error) {
switch {
case scm.IsTag(ref.Path):
t := scm.TrimRef(ref.Path)
return fmt.Sprintf("%s%s/src/%s", l.base, repo, t), nil
case scm.IsPullRequest(ref.Path):
d := scm.ExtractPullRequest(ref.Path)
return fmt.Sprintf("%s%s/pull-requests/%d", l.base, repo, d), nil
case ref.Sha == "":
t := scm.TrimRef(ref.Path)
// Bitbucket has a bug where the "source view" link for
// a branch which contains a slash results in a 404.
// The link to the "branch view" works with names containing
// a slash so we do this for branches with slashes in its names.
// See https://jira.atlassian.com/browse/BCLOUD-14422 for more information
if scm.IsBranch(ref.Path) && strings.Contains(t, "/") {
return fmt.Sprintf("%s%s/branch/%s", l.base, repo, t), nil
}
return fmt.Sprintf("%s%s/src/%s", l.base, repo, t), nil
default:
return fmt.Sprintf("%s%s/commits/%s", l.base, repo, ref.Sha), nil
}
}
// Diff returns a link to the diff.
func (l *linker) Diff(ctx context.Context, repo string, source, target scm.Reference) (string, error) {
if scm.IsPullRequest(target.Path) {
d := scm.ExtractPullRequest(target.Path)
return fmt.Sprintf("%s%s/pull-requests/%d", l.base, repo, d), nil
}
s := source.Sha
t := target.Sha
if s == "" {
s = scm.TrimRef(source.Path)
}
if t == "" {
t = scm.TrimRef(target.Path)
}
return fmt.Sprintf("%s%s/compare/%s%%0D%s", l.base, repo, s, t), nil
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yangx282441848/scm.git
git@gitee.com:yangx282441848/scm.git
yangx282441848
scm
scm
v1.16.5

搜索帮助

0d507c66 1850385 C8b1a773 1850385