Julius MarmingeT3 Code Mobile [WIP] (#2013)b3e8c035 months agoHistory
77 lines · 2.7 KB · TypeScript
RawDownload
import * as Context from "effect/Context";import type * as Effect from "effect/Effect"; import type {  VcsDriverCapabilities,  VcsError,  VcsInitInput,  VcsListRemotesResult,  VcsListWorkspaceFilesResult,  ReviewDiffPreviewInput,  ReviewDiffPreviewResult,  VcsRepositoryIdentity,} from "@t3tools/contracts";import { CheckpointRef } from "@t3tools/contracts";import * as VcsProcess from "./VcsProcess.ts"; export interface VcsCaptureCheckpointInput {  readonly cwd: string;  readonly checkpointRef: CheckpointRef;} export interface VcsRestoreCheckpointInput {  readonly cwd: string;  readonly checkpointRef: CheckpointRef;  readonly fallbackToHead?: boolean;} export interface VcsDiffCheckpointsInput {  readonly cwd: string;  readonly fromCheckpointRef: CheckpointRef;  readonly toCheckpointRef: CheckpointRef;  readonly fallbackFromToHead?: boolean;  readonly ignoreWhitespace: boolean;} export interface VcsDeleteCheckpointRefsInput {  readonly cwd: string;  readonly checkpointRefs: ReadonlyArray<CheckpointRef>;} export interface VcsCheckpointOps {  readonly captureCheckpoint: (input: VcsCaptureCheckpointInput) => Effect.Effect<void, VcsError>;  readonly hasCheckpointRef: (    input: Omit<VcsRestoreCheckpointInput, "fallbackToHead">,  ) => Effect.Effect<boolean, VcsError>;  readonly restoreCheckpoint: (    input: VcsRestoreCheckpointInput,  ) => Effect.Effect<boolean, VcsError>;  readonly diffCheckpoints: (input: VcsDiffCheckpointsInput) => Effect.Effect<string, VcsError>;  readonly deleteCheckpointRefs: (    input: VcsDeleteCheckpointRefsInput,  ) => Effect.Effect<void, VcsError>;} export interface VcsDriverShape {  readonly capabilities: VcsDriverCapabilities;  readonly execute: (    input: Omit<VcsProcess.VcsProcessInput, "command">,  ) => Effect.Effect<VcsProcess.VcsProcessOutput, VcsError>;  readonly checkpoints?: VcsCheckpointOps;  readonly detectRepository: (cwd: string) => Effect.Effect<VcsRepositoryIdentity | null, VcsError>;  readonly isInsideWorkTree: (cwd: string) => Effect.Effect<boolean, VcsError>;  readonly listWorkspaceFiles: (    cwd: string,  ) => Effect.Effect<VcsListWorkspaceFilesResult, VcsError>;  readonly listRemotes: (cwd: string) => Effect.Effect<VcsListRemotesResult, VcsError>;  readonly filterIgnoredPaths: (    cwd: string,    relativePaths: ReadonlyArray<string>,  ) => Effect.Effect<ReadonlyArray<string>, VcsError>;  readonly initRepository: (input: VcsInitInput) => Effect.Effect<void, VcsError>;  readonly getDiffPreview?: (    input: ReviewDiffPreviewInput,  ) => Effect.Effect<ReviewDiffPreviewResult, VcsError>;} export class VcsDriver extends Context.Service<VcsDriver, VcsDriverShape>()("t3/vcs/VcsDriver") {}