UNPKG

@builder.io/dev-tools

Version:

Builder.io Visual CMS Devtools

63 lines (62 loc) 2.31 kB
import type { DevToolsSys } from "@builder.io/dev-tools/core"; import type { FusionConfig, WorkspaceFolder } from "$/ai-utils"; export interface InitConfig { fusionConfig: FusionConfig; sys: DevToolsSys; debug?: boolean; } export interface InitStatus { message: string; error?: string; } declare enum InitStateStep { Init = "init", Validation = "validation", CheckDirectories = "check-directories", CreateDirectories = "create-directories", ConfigureGitRepos = "configure-git-repos", CheckExistingGit = "check-existing-git", UpdateRemoteUrl = "update-remote-url", CloneRepo = "clone-repo", ConfigureGitUser = "configure-git-user", StashChanges = "stash-changes", InitSuccess = "init-success", InitFailed = "init-failed" } export interface InitStatusLog { id: number; timestamp: string; type: "status" | "log" | "error" | "complete"; message: string; step?: InitStateStep; error?: string; success?: boolean; } export declare class InitStateMachine { logIdCounter: number; initStatusLogs: InitStatusLog[]; initState: { isRunning: boolean; isComplete: boolean; success: boolean; currentStep: string; error: string | undefined; }; debug: boolean; init(config: InitConfig, signal?: AbortSignal): Promise<boolean>; addInitLog(type: "status" | "log" | "error" | "complete", message: string, options?: { step?: InitStateStep; error?: string; success?: boolean; }): void; clearInitLogs(): void; step1CheckDirectories(config: InitConfig, repositories: Required<WorkspaceFolder>[], signal?: AbortSignal): Promise<void>; step2ConfigureGitRepositories(config: InitConfig, repositories: Required<WorkspaceFolder>[], signal?: AbortSignal): Promise<void>; step3ConfigureGitUser(config: InitConfig, repositories: Required<WorkspaceFolder>[], signal?: AbortSignal): Promise<void>; step4StashChanges(config: InitConfig, repositories: Required<WorkspaceFolder>[], signal?: AbortSignal): Promise<void>; private isGitConfigured; private getGitRemoteUrl; private sanitizeGitRemoteUrl; cloneRepository(repo: Required<WorkspaceFolder>, repoPath: string, signal?: AbortSignal): Promise<boolean>; } export {};