首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// FilePath 带合法性校验的文件路径类型
|
||||
type FilePath string
|
||||
|
||||
func (f *FilePath) Set(s string) error {
|
||||
// 解析绝对路径
|
||||
absPath, err := filepath.Abs(s)
|
||||
if err != nil {
|
||||
return fmt.Errorf("路径解析失败:%w", err)
|
||||
}
|
||||
|
||||
// 校验文件存在且为普通文件
|
||||
info, err := os.Stat(absPath)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
return fmt.Errorf("配置文件不存在:%s", absPath)
|
||||
}
|
||||
return fmt.Errorf("文件访问异常:%w", err)
|
||||
}
|
||||
if info.IsDir() {
|
||||
return fmt.Errorf("路径为目录,需传入有效文件路径:%s", absPath)
|
||||
}
|
||||
|
||||
*f = FilePath(absPath)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *FilePath) String() string {
|
||||
return string(*f)
|
||||
}
|
||||
|
||||
func (f *FilePath) Get() any {
|
||||
return string(*f)
|
||||
}
|
||||
|
||||
func main() {
|
||||
var configFile FilePath
|
||||
flag.Var(&configFile, "config", "必填配置文件路径")
|
||||
flag.Parse()
|
||||
|
||||
fmt.Printf("加载配置文件:%s\n", configFile)
|
||||
}
|
||||
Reference in New Issue
Block a user