
package cd.casic.plugin;

import org.pf4j.RuntimeMode;

import java.util.Set;

/**
 * 插件系统属性接口，定义了插件系统的一些核心配置和操作
 */
public interface IPluginSystemProperties {

    /**
     * 检查插件系统是否启用
     *
     * @return 如果插件系统启用则返回true，否则返回false
     */
    Boolean enable();

    /**
     * 获取REST API路径前缀
     *
     * @return REST API路径前缀字符串
     */
    String restPathPrefix();

    /**
     * 检查插件ID是否作为REST路径前缀启用
     *
     * @return 如果启用插件ID作为REST路径前缀则返回true，否则返回false
     */
    Boolean enablePluginIdAsRestPrefix();

    /**
     * 获取运行时模式
     *
     * @return 当前运行时模式
     */
    RuntimeMode runtimeMode();

    /**
     * 获取插件根目录路径
     *
     * @return 插件根目录路径字符串
     */
    String pluginsRoot();

    /**
     * 获取已启用插件的ID集合
     *
     * @return 包含已启用插件ID的集合
     */
    Set<String> enabledPlugins();

    /**
     * 获取已禁用插件的ID集合
     *
     * @return 包含已禁用插件ID的集合
     */
    Set<String> disabledPlugins();
}