Skip to content

Commit 0dbae89

Browse files
committed
add gerrit support
1 parent c449409 commit 0dbae89

File tree

5 files changed

+71
-11
lines changed

5 files changed

+71
-11
lines changed

packages/web/src/actions.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { isServiceError } from "@/lib/utils";
1010
import { githubSchema } from "@sourcebot/schemas/v3/github.schema";
1111
import { gitlabSchema } from "@sourcebot/schemas/v3/gitlab.schema";
1212
import { giteaSchema } from "@sourcebot/schemas/v3/gitea.schema";
13+
import { gerritSchema } from "@sourcebot/schemas/v3/gerrit.schema";
1314
import { ConnectionConfig } from "@sourcebot/schemas/v3/connection.type";
1415
import { encrypt } from "@sourcebot/crypto"
1516
import { getConnection } from "./data/connection";
@@ -282,6 +283,8 @@ const parseConnectionConfig = (connectionType: string, config: string) => {
282283
return gitlabSchema;
283284
case 'gitea':
284285
return giteaSchema;
286+
case 'gerrit':
287+
return gerritSchema;
285288
}
286289
})();
287290

packages/web/src/app/connections/[id]/components/configSetting.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,17 @@ import { ConfigEditor, QuickAction } from "../../components/configEditor";
1212
import { createZodConnectionConfigValidator } from "../../utils";
1313
import { GithubConnectionConfig } from "@sourcebot/schemas/v3/github.type";
1414
import { GiteaConnectionConfig } from "@sourcebot/schemas/v3/gitea.type";
15-
import { githubQuickActions, gitlabQuickActions, giteaQuickActions } from "../../quickActions";
15+
import { GerritConnectionConfig } from "@sourcebot/schemas/v3/gerrit.type";
16+
import { githubQuickActions, gitlabQuickActions, giteaQuickActions, gerritQuickActions } from "../../quickActions";
1617
import { Schema } from "ajv";
1718
import { GitlabConnectionConfig } from "@sourcebot/schemas/v3/gitlab.type";
1819
import { gitlabSchema } from "@sourcebot/schemas/v3/gitlab.schema";
1920
import { updateConnectionConfigAndScheduleSync } from "@/actions";
2021
import { useToast } from "@/components/hooks/use-toast";
2122
import { isServiceError } from "@/lib/utils";
2223
import { useRouter } from "next/navigation";
24+
import { giteaSchema } from "@sourcebot/schemas/v3/gitea.schema";
25+
import { gerritSchema } from "@sourcebot/schemas/v3/gerrit.schema";
2326

2427

