summaryrefslogtreecommitdiffstats
path: root/pkg/commands
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2023-04-24 13:42:05 +1000
committerGitHub <noreply@github.com>2023-04-24 13:42:05 +1000
commit79dc1d9052ec798544a1032b01ca3684136a82d7 (patch)
tree615b950c68cbffda28cf87cf9bbf91567261bf02 /pkg/commands
parent28d2b1432b3930c5866b9015ccdef691e309d2f5 (diff)
parentbf3dd79b7a91a195b74df8388d721c559bb08b57 (diff)
Merge pull request #2557 from noahziheng/feature/add-gitea-pr
Diffstat (limited to 'pkg/commands')
-rw-r--r--pkg/commands/hosting_service/definitions.go15
-rw-r--r--pkg/commands/hosting_service/hosting_service.go2
-rw-r--r--pkg/commands/hosting_service/hosting_service_test.go56
3 files changed, 71 insertions, 2 deletions
diff --git a/pkg/commands/hosting_service/definitions.go b/pkg/commands/hosting_service/definitions.go
index 8dab166aa..bfe374640 100644
--- a/pkg/commands/hosting_service/definitions.go
+++ b/pkg/commands/hosting_service/definitions.go
@@ -64,12 +64,22 @@ var bitbucketServerServiceDef = ServiceDefinition{
repoURLTemplate: "https://{{.webDomain}}/projects/{{.project}}/repos/{{.repo}}",
}
+var giteaServiceDef = ServiceDefinition{
+ provider: "gitea",
+ pullRequestURLIntoDefaultBranch: "/compare/{{.From}}",
+ pullRequestURLIntoTargetBranch: "/compare/{{.To}}...{{.From}}",
+ commitURL: "/commit/{{.CommitSha}}",
+ regexStrings: defaultUrlRegexStrings,
+ repoURLTemplate: defaultRepoURLTemplate,
+}
+
var serviceDefinitions = []ServiceDefinition{
githubServiceDef,
bitbucketServiceDef,
gitLabServiceDef,
azdoServiceDef,
bitbucketServerServiceDef,
+ giteaServiceDef,
}
var defaultServiceDomains = []ServiceDomain{
@@ -93,4 +103,9 @@ var defaultServiceDomains = []ServiceDomain{
gitDomain: "dev.azure.com",
webDomain: "dev.azure.com",
},
+ {
+ serviceDefinition: giteaServiceDef,
+ gitDomain: "try.gitea.io",
+ webDomain: "try.gitea.io",
+ },
}
diff --git a/pkg/commands/hosting_service/hosting_service.go b/pkg/commands/hosting_service/hosting_service.go
index 091da3ebb..dd06e1cb7 100644
--- a/pkg/commands/hosting_service/hosting_service.go
+++ b/pkg/commands/hosting_service/hosting_service.go
@@ -13,7 +13,7 @@ import (
"github.com/jesseduffield/generics/slices"
)
-// This package is for handling logic specific to a git hosting service like github, gitlab, bitbucket, etc.
+// This package is for handling logic specific to a git hosting service like github, gitlab, bitbucket, gitea, etc.
// Different git hosting services have different URL formats for when you want to open a PR or view a commit,
// and this package's responsibility is to determine which service you're using based on the remote URL,
// and then which URL you need for whatever use case you have.
diff --git a/pkg/commands/hosting_service/hosting_service_test.go b/pkg/commands/hosting_service/hosting_service_test.go
index a3b128b01..4a58a3975 100644
--- a/pkg/commands/hosting_service/hosting_service_test.go
+++ b/pkg/commands/hosting_service/hosting_service_test.go
@@ -265,6 +265,60 @@ func TestGetPullRequestURL(t *testing.T) {
},
},
{
+ testName: "Opens a link to new pull request on Gitea Server (SSH)",
+ from: "feature/new",
+ remoteUrl: "ssh://git@mycompany.gitea.io/myproject/myrepo.git",
+ configServiceDomains: map[string]string{
+ // valid configuration for a gitea server URL
+ "mycompany.gitea.io": "gitea:mycompany.gitea.io",
+ },
+ test: func(url string, err error) {
+ assert.NoError(t, err)
+ assert.Equal(t, "https://mycompany.gitea.io/myproject/myrepo/compare/feature%2Fnew", url)
+ },
+ },
+ {
+ testName: "Opens a link to new pull request on Gitea Server (SSH) with specific target",
+ from: "feature/new",
+ to: "dev",
+ remoteUrl: "ssh://git@mycompany.gitea.io/myproject/myrepo.git",
+ configServiceDomains: map[string]string{
+ // valid configuration for a gitea server URL
+ "mycompany.gitea.io": "gitea:mycompany.gitea.io",
+ },
+ test: func(url string, err error) {
+ assert.NoError(t, err)
+ assert.Equal(t, "https://mycompany.gitea.io/myproject/myrepo/compare/dev...feature%2Fnew", url)
+ },
+ },
+ {
+ testName: "Opens a link to new pull request on Gitea Server (HTTP)",
+ from: "feature/new",
+ remoteUrl: "https://mycompany.gitea.io/myproject/myrepo.git",
+ configServiceDomains: map[string]string{
+ // valid configuration for a gitea server URL
+ "mycompany.gitea.io": "gitea:mycompany.gitea.io",
+ },
+ test: func(url string, err error) {
+ assert.NoError(t, err)
+ assert.Equal(t, "https://mycompany.gitea.io/myproject/myrepo/compare/feature%2Fnew", url)
+ },
+ },
+ {
+ testName: "Opens a link to new pull request on Gitea Server (HTTP) with specific target",
+ from: "feature/new",
+ to: "dev",
+ remoteUrl: "https://mycompany.gitea.io/myproject/myrepo.git",
+ configServiceDomains: map[string]string{
+ // valid configuration for a gitea server URL
+ "mycompany.gitea.io": "gitea:mycompany.gitea.io",
+ },
+ test: func(url string, err error) {
+ assert.NoError(t, err)
+ assert.Equal(t, "https://mycompany.gitea.io/myproject/myrepo/compare/dev...feature%2Fnew", url)
+ },
+ },
+ {
testName: "Throws an error if git service is unsupported",
from: "feature/divide-operation",
remoteUrl: "git@something.com:peter/calculator.git",
@@ -310,7 +364,7 @@ func TestGetPullRequestURL(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, "https://bitbucket.org/johndoe/social_network/pull-requests/new?source=feature%2Fprofile-page&t=1", url)
},
- expectedLoggedErrors: []string{"Unknown git service type: 'noservice'. Expected one of github, bitbucket, gitlab, azuredevops, bitbucketServer"},
+ expectedLoggedErrors: []string{"Unknown git service type: 'noservice'. Expected one of github, bitbucket, gitlab, azuredevops, bitbucketServer, gitea"},
},
{
testName: "Escapes reserved URL characters in from branch name",