UNPKG

worktree-tool

Version:

A command-line tool for managing Git worktrees with integrated tmux/shell session management

51 lines 2.23 kB
import path from "path"; import { sanitizeTmuxName } from "../platform/tmux.js"; import { tmuxWindowManager } from "../platform/tmux-window-manager.js"; import { getErrorMessage } from "../utils/error-handler.js"; import { AutoRunManager } from "./autorun-manager.js"; export class RefreshManager { config; logger; constructor(config, logger) { this.config = config; this.logger = logger; } async refreshWorktrees(worktrees) { const sessionName = sanitizeTmuxName(this.config.projectName); for (const worktree of worktrees) { await this.refreshWorktree(worktree, sessionName); } // Sort windows if enabled if (this.config.autoSort && this.config.tmux) { try { this.logger.verbose(`Sorting windows for session: ${sessionName}`); await tmuxWindowManager.sortWindowsAlphabetically(sessionName); this.logger.verbose("Window sorting completed"); } catch (error) { this.logger.warn(`Failed to sort windows: ${getErrorMessage(error)}`); } } else { this.logger.verbose(`Window sorting skipped - autoSort: ${String(this.config.autoSort)}, tmux: ${String(this.config.tmux)}`); } } async refreshWorktree(worktree, sessionName) { const worktreeName = path.basename(worktree.path); if (!this.config.commands) { return; } for (const [cmdName, cmdConfig] of Object.entries(this.config.commands)) { if (typeof cmdConfig === "object" && cmdConfig.autoRun) { const windowName = `${worktreeName}::${cmdName}`; const isRunning = await tmuxWindowManager.isCommandRunning(sessionName, windowName); if (!isRunning) { this.logger.info(`Starting missing autoRun command: ${cmdName} for ${worktreeName}`); const autoRunManager = new AutoRunManager(this.config, this.logger); await autoRunManager.runCommand(cmdName, cmdConfig, worktreeName, worktree.path); } } } } } //# sourceMappingURL=refresh-manager.js.map