2528
interface ConfigSettingProps {
@@ -51,7 +54,15 @@ export const ConfigSetting = (props: ConfigSettingProps) => {
5154
return <ConfigSettingInternal<GiteaConnectionConfig>
5255
{...props}
5356
quickActions={giteaQuickActions}
54-
schema={githubSchema}
57+
schema={giteaSchema}
58+
/>;
59+
}
60+
61+
if (type === 'gerrit') {
62+
return <ConfigSettingInternal<GerritConnectionConfig>
63+
{...props}
64+
quickActions={gerritQuickActions}
65+
schema={gerritSchema}
5566
/>;
5667
}
5768

packages/web/src/app/connections/new/[type]/components/connectionCreationForm.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { z } from "zod";
1818
import { ConfigEditor, QuickActionFn } from "../../../components/configEditor";
1919

2020
interface ConnectionCreationForm<T> {
21-
type: 'github' | 'gitlab' | 'gitea';
21+
type: 'github' | 'gitlab' | 'gitea' | 'gerrit';
2222
defaultValues: {
2323
name: string;
2424
config: string;

packages/web/src/app/connections/new/[type]/page.tsx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
'use client';
22

3-
import { giteaQuickActions, githubQuickActions, gitlabQuickActions } from "../../quickActions";
3+
import { gerritQuickActions, giteaQuickActions, githubQuickActions, gitlabQuickActions } from "../../quickActions";
44
import ConnectionCreationForm from "./components/connectionCreationForm";
55
import { GitlabConnectionConfig } from "@sourcebot/schemas/v3/gitlab.type";
66
import { GiteaConnectionConfig } from "@sourcebot/schemas/v3/gitea.type";
7+
import { GerritConnectionConfig } from "@sourcebot/schemas/v3/gerrit.type";
78
import { gitlabSchema } from "@sourcebot/schemas/v3/gitlab.schema";
89
import { githubSchema } from "@sourcebot/schemas/v3/github.schema";
910
import { giteaSchema } from "@sourcebot/schemas/v3/gitea.schema";
11+
import { gerritSchema } from "@sourcebot/schemas/v3/gerrit.schema";
1012
import { GithubConnectionConfig } from "@sourcebot/schemas/v3/github.type";
1113
import { useRouter } from "next/navigation";
1214

@@ -28,6 +30,10 @@ export default function NewConnectionPage({
2830
return <GiteaCreationForm />;
2931
}
3032

33+
if (type === 'gerrit') {
34+
return <GerritCreationForm />;
35+
}
36+
3137
router.push('/connections');
3238
}
3339

@@ -86,5 +92,24 @@ const GiteaCreationForm = () => {
8692
quickActions={giteaQuickActions}
8793
/>
8894
)
95+
}
8996

90-
}
97+
const GerritCreationForm = () => {
98+
const defaultConfig: GerritConnectionConfig = {
99+
type: 'gerrit',
100+
url: "https://gerrit.example.com"
101+
}
102+
103+
return (
104+
<ConnectionCreationForm<GerritConnectionConfig>
105+
type="gerrit"
106+
title="Create a Gerrit connection"
107+
defaultValues={{
108+
config: JSON.stringify(defaultConfig, null, 2),
109+
name: 'my-gerrit-connection',
110+
}}
111+
schema={gerritSchema}
112+
quickActions={gerritQuickActions}
113+
/>
114+
)
115+
}

packages/web/src/app/connections/quickActions.ts

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { GithubConnectionConfig } from "@sourcebot/schemas/v3/github.type"
2-
import { GitLabConnectionConfig } from "@sourcebot/schemas/v3/gitlab.type";
2+
import { GitlabConnectionConfig } from "@sourcebot/schemas/v3/gitlab.type";
33
import { QuickAction } from "./components/configEditor";
44
import { GiteaConnectionConfig } from "@sourcebot/schemas/v3/connection.type";
5+
import { GerritConnectionConfig } from "@sourcebot/schemas/v3/gerrit.type";
56

67
export const githubQuickActions: QuickAction<GithubConnectionConfig>[] = [
78
{
@@ -42,9 +43,9 @@ export const githubQuickActions: QuickAction<GithubConnectionConfig>[] = [
4243
}
4344
];
4445

45-
export const gitlabQuickActions: QuickAction<GitLabConnectionConfig>[] = [
46+
export const gitlabQuickActions: QuickAction<GitlabConnectionConfig>[] = [
4647
{
47-
fn: (previous: GitLabConnectionConfig) => ({
48+
fn: (previous: GitlabConnectionConfig) => ({
4849
...previous,
4950
groups: [
5051
...previous.groups ?? [],
@@ -54,14 +55,14 @@ export const gitlabQuickActions: QuickAction<GitLabConnectionConfig>[] = [
5455
name: "Add a group",
5556
},
5657
{
57-
fn: (previous: GitLabConnectionConfig) => ({
58+
fn: (previous: GitlabConnectionConfig) => ({
5859
...previous,
5960
url: previous.url ?? "",
6061
}),
6162
name: "Set a custom url",
6263
},
6364
{
64-
fn: (previous: GitLabConnectionConfig) => ({
65+
fn: (previous: GitlabConnectionConfig) => ({
6566
...previous,
6667
token: previous.token ?? {
6768
secret: "",
@@ -70,7 +71,7 @@ export const gitlabQuickActions: QuickAction<GitLabConnectionConfig>[] = [
7071
name: "Add a secret",
7172
},
7273
{
73-
fn: (previous: GitLabConnectionConfig) => ({
74+
fn: (previous: GitlabConnectionConfig) => ({
7475
...previous,
7576
projects: [
7677
...previous.projects ?? [],
@@ -120,3 +121,23 @@ export const giteaQuickActions: QuickAction<GiteaConnectionConfig>[] = [
120121
}
121122
]
122123

124+
export const gerritQuickActions: QuickAction<GerritConnectionConfig>[] = [
125+
{
126+
fn: (previous: GerritConnectionConfig) => ({
127+
...previous,
128+
projects: [
129+
...(previous.projects ?? []),
130+
""
131+
]
132+
}),
133+
name: "Add a project",
134+
},
135+
{
136+
fn: (previous: GerritConnectionConfig) => ({
137+
...previous,
138+
url: previous.url ?? "",
139+
}),
140+
name: "Set a custom url",
141+
}
142+
]
143+

0 commit comments

Comments
 (0)