Просмотр исходного кода

修复自定义 config 路径的 bug,调整所有平台都支持自定义 config 路径

Signed-off-by: allan716 <[email protected]>
allan716 3 лет назад
Родитель
Сommit
106896b1a8
3 измененных файлов с 23 добавлено и 16 удалено
  1. 2 1
      cmd/chinesesubfinder/main.go
  2. 17 6
      pkg/folder.go
  3. 4 9
      pkg/log_helper/log_hub.go

+ 2 - 1
cmd/chinesesubfinder/main.go

@@ -52,7 +52,8 @@ func init() {
 	// 要先进行 flag 的读取,并且写入全局变量中,否则后续的逻辑由于顺序问题故障
 	flag.Parse()
 	pkg.SetLinuxConfigPathInSelfPath(*setLinuxConfigPathInSelfPathFlag)
-
+	// 第一次运行需要清理、读取一次
+	log_helper.CleanAndLoadOnceLogs()
 	loggerBase = newLog()
 	// --------------------------------------------------
 	if strings.ToLower(LiteMode) == "true" || *setLiteModeFlag == true {

+ 17 - 6
pkg/folder.go

@@ -382,7 +382,7 @@ func GetConfigRootDirFPath() string {
 	if sysType == "linux" {
 
 		if LinuxConfigPathInSelfPath() != "" {
-			// 跟 Windows 一样直接在当前程序目录下的 .
+			// 自定义路径
 			nowConfigFPath = LinuxConfigPathInSelfPath()
 		} else {
 			// 专用目录,与 Docker 设置一致
@@ -390,13 +390,24 @@ func GetConfigRootDirFPath() string {
 		}
 
 	} else if sysType == "windows" {
-		nowConfigFPath = configDirRootFPathWindows
+		if LinuxConfigPathInSelfPath() != "" {
+			// 自定义路径
+			nowConfigFPath = LinuxConfigPathInSelfPath()
+		} else {
+			nowConfigFPath = configDirRootFPathWindows
+		}
 	} else if sysType == "darwin" {
-		home, err := os.UserHomeDir()
-		if err != nil {
-			panic("GetConfigRootDirFPath darwin get UserHomeDir, Error:" + err.Error())
+
+		if LinuxConfigPathInSelfPath() != "" {
+			// 自定义路径
+			nowConfigFPath = LinuxConfigPathInSelfPath()
+		} else {
+			home, err := os.UserHomeDir()
+			if err != nil {
+				panic("GetConfigRootDirFPath darwin get UserHomeDir, Error:" + err.Error())
+			}
+			nowConfigFPath = home + configDirRootFPathDarwin
 		}
-		nowConfigFPath = home + configDirRootFPathDarwin
 	} else {
 		panic("GetConfigRootDirFPath can't matched OSType: " + sysType + " ,You Should Implement It Yourself")
 	}

+ 4 - 9
pkg/log_helper/log_hub.go

@@ -27,11 +27,6 @@ import (
 	既然是没有替换的打算,那么就使用 logrus 的 hook 接口去完成额外日志的记录即可,也就是在“每次”扫描的开始和结束进行标记,然后拆分成多次的日志好了
 */
 
-func init() {
-	// 第一次运行需要清理、读取一次
-	cleanAndLoadOnceLogs()
-}
-
 type LoggerHub struct {
 	onceLogger *logrus.Logger // 一次扫描日志的实例
 	onceStart  bool
@@ -80,7 +75,7 @@ func (lh *LoggerHub) Fire(entry *logrus.Entry) error {
 		lh.onceStart = false
 
 		// 注意这个函数的调用时机
-		cleanAndLoadOnceLogs()
+		CleanAndLoadOnceLogs()
 
 		return nil
 	}
@@ -159,7 +154,7 @@ func newOnceLogger(logFileName string) *logrus.Logger {
 	fileAbsPath := filepath.Join(pathRoot, fileName)
 
 	// 注意这个函数的调用时机
-	cleanAndLoadOnceLogs()
+	CleanAndLoadOnceLogs()
 
 	onceLoggerFile, err = os.OpenFile(fileAbsPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, os.ModePerm)
 	if err != nil {
@@ -170,8 +165,8 @@ func newOnceLogger(logFileName string) *logrus.Logger {
 	return Logger
 }
 
-// cleanAndLoadOnceLogs 调用的时机,一定是要在新开一个日志前,且把上一个日志的文件流关闭的时候
-func cleanAndLoadOnceLogs() {
+// CleanAndLoadOnceLogs 调用的时机,一定是要在新开一个日志前,且把上一个日志的文件流关闭的时候
+func CleanAndLoadOnceLogs() {
 	defer func() {
 		onceLogsLock.Unlock()
 	}()