remote

package
v2.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const GitHubWorkflowDir = ".github/workflows"

GitHubWorkflowDir is the directory where GitHub Actions workflow files live.

Variables

View Source
var CandidateWorkflowFiles = []string{"cidx.yml", "ci.yml"}

CandidateWorkflowFiles lists the workflow filenames cidx recognizes, in preference order. `cidx generate github` writes cidx.yml; ci.yml is the conventional name for hand-written workflows (cidx's own repo uses it). Every code path that needs "the cidx workflow" must derive its candidates from this list instead of hardcoding a filename (issue #170).

Functions

func BuildBaseURL

func BuildBaseURL(host string, providerType ProviderType) string

BuildBaseURL constructs the API base URL for a provider For GitHub: https://api.github.com (or custom for enterprise) For GitLab: https://gitlab.com/api/v4 (or custom for self-hosted)

func ExtractHostFromURL

func ExtractHostFromURL(remoteURL string) string

ExtractHostFromURL extracts the hostname from a git remote URL Returns the host for self-hosted instances

func ParseRemoteURL

func ParseRemoteURL(remoteURL string) (owner, repo string, err error)

ParseRemoteURL extracts owner and repo from a git remote URL

func ResolveWorkflowFile

func ResolveWorkflowFile(dir string) (string, error)

ResolveWorkflowFile returns the path of the first candidate workflow file that exists in dir. When none is found, the error names every candidate tried so the user knows what was searched.

Types

type Artifact

type Artifact struct {
	ID           int64
	Name         string
	SizeInBytes  int64
	CreatedAt    time.Time
	ExpiresAt    time.Time
	Expired      bool
	WorkflowRun  string // Workflow run that created this artifact
	WorkflowName string // Name of the workflow
}

Artifact represents a workflow artifact

type ArtifactStats

type ArtifactStats struct {
	TotalCount int
	TotalSize  int64
	Artifacts  []Artifact
}

ArtifactStats represents artifact storage statistics

type CheckRun

type CheckRun struct {
	ID          int64
	Name        string
	Status      string // queued, in_progress, completed
	Conclusion  string // success, failure, cancelled, skipped
	URL         string
	StartedAt   time.Time
	CompletedAt time.Time
	FailedStep  string // Name of the failed step (if any)
	ErrorLog    string // Last lines of error log (if failed)
}

CheckRun represents a GitHub Actions check run

type CommitInfo

type CommitInfo struct {
	SHA     string
	Message string
	Author  string
	Date    time.Time
}

CommitInfo represents a commit in a PR

type Job

type Job struct {
	Name       string
	Status     string // queued, in_progress, completed
	Conclusion string // success, failure, cancelled, skipped
}

Job represents a job within a workflow

type LinkedIssue

type LinkedIssue struct {
	Number    int
	Title     string
	Body      string
	State     string // open, closed
	URL       string
	Labels    []string
	Assignees []string
	CreatedAt time.Time
	UpdatedAt time.Time
	Author    string
}

LinkedIssue represents an issue linked to a PR

type PRChecks

type PRChecks struct {
	TotalCount   int
	Pending      int
	Success      int
	Failure      int
	Queued       int
	InProgress   int
	Status       string // pending, success, failure
	HeadSHA      string // The commit SHA these checks are for
	UpdatedAt    time.Time
	Checks       []CheckRun
	StatusChecks []StatusCheck
}

PRChecks represents the status of all checks for a PR

type PRChecksUpdate

type PRChecksUpdate struct {
	Checks *PRChecks
	Error  error
}

PRChecksUpdate represents a PR checks status update

type Provider

type Provider interface {
	// GetLatestWorkflow returns the most recent workflow run for a branch
	GetLatestWorkflow(ctx context.Context, branch string) (*Workflow, error)

	// GetLatestRunForBranch returns the most recent workflow run on a branch
	// across all workflows in the repository, regardless of workflow file name.
	// Useful for watching runs on non-PR branches (e.g., direct pushes to main).
	GetLatestRunForBranch(ctx context.Context, branch string) (*Workflow, error)

	// GetWorkflowRun returns a workflow run by its provider-specific ID.
	GetWorkflowRun(ctx context.Context, runID string) (*Workflow, error)

	// WatchWorkflow streams updates for a running workflow
	WatchWorkflow(ctx context.Context, workflowID string) (<-chan WorkflowUpdate, error)

	// CreatePullRequest creates a new pull request
	CreatePullRequest(ctx context.Context, title, body, head, base string, draft bool) (number int, url string, err error)

	// MarkPullRequestReady marks a draft PR as ready for review
	MarkPullRequestReady(ctx context.Context, prNumber int) error

	// GetPullRequestByBranch finds a PR for the given head branch
	GetPullRequestByBranch(ctx context.Context, branch string) (number int, url string, err error)

	// MergePullRequest merges a pull request
	MergePullRequest(ctx context.Context, prNumber int, method string) error

	// UpdatePullRequest updates the title and/or body of a pull request.
	// Empty strings leave the corresponding field unchanged.
	UpdatePullRequest(ctx context.Context, prNumber int, title, body string) error

	// GetPullRequestChecks returns the status of all checks/workflows for a PR
	GetPullRequestChecks(ctx context.Context, prNumber int) (*PRChecks, error)

	// WaitForChecksToStart waits for CI checks to start for a PR.
	// expectedSHA pins the commit whose checks are awaited (e.g. the commit
	// just pushed); when empty, the PR's current head is resolved from the
	// provider API. Right after a push that API read can lag behind the true
	// head, so callers that know the pushed SHA must pass it (issue #167).
	// Returns the HEAD SHA being checked and the initial checks status.
	WaitForChecksToStart(ctx context.Context, prNumber int, expectedSHA string, timeout time.Duration) (headSHA string, checks *PRChecks, err error)

	// WatchPullRequestChecks streams updates for PR checks until all complete
	WatchPullRequestChecks(ctx context.Context, prNumber int) (<-chan PRChecksUpdate, error)
}

Provider is the interface for CI/CD providers (GitHub, GitLab, etc.)

type ProviderType

type ProviderType string

ProviderType represents the type of git remote provider

const (
	ProviderTypeGitHub  ProviderType = "github"
	ProviderTypeGitLab  ProviderType = "gitlab"
	ProviderTypeUnknown ProviderType = "unknown"
)

func DetectProviderFromURL

func DetectProviderFromURL(remoteURL string) ProviderType

DetectProviderFromURL detects the provider type from a git remote URL Supports both SSH (git@host:owner/repo.git) and HTTPS (https://host/owner/repo.git) formats

type PullRequestDetails

type PullRequestDetails struct {
	Number       int
	Title        string
	Body         string
	State        string // open, closed, merged
	Draft        bool
	HeadBranch   string
	BaseBranch   string
	HeadSHA      string
	Author       string
	CreatedAt    time.Time
	UpdatedAt    time.Time
	Additions    int
	Deletions    int
	ChangedFiles int
	Mergeable    bool
	MergeMethod  string // merge, squash, rebase
	URL          string
	Labels       []string
	Reviewers    []ReviewerStatus
	LinkedIssues []LinkedIssue
	Commits      []CommitInfo
}

PullRequestDetails contains full details about a pull request for TUI display

type ReviewerStatus

type ReviewerStatus struct {
	Login  string
	State  string // PENDING, APPROVED, CHANGES_REQUESTED, COMMENTED, DISMISSED
	Avatar string
}

ReviewerStatus represents a reviewer and their review status

type StatusCheck

type StatusCheck struct {
	Context string
	State   string // pending, success, failure, error
	URL     string
}

StatusCheck represents a commit status check

type Workflow

type Workflow struct {
	ID         string
	Status     string // queued, in_progress, completed
	Conclusion string // success, failure, cancelled, skipped
	Jobs       []Job
	URL        string
}

Workflow represents a CI/CD workflow run

type WorkflowUpdate

type WorkflowUpdate struct {
	Workflow *Workflow
	Error    error
}

WorkflowUpdate represents a workflow status update

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL