mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-02 08:33:36 +00:00
This commit updates various modules to utilize the secure file system operations from the secureFs module instead of the native fs module. Key changes include: - Replaced fs imports with secureFs in multiple route handlers and services to enhance security and consistency in file operations. - Added centralized validation for working directories in the sdk-options module to ensure all AI model invocations are secure. These changes aim to improve the security and maintainability of file handling across the application.
64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
/**
|
|
* POST /init-git endpoint - Initialize a git repository in a directory
|
|
*/
|
|
|
|
import type { Request, Response } from 'express';
|
|
import { exec } from 'child_process';
|
|
import { promisify } from 'util';
|
|
import * as secureFs from '../../../lib/secure-fs.js';
|
|
import { join } from 'path';
|
|
import { getErrorMessage, logError } from '../common.js';
|
|
|
|
const execAsync = promisify(exec);
|
|
|
|
export function createInitGitHandler() {
|
|
return async (req: Request, res: Response): Promise<void> => {
|
|
try {
|
|
const { projectPath } = req.body as {
|
|
projectPath: string;
|
|
};
|
|
|
|
if (!projectPath) {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: 'projectPath required',
|
|
});
|
|
return;
|
|
}
|
|
|
|
// Check if .git already exists
|
|
const gitDirPath = join(projectPath, '.git');
|
|
try {
|
|
await secureFs.access(gitDirPath);
|
|
// .git exists
|
|
res.json({
|
|
success: true,
|
|
result: {
|
|
initialized: false,
|
|
message: 'Git repository already exists',
|
|
},
|
|
});
|
|
return;
|
|
} catch {
|
|
// .git doesn't exist, continue with initialization
|
|
}
|
|
|
|
// Initialize git and create an initial empty commit
|
|
await execAsync(`git init && git commit --allow-empty -m "Initial commit"`, {
|
|
cwd: projectPath,
|
|
});
|
|
|
|
res.json({
|
|
success: true,
|
|
result: {
|
|
initialized: true,
|
|
message: 'Git repository initialized with initial commit',
|
|
},
|
|
});
|
|
} catch (error) {
|
|
logError(error, 'Init git failed');
|
|
res.status(500).json({ success: false, error: getErrorMessage(error) });
|
|
}
|
|
};
|
|
}
|