265 lines
7.0 KiB
PHP
265 lines
7.0 KiB
PHP
<?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);
|
|
}
|
|
}
|
|
}
|