import { GithubConnectionConfig } from "@sourcebot/schemas/v3/github.type" import { GitlabConnectionConfig } from "@sourcebot/schemas/v3/gitlab.type"; import { QuickAction } from "../components/configEditor"; import { GiteaConnectionConfig } from "@sourcebot/schemas/v3/connection.type"; import { GerritConnectionConfig } from "@sourcebot/schemas/v3/gerrit.type"; import { cn } from "@/lib/utils"; const Code = ({ children, className, title }: { children: React.ReactNode, className?: string, title?: string }) => { return ( {children} ) } export const githubQuickActions: QuickAction[] = [ { fn: (previous: GithubConnectionConfig) => ({ ...previous, repos: [ ...(previous.repos ?? []), "/" ] }), name: "Add a single repo", selectionText: "/", description: (
Add a individual repository to sync with. Ensure the repository is visible to the provided token (if any). Examples:
{[ "sourcebot/sourcebot", "vercel/next.js", "torvalds/linux" ].map((repo) => ( {repo} ))}
) }, { fn: (previous: GithubConnectionConfig) => ({ ...previous, orgs: [ ...(previous.orgs ?? []), "" ] }), name: "Add an organization", selectionText: "", description: (
Add an organization to sync with. All repositories in the organization visible to the provided token (if any) will be synced. Examples:
{[ "commaai", "sourcebot", "vercel" ].map((org) => ( {org} ))}
) }, { fn: (previous: GithubConnectionConfig) => ({ ...previous, users: [ ...(previous.users ?? []), "" ] }), name: "Add a user", selectionText: "", description: (
Add a user to sync with. All repositories that the user owns visible to the provided token (if any) will be synced. Examples:
{[ "jane-doe", "torvalds", "octocat" ].map((org) => ( {org} ))}
) }, { fn: (previous: GithubConnectionConfig) => ({ ...previous, url: previous.url ?? "https://github.example.com", }), name: "Set a custom url", selectionText: "https://github.example.com", description: Set a custom GitHub host. Defaults to https://github.com. }, { fn: (previous: GithubConnectionConfig) => ({ ...previous, exclude: { ...previous.exclude, repos: [ ...(previous.exclude?.repos ?? []), "" ] } }), name: "Exclude by repo name", selectionText: "", description: (
Exclude repositories from syncing by name. Glob patterns are supported. Examples:
{[ "my-org/docs*", "my-org/test*" ].map((repo) => ( {repo} ))}
) }, { fn: (previous: GithubConnectionConfig) => ({ ...previous, exclude: { ...previous.exclude, topics: [ ...(previous.exclude?.topics ?? []), "" ] } }), name: "Exclude by topic", selectionText: "", description: (
Exclude topics from syncing. Only repos that do not match any of the provided topics will be synced. Glob patterns are supported. Examples:
{[ "docs", "ci" ].map((repo) => ( {repo} ))}
) }, { fn: (previous: GithubConnectionConfig) => ({ ...previous, topics: [ ...(previous.topics ?? []), "" ] }), name: "Include by topic", selectionText: "", description: (
Include repositories by topic. Only repos that match at least one of the provided topics will be synced. Glob patterns are supported. Examples:
{[ "docs", "ci" ].map((repo) => ( {repo} ))}
) }, { fn: (previous: GithubConnectionConfig) => ({ ...previous, exclude: { ...previous.exclude, archived: true, } }), name: "Exclude archived repos", description: Exclude archived repositories from syncing. }, { fn: (previous: GithubConnectionConfig) => ({ ...previous, exclude: { ...previous.exclude, forks: true, } }), name: "Exclude forked repos", description: Exclude forked repositories from syncing. } ]; export const gitlabQuickActions: QuickAction[] = [ { fn: (previous: GitlabConnectionConfig) => ({ ...previous, projects: [ ...previous.projects ?? [], "" ] }), name: "Add a project", description: (
Add a individual project to sync with. Ensure the project is visible to the provided token (if any). Examples:
{[ "gitlab-org/gitlab", "corp/team-project", ].map((repo) => ( {repo} ))}
) }, { fn: (previous: GitlabConnectionConfig) => ({ ...previous, users: [ ...previous.users ?? [], "" ] }), name: "Add a user", description: (
Add a user to sync with. All projects that the user owns visible to the provided token (if any) will be synced. Examples:
{[ "jane-doe", "torvalds" ].map((org) => ( {org} ))}
) }, { fn: (previous: GitlabConnectionConfig) => ({ ...previous, groups: [ ...previous.groups ?? [], "" ] }), name: "Add a group", description: (
Add a group to sync with. All projects in the group (and recursive subgroups) visible to the provided token (if any) will be synced. Examples:
{[ "my-group", "path/to/subgroup" ].map((org) => ( {org} ))}
) }, { fn: (previous: GitlabConnectionConfig) => ({ ...previous, url: previous.url ?? "", }), name: "Set a custom url", description: Set a custom GitLab host. Defaults to https://gitlab.com. }, { fn: (previous: GitlabConnectionConfig) => ({ ...previous, all: true, }), name: "Sync all projects", description: Sync all projects visible to the provided token (if any). Only available when using a self-hosted GitLab instance. }, { fn: (previous: GitlabConnectionConfig) => ({ ...previous, exclude: { ...previous.exclude, projects: [ ...(previous.exclude?.projects ?? []), "" ] } }), name: "Exclude a project", description: (
List of projects to exclude from syncing. Glob patterns are supported. Examples:
{[ "docs/**", "**/tests/**", ].map((repo) => ( {repo} ))}
) } ] export const giteaQuickActions: QuickAction[] = [ { fn: (previous: GiteaConnectionConfig) => ({ ...previous, orgs: [ ...(previous.orgs ?? []), "" ] }), name: "Add an organization", }, { fn: (previous: GiteaConnectionConfig) => ({ ...previous, repos: [ ...(previous.repos ?? []), "" ] }), name: "Add a repo", }, { fn: (previous: GiteaConnectionConfig) => ({ ...previous, url: previous.url ?? "", }), name: "Set a custom url", }, { fn: (previous: GiteaConnectionConfig) => ({ ...previous, token: previous.token ?? { secret: "", }, }), name: "Add a secret", } ] export const gerritQuickActions: QuickAction[] = [ { fn: (previous: GerritConnectionConfig) => ({ ...previous, projects: [ ...(previous.projects ?? []), "" ] }), name: "Add a project", }, { fn: (previous: GerritConnectionConfig) => ({ ...previous, exclude: { ...previous.exclude, projects: [ ...(previous.exclude?.projects ?? []), "" ] } }), name: "Exclude a project", } ]