mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-31 20:03:37 +00:00
This commit introduces the ability to run initialization scripts for worktrees, enhancing the setup process. Key changes include: 1. **New API Endpoint**: Added a POST endpoint to run the init script for a specified worktree. 2. **Worktree Routes**: Updated worktree routes to include the new run init script handler. 3. **Init Script Service**: Enhanced the Init Script Service to support running scripts asynchronously and handling errors. 4. **UI Updates**: Added UI components to check for the existence of init scripts and trigger their execution, providing user feedback through toast notifications. 5. **Event Handling**: Implemented event handling for init script execution status, allowing real-time updates in the UI. This feature streamlines the workflow for users by automating the execution of setup scripts, improving overall project management.
109 lines
4.4 KiB
TypeScript
109 lines
4.4 KiB
TypeScript
/**
|
|
* Worktree routes - HTTP API for git worktree operations
|
|
*/
|
|
|
|
import { Router } from 'express';
|
|
import type { EventEmitter } from '../../lib/events.js';
|
|
import { validatePathParams } from '../../middleware/validate-paths.js';
|
|
import { requireValidWorktree, requireValidProject, requireGitRepoOnly } from './middleware.js';
|
|
import { createInfoHandler } from './routes/info.js';
|
|
import { createStatusHandler } from './routes/status.js';
|
|
import { createListHandler } from './routes/list.js';
|
|
import { createDiffsHandler } from './routes/diffs.js';
|
|
import { createFileDiffHandler } from './routes/file-diff.js';
|
|
import { createMergeHandler } from './routes/merge.js';
|
|
import { createCreateHandler } from './routes/create.js';
|
|
import { createDeleteHandler } from './routes/delete.js';
|
|
import { createCreatePRHandler } from './routes/create-pr.js';
|
|
import { createPRInfoHandler } from './routes/pr-info.js';
|
|
import { createCommitHandler } from './routes/commit.js';
|
|
import { createPushHandler } from './routes/push.js';
|
|
import { createPullHandler } from './routes/pull.js';
|
|
import { createCheckoutBranchHandler } from './routes/checkout-branch.js';
|
|
import { createListBranchesHandler } from './routes/list-branches.js';
|
|
import { createSwitchBranchHandler } from './routes/switch-branch.js';
|
|
import {
|
|
createOpenInEditorHandler,
|
|
createGetDefaultEditorHandler,
|
|
} from './routes/open-in-editor.js';
|
|
import { createInitGitHandler } from './routes/init-git.js';
|
|
import { createMigrateHandler } from './routes/migrate.js';
|
|
import { createStartDevHandler } from './routes/start-dev.js';
|
|
import { createStopDevHandler } from './routes/stop-dev.js';
|
|
import { createListDevServersHandler } from './routes/list-dev-servers.js';
|
|
import {
|
|
createGetInitScriptHandler,
|
|
createPutInitScriptHandler,
|
|
createDeleteInitScriptHandler,
|
|
createRunInitScriptHandler,
|
|
} from './routes/init-script.js';
|
|
|
|
export function createWorktreeRoutes(events: EventEmitter): Router {
|
|
const router = Router();
|
|
|
|
router.post('/info', validatePathParams('projectPath'), createInfoHandler());
|
|
router.post('/status', validatePathParams('projectPath'), createStatusHandler());
|
|
router.post('/list', createListHandler());
|
|
router.post('/diffs', validatePathParams('projectPath'), createDiffsHandler());
|
|
router.post('/file-diff', validatePathParams('projectPath', 'filePath'), createFileDiffHandler());
|
|
router.post(
|
|
'/merge',
|
|
validatePathParams('projectPath'),
|
|
requireValidProject,
|
|
createMergeHandler()
|
|
);
|
|
router.post('/create', validatePathParams('projectPath'), createCreateHandler(events));
|
|
router.post('/delete', validatePathParams('projectPath', 'worktreePath'), createDeleteHandler());
|
|
router.post('/create-pr', createCreatePRHandler());
|
|
router.post('/pr-info', createPRInfoHandler());
|
|
router.post(
|
|
'/commit',
|
|
validatePathParams('worktreePath'),
|
|
requireGitRepoOnly,
|
|
createCommitHandler()
|
|
);
|
|
router.post(
|
|
'/push',
|
|
validatePathParams('worktreePath'),
|
|
requireValidWorktree,
|
|
createPushHandler()
|
|
);
|
|
router.post(
|
|
'/pull',
|
|
validatePathParams('worktreePath'),
|
|
requireValidWorktree,
|
|
createPullHandler()
|
|
);
|
|
router.post('/checkout-branch', requireValidWorktree, createCheckoutBranchHandler());
|
|
router.post(
|
|
'/list-branches',
|
|
validatePathParams('worktreePath'),
|
|
requireValidWorktree,
|
|
createListBranchesHandler()
|
|
);
|
|
router.post('/switch-branch', requireValidWorktree, createSwitchBranchHandler());
|
|
router.post('/open-in-editor', validatePathParams('worktreePath'), createOpenInEditorHandler());
|
|
router.get('/default-editor', createGetDefaultEditorHandler());
|
|
router.post('/init-git', validatePathParams('projectPath'), createInitGitHandler());
|
|
router.post('/migrate', createMigrateHandler());
|
|
router.post(
|
|
'/start-dev',
|
|
validatePathParams('projectPath', 'worktreePath'),
|
|
createStartDevHandler()
|
|
);
|
|
router.post('/stop-dev', createStopDevHandler());
|
|
router.post('/list-dev-servers', createListDevServersHandler());
|
|
|
|
// Init script routes
|
|
router.post('/init-script', validatePathParams('projectPath'), createGetInitScriptHandler());
|
|
router.put('/init-script', validatePathParams('projectPath'), createPutInitScriptHandler());
|
|
router.delete('/init-script', validatePathParams('projectPath'), createDeleteInitScriptHandler());
|
|
router.post(
|
|
'/run-init-script',
|
|
validatePathParams('projectPath', 'worktreePath'),
|
|
createRunInitScriptHandler(events)
|
|
);
|
|
|
|
return router;
|
|
}
|