summaryrefslogtreecommitdiffstats
path: root/pkg/commands
diff options
context:
space:
mode:
authorNoah Gao <noahgaocn@outlook.com>2023-04-18 16:16:09 +0000
committerNoah Gao <noahgaocn@outlook.com>2023-04-18 16:16:09 +0000
commitbf3dd79b7a91a195b74df8388d721c559bb08b57 (patch)
tree4bdce278584634327de9b040addcab90cb23a939 /pkg/commands
parent1efb565b22c17733acc8d39591cf3cdec54aa556 (diff)
feat: add gitea to hosting service
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",