Skip to content

Commit 91f903c

Browse files
authored
refactor(main): enhance error message handling and display in exit info
1 parent ea0c45b commit 91f903c

File tree

2 files changed

+55
-46
lines changed

2 files changed

+55
-46
lines changed

cmd/nodepass/core.go

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,35 @@ import (
44
"crypto/tls"
55
"fmt"
66
"net/url"
7+
"os"
8+
"runtime"
79
"time"
810

911
"github.com/NodePassProject/cert"
1012
"github.com/NodePassProject/logs"
1113
"github.com/yosebyte/nodepass/internal"
1214
)
1315

14-
// runCore 运行核心
15-
func runCore(parsedURL *url.URL) {
16+
// start 启动核心逻辑
17+
func start(args []string) error {
18+
if len(args) != 2 {
19+
return fmt.Errorf("start: empty URL command")
20+
}
21+
22+
parsedURL, err := url.Parse(args[1])
23+
if err != nil {
24+
return fmt.Errorf("start: parse URL failed: %v", err)
25+
}
26+
1627
logger := initLogger(parsedURL.Query().Get("log"))
1728

1829
core, err := createCore(parsedURL, logger)
1930
if err != nil {
20-
logger.Error("Core init failed: %v", err)
21-
printExitInfo()
22-
return
31+
return fmt.Errorf("start: create core failed: %v", err)
2332
}
2433

2534
core.Run()
35+
return nil
2636
}
2737

2838
// initLogger 初始化日志记录器
@@ -44,8 +54,6 @@ func initLogger(level string) *logs.Logger {
4454
logger.SetLogLevel(logs.Event)
4555
logger.Event("Init log level: EVENT")
4656
default:
47-
logger.SetLogLevel(logs.Info)
48-
logger.Info("Init log level: INFO")
4957
}
5058
return logger
5159
}
@@ -134,3 +142,40 @@ func getTLSProtocol(parsedURL *url.URL, logger *logs.Logger) (string, *tls.Confi
134142
return "0", nil
135143
}
136144
}
145+
146+
// exit 退出程序并显示帮助信息
147+
func exit(err error) {
148+
errMsg1, errMsg2 := "", ""
149+
if err != nil {
150+
errStr := "FAILED: " + err.Error()
151+
if len(errStr) > 35 {
152+
errMsg1 = errStr[:35]
153+
if len(errStr) > 70 {
154+
errMsg2 = errStr[35:67] + "..."
155+
} else {
156+
errMsg2 = errStr[35:]
157+
}
158+
} else {
159+
errMsg1 = errStr
160+
}
161+
}
162+
fmt.Printf(`
163+
╭─────────────────────────────────────╮
164+
│ ░░█▀█░█▀█░░▀█░█▀▀░█▀█░█▀█░█▀▀░█▀▀░░ │
165+
│ ░░█░█░█░█░█▀█░█▀▀░█▀▀░█▀█░▀▀█░▀▀█░░ │
166+
│ ░░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀░░░▀░▀░▀▀▀░▀▀▀░░ │
167+
├─────────────────────────────────────┤
168+
│%*s │
169+
│%*s │
170+
├─────────────────────────────────────┤
171+
│ server://password@host/host?<query> │
172+
│ client://password@host/host?<query> │
173+
│ master://hostname:port/path?<query> │
174+
├─────────────────────────────────────┤
175+
│ %-35s │
176+
│ %-35s │
177+
╰─────────────────────────────────────╯
178+
179+
`, 36, version, 36, fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), errMsg1, errMsg2)
180+
os.Exit(1)
181+
}

cmd/nodepass/main.go

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,11 @@
11
package main
22

3-
import (
4-
"fmt"
5-
"net/url"
6-
"os"
7-
"runtime"
8-
)
3+
import "os"
94

105
var version = "dev"
116

12-
// main 程序入口
137
func main() {
14-
runCore(getParsedURL(os.Args))
15-
}
16-
17-
// getParsedURL 解析URL参数
18-
func getParsedURL(args []string) *url.URL {
19-
if len(args) != 2 {
20-
printExitInfo()
21-
}
22-
parsedURL, err := url.Parse(args[1])
23-
if err != nil {
24-
printExitInfo()
8+
if err := start(os.Args); err != nil {
9+
exit(err)
2510
}
26-
return parsedURL
27-
}
28-
29-
// printExitInfo 打印退出信息
30-
func printExitInfo() {
31-
fmt.Printf(`
32-
╭─────────────────────────────────────╮
33-
│ ░░█▀█░█▀█░░▀█░█▀▀░█▀█░█▀█░█▀▀░█▀▀░░ │
34-
│ ░░█░█░█░█░█▀█░█▀▀░█▀▀░█▀█░▀▀█░▀▀█░░ │
35-
│ ░░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀░░░▀░▀░▀▀▀░▀▀▀░░ │
36-
├─────────────────────────────────────┤
37-
│%*s │
38-
│%*s │
39-
├─────────────────────────────────────┤
40-
│ server://password@host/host?<query> │
41-
│ client://password@host/host?<query> │
42-
│ master://hostname:port/path?<query> │
43-
╰─────────────────────────────────────╯
44-
45-
`, 36, version, 36, fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH))
46-
os.Exit(1)
4711
}

0 commit comments

Comments
 (0)