From a1d1f92f102c8ac6ee8d6ef93b58221b44b2af74 Mon Sep 17 00:00:00 2001 From: oarinv Date: Sun, 10 Sep 2023 00:15:07 +0800 Subject: [PATCH] =?UTF-8?q?change:=E4=BF=AE=E6=94=B9=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++-- main.go | 88 ++++++++++++++++++++---------------------------------- nga/nga.go | 2 +- 3 files changed, 36 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index d62a3f4..a9e4625 100644 --- a/README.md +++ b/README.md @@ -30,14 +30,12 @@ windows ``` > ./ngapost2md -h -使用: ngapost2md tid [--force-no-check-update] [--dump-update-info] +使用: ngapost2md tid 选项与参数说明: tid: 待下载的帖子 tid 号 ---force-no-check-update 在编译时间后的不少于 60 天内,不检测版本更新 ---dump-update-info 当检测到新版本时,将版本信息原始文件写入 NEED_UPDATE 文件 - ngapost2md -v, --version 显示版本信息并退出 ngapost2md -h, --help 显示此帮助信息并退出 +ngapost2md -u, --update 检查最新版本 ngapost2md --gen-config-file 生成默认配置文件于 config.ini 并退出 ``` diff --git a/main.go b/main.go index b6c99b3..d4978ee 100644 --- a/main.go +++ b/main.go @@ -1,39 +1,46 @@ package main import ( + "encoding/json" "fmt" - "log" - "os" - "strings" - "time" - "github.com/imroc/req/v3" "github.com/jessevdk/go-flags" "github.com/ludoux/ngapost2md/config" "github.com/ludoux/ngapost2md/nga" "github.com/spf13/cast" + "log" + "os" + "strings" + "time" ) type Option struct { - ForceNoCheckUpdate bool `long:"force-no-check-update" description:"在编译时间后的不少于 60 天内,不检测版本更新"` - DumpUpdateInfo bool `long:"dump-update-info" description:"当检测到新版本时,将版本信息原始文件写入 NEED_UPDATE 文件"` - Version bool `short:"v" long:"version" description:"显示版本信息并退出"` - Help bool `short:"h" long:"help" description:"显示此帮助信息并退出"` - GenConfigFile bool `long:"gen-config-file" description:"生成默认配置文件于 config.ini 并退出"` + Version bool `short:"v" long:"version" description:"显示版本信息并退出"` + Help bool `short:"h" long:"help" description:"显示此帮助信息并退出"` + GenConfigFile bool `long:"gen-config-file" description:"生成默认配置文件于 config.ini 并退出"` + Update bool `short:"u" long:"update" description:"检查最新版本"` } -func checkUpdate(dump bool) { - resp, _ := req.C().R().Get("https://gitee.com/ludoux/check-update/raw/master/ngapost2md/version_neo.txt") - //版本更新配置文件改为 DO_NOT_CHECK ,软件则不会强制使用最新版本 - if resp.String() != nga.VERSION && resp.String() != "DO_NOT_CHECK" { - if dump { - f, _ := os.OpenFile("NEED_UPDATE", os.O_CREATE|os.O_WRONLY, 0666) - _, _ = f.Write(resp.Bytes()) - defer f.Close() - } - log.Printf("目前版本: %s 最新版本: %s", nga.VERSION, resp.String()) - log.Fatalln("请去 GitHub Releases 页面下载最新版本。软件即将退出……") +// 检查更新,解析json数据 +type Repo struct { + Tag_name string `json:"tag_name"` // 最新版本号 + Body string `json:"body"` // 更新信息为markdown格式 +} + +func checkUpdate() { + resp, _ := req.C().R().Get("https://api.github.com/repos/ludoux/ngapost2md/releases/latest") + + // 读取最新版本号 + var repo Repo + err := json.Unmarshal([]byte(resp.String()), &repo) + if err != nil { + fmt.Println("解析json数据失败:", err) } + + // 输出信息 + log.Printf("目前版本: %s 最新版本: %s", nga.VERSION, repo.Tag_name) + log.Fatalln("请去 GitHub Releases 页面下载最新版本。软件即将退出……") + } func main() { @@ -59,16 +66,17 @@ func main() { log.Println("导出默认配置文件 config.ini 成功。") os.Exit(0) } else if opts.Help { - fmt.Println("使用: ngapost2md tid [--force-no-check-update] [--dump-update-info]") + fmt.Println("使用: ngapost2md tid") fmt.Println("选项与参数说明: ") fmt.Println("tid: 待下载的帖子 tid 号") - fmt.Println("--force-no-check-update ", parser.FindOptionByLongName("force-no-check-update").Description) - fmt.Println("--dump-update-info ", parser.FindOptionByLongName("dump-update-info").Description) fmt.Println("") fmt.Println("ngapost2md -v, --version ", parser.FindOptionByLongName("version").Description) fmt.Println("ngapost2md -h, --help ", parser.FindOptionByLongName("help").Description) + fmt.Println("ngapost2md -u, --update ", parser.FindOptionByLongName("update").Description) fmt.Println("ngapost2md --gen-config-file", parser.FindOptionByLongName("gen-config-file").Description) os.Exit(0) + } else if opts.Update { + checkUpdate() } var tid int @@ -90,37 +98,7 @@ func main() { fmt.Printf("opts: %+v ; args: %v\n", opts, args) fmt.Println("==debug mode===") } - fmt.Println("此版本永久禁用检查更新。请手动前往 GitHub 项目主页查看,谢谢。") - /* - //DEBUG_MODE不为1时(不是DEBUG_MODE)情况下,未有 ForceNoCheckUpdate 时检测更新 - if nga.DEBUG_MODE == "1" { - fmt.Println("==debug mode===") - fmt.Println("DEBUG MODE 下恒不检查更新") - fmt.Println("==debug mode===") - } else { - if !opts.ForceNoCheckUpdate { - checkUpdate(opts.DumpUpdateInfo) - } else { - //如果有这个标,在大于指定天数后也要检查更新 - curTs := time.Now().Local().Unix() - builtTs, err := cast.ToInt64E(nga.BUILD_TS) - if err != nil { - log.Fatalln("BUILD_TS", nga.BUILD_TS, "无法转为数字,可能编译时 ldflags 有误") - } - - if curTs < builtTs { - fmt.Println("由于本地时间有误,仍将检查更新。") - checkUpdate(opts.DumpUpdateInfo) - } else if curTs-builtTs > 61*86400 { - //61天 - fmt.Println("距离此版本编译时间已过去", (curTs-builtTs)/86400, "天,仍将检查更新。") - checkUpdate(opts.DumpUpdateInfo) - } else { - fmt.Println("由于使用了 --force-no-check-update 标志,且距离编译时间仍在时限内,本次不检查更新。距离此版本编译时间已过", (curTs-builtTs)/86400, "天") - } - } - } - */ + // 检查并按需更新配置文件 cfg, err := config.GetConfigAutoUpdate() if err != nil { diff --git a/nga/nga.go b/nga/nga.go index c04941d..ff99e12 100644 --- a/nga/nga.go +++ b/nga/nga.go @@ -37,7 +37,7 @@ var ( // 这里配置文件和传参都没法改 var ( - VERSION = "NEO_1.5.1" //需要手动改 + VERSION = "1.5.1" //需要手动改 BUILD_TS = "1691664141" //无需,GitHub actions会自动填写 GIT_REF = "" //无需,GitHub actions会自动填写 GIT_HASH = "" //无需,GitHub actions会自动填写