package com.mini.capi.config.component;

import org.springframework.stereotype.Component;

import java.io.File;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLConnection;

@Component
public class AppPathInfo {

    // 获取当前工作目录（执行启动命令的目录）
    public String getWorkDir() {
        return System.getProperty("user.dir");
    }

    public String getJarDir() {
        URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
        String path = null;
        try {
            URLConnection connection = url.openConnection();
            if (connection instanceof JarURLConnection) {
                // 处理Jar包环境：获取Jar文件路径并截取目录
                JarURLConnection jarConn = (JarURLConnection) connection;
                String jarFilePath = jarConn.getJarFile().getName(); // 获取Jar文件完整路径（如：/xxx/xxx/xxx.jar）
                // 截取Jar文件所在目录（去掉文件名部分）
                path = jarFilePath.substring(0, jarFilePath.lastIndexOf(File.separator));
            } else {
                // 处理本地开发环境（文件夹形式运行）
                path = new File(url.toURI()).getParentFile().getAbsolutePath();
            }
        } catch (Exception e) {
            e.printStackTrace();
            // 兜底方案：获取当前工作目录
            path = System.getProperty("user.dir");
        }
        return path;
    }

    public String getResourceDir() {
        URL resourceUrl = getClass().getClassLoader().getResource("");
        if (resourceUrl != null) {
            return new File(resourceUrl.getPath()).getAbsolutePath();
        }
        return "unknown-resource-dir";
    }
}
