#add env management
This commit is contained in:
264
app/Http/Controllers/EnvController.php
Normal file
264
app/Http/Controllers/EnvController.php
Normal file
@@ -0,0 +1,264 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Services\EnvService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class EnvController extends Controller
|
||||
{
|
||||
private EnvService $envManager;
|
||||
|
||||
public function __construct(EnvService $envManager)
|
||||
{
|
||||
$this->envManager = $envManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示环境管理页面
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('env.index');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有项目列表
|
||||
*/
|
||||
public function getProjects(): JsonResponse
|
||||
{
|
||||
try {
|
||||
$projects = $this->envManager->getProjects();
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $projects
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目的环境配置列表
|
||||
*/
|
||||
public function getEnvs(string $project): JsonResponse
|
||||
{
|
||||
try {
|
||||
$envs = $this->envManager->getProjectEnvs($project);
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $envs
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取环境配置文件内容
|
||||
*/
|
||||
public function getEnvContent(string $project, string $env): JsonResponse
|
||||
{
|
||||
try {
|
||||
$content = $this->envManager->getEnvContent($project, $env);
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => [
|
||||
'content' => $content
|
||||
]
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 404);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存环境配置文件
|
||||
*/
|
||||
public function saveEnv(Request $request): JsonResponse
|
||||
{
|
||||
|
||||
try {
|
||||
$success = $this->envManager->saveEnv(
|
||||
$request->input('project'),
|
||||
$request->input('env'),
|
||||
$request->input('content')
|
||||
);
|
||||
|
||||
if ($success) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => '环境配置保存成功'
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '环境配置保存失败'
|
||||
], 500);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用环境配置到项目
|
||||
*/
|
||||
public function applyEnv(Request $request): JsonResponse
|
||||
{
|
||||
|
||||
try {
|
||||
$success = $this->envManager->applyEnv(
|
||||
$request->input('project'),
|
||||
$request->input('env')
|
||||
);
|
||||
|
||||
if ($success) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => '环境配置应用成功'
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '环境配置应用失败'
|
||||
], 500);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 从项目导入环境配置
|
||||
*/
|
||||
public function importEnv(Request $request): JsonResponse
|
||||
{
|
||||
|
||||
try {
|
||||
$success = $this->envManager->importFromProject(
|
||||
$request->input('project'),
|
||||
$request->input('env')
|
||||
);
|
||||
|
||||
if ($success) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => '环境配置导入成功'
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '环境配置导入失败'
|
||||
], 500);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除环境配置
|
||||
*/
|
||||
public function deleteEnv(string $project, string $env): JsonResponse
|
||||
{
|
||||
try {
|
||||
$success = $this->envManager->deleteEnv($project, $env);
|
||||
|
||||
if ($success) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => '环境配置删除成功'
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '环境配置删除失败'
|
||||
], 500);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目当前.env文件内容
|
||||
*/
|
||||
public function getCurrentEnv(string $project): JsonResponse
|
||||
{
|
||||
try {
|
||||
$content = $this->envManager->getCurrentProjectEnv($project);
|
||||
|
||||
if ($content === null) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '项目没有.env文件'
|
||||
], 404);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => [
|
||||
'content' => $content
|
||||
]
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建新的环境配置文件
|
||||
*/
|
||||
public function createEnv(Request $request): JsonResponse
|
||||
{
|
||||
try {
|
||||
$success = $this->envManager->createNewEnv(
|
||||
$request->input('project'),
|
||||
$request->input('env_name')
|
||||
);
|
||||
|
||||
if ($success) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => '环境配置文件创建成功'
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '环境配置文件创建失败'
|
||||
], 500);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
], 400);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user