dmux
Version:
Tmux pane manager with AI agent integration for parallel development workflows
44 lines • 1.76 kB
JavaScript
import usePaneRunner from './usePaneRunner.js';
export default function useCommandRunner({ panes, savePanes, projectSettings, saveSettings, setShowCommandPrompt, setShowFileCopyPrompt, setCurrentCommandType, setStatusMessage, setRunningCommand, }) {
const { runCommandInternal, copyNonGitFiles } = usePaneRunner({
panes,
savePanes,
projectSettings,
setStatusMessage,
setRunningCommand,
});
const runCommand = async (type, pane) => {
if (!pane.worktreePath) {
setStatusMessage('No worktree path for this pane');
setTimeout(() => setStatusMessage(''), 2000);
return;
}
const command = type === 'test' ? projectSettings.testCommand : projectSettings.devCommand;
const isFirstRun = type === 'test' ? !projectSettings.firstTestRun : !projectSettings.firstDevRun;
if (!command) {
setShowCommandPrompt(type);
return;
}
if (isFirstRun) {
setShowFileCopyPrompt(true);
setCurrentCommandType(type);
setStatusMessage(`First time running ${type} command...`);
return;
}
await runCommandInternal(type, pane);
};
const handleFirstRunResponse = async (accepted, type, pane) => {
if (!pane.worktreePath)
return;
if (accepted)
await copyNonGitFiles(pane.worktreePath);
const newSettings = {
...projectSettings,
[type === 'test' ? 'firstTestRun' : 'firstDevRun']: true,
};
await saveSettings(newSettings);
await runCommandInternal(type, pane);
};
return { runCommand, handleFirstRunResponse };
}
//# sourceMappingURL=useCommandRunner.js.map