refactor: extract internal/session and eliminate I/O globals

Move serial port, trzsz filter, and pipe lifecycle into
internal/session.SerialSession. Replace 8 global I/O vars
(serialPort, trzszFilter, stdinPipe, stdoutPipe, clientIn,
clientOut, termch, termchOnce) with single sess variable.
Delete utils.go.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
JiXieShi
2026-05-23 21:49:43 +08:00
parent 31dd9da490
commit a1524a7e17
7 changed files with 165 additions and 137 deletions
+5 -8
View File
@@ -11,6 +11,7 @@ import (
"strconv"
"strings"
"github.com/jixishi/SerialTerminalForWindowsTerminal/internal/session"
"golang.org/x/term"
)
@@ -35,20 +36,16 @@ func main() {
if cfg.PortName == "" {
getCliFlag()
}
ports, err := checkPortAvailability(cfg.PortName)
ports, err := session.CheckPortAvailability(cfg.PortName)
if err != nil {
fmt.Println(err)
printUsage(ports)
os.Exit(0)
}
if err = OpenSerial(); err != nil {
fmt.Fprintf(os.Stderr, "open serial failed: %v\n", err)
os.Exit(1)
}
if err = OpenTrzsz(); err != nil {
fmt.Fprintf(os.Stderr, "open trzsz failed: %v\n", err)
sess, err = session.Open(cfg)
if err != nil {
fmt.Fprintf(os.Stderr, "open session failed: %v\n", err)
os.Exit(1)
}