From 8a2a29c9d6f78afa9a1dd507f70bb150ec029a3f Mon Sep 17 00:00:00 2001 From: Unrud Date: Mon, 20 Jun 2022 01:19:08 +0200 Subject: [PATCH] Reorganize --- host.go | 2 +- ...1F507 Speaker with Cancellation Stroke.svg | 0 .../U+1F509 Speaker with One Sound Wave.svg | 0 ...U+1F50A Speaker with Three Sound Waves.svg | 0 {icon_font => icon-font}/U+1FA9F Window.svg | 0 .../U+2190 Leftwards Arrow.svg | 0 .../U+2191 Upwards Arrow.svg | 0 .../U+2192 Rightwards Arrow.svg | 0 .../U+2193 Downwards Arrow.svg | 0 .../U+21BB Clockwise Open Circle Arrow.svg | 0 .../U+2261 Identical To.svg | 0 .../U+2326 Erase To the Right.svg | 0 {icon_font => icon-font}/U+2328 Keyboard.svg | 0 .../U+232B Erase To the Left.svg | 0 ...ting Double Triangle with Vertical Bar.svg | 0 ...ting Double Triangle with Vertical Bar.svg | 0 ...ting Triangle with Double Vertical Bar.svg | 0 ...-D Bottom-Lighted Rightwards Arrowhead.svg | 0 ...U+2922 North East and South West Arrow.svg | 0 ...U+2B60 Leftwards Triangle-Headed Arrow.svg | 0 ...+2B62 Rightwards Triangle-Headed Arrow.svg | 0 ...Leftwards Triangle-Headed Arrow To Bar.svg | 0 ...ightwards Triangle-Headed Arrow To Bar.svg | 0 ...w Over Leftwards Triangle-Headed Arrow.svg | 0 ...e-Headed Arrow with Long Tip Leftwards.svg | 0 ... Medium Left-Pointing Triangle Centred.svg | 0 {icon_font => icon-font}/icon.sfd | 0 controller.go => inputcontrol/controller.go | 2 +- .../controller_portal.go | 2 +- .../controller_windows.go | 2 +- .../controller_x11.go | 2 +- .../keysyms.generated.go | 2 +- .../keysyms.generator.go | 2 +- keysyms.go => inputcontrol/keysyms.go | 2 +- main.go | 28 ++++++++++--------- qr.go => terminal/qr.go | 6 ++-- terminal.go => terminal/terminal.go | 10 +++---- .../terminal_posix.go | 6 ++-- .../terminal_windows.go | 6 ++-- webdata.go | 4 +-- 40 files changed, 39 insertions(+), 37 deletions(-) rename {icon_font => icon-font}/U+1F507 Speaker with Cancellation Stroke.svg (100%) rename {icon_font => icon-font}/U+1F509 Speaker with One Sound Wave.svg (100%) rename {icon_font => icon-font}/U+1F50A Speaker with Three Sound Waves.svg (100%) rename {icon_font => icon-font}/U+1FA9F Window.svg (100%) rename {icon_font => icon-font}/U+2190 Leftwards Arrow.svg (100%) rename {icon_font => icon-font}/U+2191 Upwards Arrow.svg (100%) rename {icon_font => icon-font}/U+2192 Rightwards Arrow.svg (100%) rename {icon_font => icon-font}/U+2193 Downwards Arrow.svg (100%) rename {icon_font => icon-font}/U+21BB Clockwise Open Circle Arrow.svg (100%) rename {icon_font => icon-font}/U+2261 Identical To.svg (100%) rename {icon_font => icon-font}/U+2326 Erase To the Right.svg (100%) rename {icon_font => icon-font}/U+2328 Keyboard.svg (100%) rename {icon_font => icon-font}/U+232B Erase To the Left.svg (100%) rename {icon_font => icon-font}/U+23ED Black Right-Pointing Double Triangle with Vertical Bar.svg (100%) rename {icon_font => icon-font}/U+23EE Black Left-Pointing Double Triangle with Vertical Bar.svg (100%) rename {icon_font => icon-font}/U+23EF Black Right-Pointing Triangle with Double Vertical Bar.svg (100%) rename {icon_font => icon-font}/U+27A3 Three-D Bottom-Lighted Rightwards Arrowhead.svg (100%) rename {icon_font => icon-font}/U+2922 North East and South West Arrow.svg (100%) rename {icon_font => icon-font}/U+2B60 Leftwards Triangle-Headed Arrow.svg (100%) rename {icon_font => icon-font}/U+2B62 Rightwards Triangle-Headed Arrow.svg (100%) rename {icon_font => icon-font}/U+2B70 Leftwards Triangle-Headed Arrow To Bar.svg (100%) rename {icon_font => icon-font}/U+2B72 Rightwards Triangle-Headed Arrow To Bar.svg (100%) rename {icon_font => icon-font}/U+2B82 Rightwards Triangle-Headed Arrow Over Leftwards Triangle-Headed Arrow.svg (100%) rename {icon_font => icon-font}/U+2BA0 Downwards Triangle-Headed Arrow with Long Tip Leftwards.svg (100%) rename {icon_font => icon-font}/U+2BC7 Black Medium Left-Pointing Triangle Centred.svg (100%) rename {icon_font => icon-font}/icon.sfd (100%) rename controller.go => inputcontrol/controller.go (98%) rename controller_portal.go => inputcontrol/controller_portal.go (99%) rename controller_windows.go => inputcontrol/controller_windows.go (99%) rename controller_x11.go => inputcontrol/controller_x11.go (99%) rename keysyms.generated.go => inputcontrol/keysyms.generated.go (99%) rename keysyms.generator.go => inputcontrol/keysyms.generator.go (98%) rename keysyms.go => inputcontrol/keysyms.go (99%) rename qr.go => terminal/qr.go (92%) rename terminal.go => terminal/terminal.go (80%) rename terminal_posix.go => terminal/terminal_posix.go (91%) rename terminal_windows.go => terminal/terminal_windows.go (93%) diff --git a/host.go b/host.go index 022938e..54874e5 100644 --- a/host.go +++ b/host.go @@ -28,7 +28,7 @@ import ( const ipv4Rating int = +1 -func FindDefaultHost() string { +func findDefaultHost() string { type hostsValue struct { prio int host string diff --git a/icon_font/U+1F507 Speaker with Cancellation Stroke.svg b/icon-font/U+1F507 Speaker with Cancellation Stroke.svg similarity index 100% rename from icon_font/U+1F507 Speaker with Cancellation Stroke.svg rename to icon-font/U+1F507 Speaker with Cancellation Stroke.svg diff --git a/icon_font/U+1F509 Speaker with One Sound Wave.svg b/icon-font/U+1F509 Speaker with One Sound Wave.svg similarity index 100% rename from icon_font/U+1F509 Speaker with One Sound Wave.svg rename to icon-font/U+1F509 Speaker with One Sound Wave.svg diff --git a/icon_font/U+1F50A Speaker with Three Sound Waves.svg b/icon-font/U+1F50A Speaker with Three Sound Waves.svg similarity index 100% rename from icon_font/U+1F50A Speaker with Three Sound Waves.svg rename to icon-font/U+1F50A Speaker with Three Sound Waves.svg diff --git a/icon_font/U+1FA9F Window.svg b/icon-font/U+1FA9F Window.svg similarity index 100% rename from icon_font/U+1FA9F Window.svg rename to icon-font/U+1FA9F Window.svg diff --git a/icon_font/U+2190 Leftwards Arrow.svg b/icon-font/U+2190 Leftwards Arrow.svg similarity index 100% rename from icon_font/U+2190 Leftwards Arrow.svg rename to icon-font/U+2190 Leftwards Arrow.svg diff --git a/icon_font/U+2191 Upwards Arrow.svg b/icon-font/U+2191 Upwards Arrow.svg similarity index 100% rename from icon_font/U+2191 Upwards Arrow.svg rename to icon-font/U+2191 Upwards Arrow.svg diff --git a/icon_font/U+2192 Rightwards Arrow.svg b/icon-font/U+2192 Rightwards Arrow.svg similarity index 100% rename from icon_font/U+2192 Rightwards Arrow.svg rename to icon-font/U+2192 Rightwards Arrow.svg diff --git a/icon_font/U+2193 Downwards Arrow.svg b/icon-font/U+2193 Downwards Arrow.svg similarity index 100% rename from icon_font/U+2193 Downwards Arrow.svg rename to icon-font/U+2193 Downwards Arrow.svg diff --git a/icon_font/U+21BB Clockwise Open Circle Arrow.svg b/icon-font/U+21BB Clockwise Open Circle Arrow.svg similarity index 100% rename from icon_font/U+21BB Clockwise Open Circle Arrow.svg rename to icon-font/U+21BB Clockwise Open Circle Arrow.svg diff --git a/icon_font/U+2261 Identical To.svg b/icon-font/U+2261 Identical To.svg similarity index 100% rename from icon_font/U+2261 Identical To.svg rename to icon-font/U+2261 Identical To.svg diff --git a/icon_font/U+2326 Erase To the Right.svg b/icon-font/U+2326 Erase To the Right.svg similarity index 100% rename from icon_font/U+2326 Erase To the Right.svg rename to icon-font/U+2326 Erase To the Right.svg diff --git a/icon_font/U+2328 Keyboard.svg b/icon-font/U+2328 Keyboard.svg similarity index 100% rename from icon_font/U+2328 Keyboard.svg rename to icon-font/U+2328 Keyboard.svg diff --git a/icon_font/U+232B Erase To the Left.svg b/icon-font/U+232B Erase To the Left.svg similarity index 100% rename from icon_font/U+232B Erase To the Left.svg rename to icon-font/U+232B Erase To the Left.svg diff --git a/icon_font/U+23ED Black Right-Pointing Double Triangle with Vertical Bar.svg b/icon-font/U+23ED Black Right-Pointing Double Triangle with Vertical Bar.svg similarity index 100% rename from icon_font/U+23ED Black Right-Pointing Double Triangle with Vertical Bar.svg rename to icon-font/U+23ED Black Right-Pointing Double Triangle with Vertical Bar.svg diff --git a/icon_font/U+23EE Black Left-Pointing Double Triangle with Vertical Bar.svg b/icon-font/U+23EE Black Left-Pointing Double Triangle with Vertical Bar.svg similarity index 100% rename from icon_font/U+23EE Black Left-Pointing Double Triangle with Vertical Bar.svg rename to icon-font/U+23EE Black Left-Pointing Double Triangle with Vertical Bar.svg diff --git a/icon_font/U+23EF Black Right-Pointing Triangle with Double Vertical Bar.svg b/icon-font/U+23EF Black Right-Pointing Triangle with Double Vertical Bar.svg similarity index 100% rename from icon_font/U+23EF Black Right-Pointing Triangle with Double Vertical Bar.svg rename to icon-font/U+23EF Black Right-Pointing Triangle with Double Vertical Bar.svg diff --git a/icon_font/U+27A3 Three-D Bottom-Lighted Rightwards Arrowhead.svg b/icon-font/U+27A3 Three-D Bottom-Lighted Rightwards Arrowhead.svg similarity index 100% rename from icon_font/U+27A3 Three-D Bottom-Lighted Rightwards Arrowhead.svg rename to icon-font/U+27A3 Three-D Bottom-Lighted Rightwards Arrowhead.svg diff --git a/icon_font/U+2922 North East and South West Arrow.svg b/icon-font/U+2922 North East and South West Arrow.svg similarity index 100% rename from icon_font/U+2922 North East and South West Arrow.svg rename to icon-font/U+2922 North East and South West Arrow.svg diff --git a/icon_font/U+2B60 Leftwards Triangle-Headed Arrow.svg b/icon-font/U+2B60 Leftwards Triangle-Headed Arrow.svg similarity index 100% rename from icon_font/U+2B60 Leftwards Triangle-Headed Arrow.svg rename to icon-font/U+2B60 Leftwards Triangle-Headed Arrow.svg diff --git a/icon_font/U+2B62 Rightwards Triangle-Headed Arrow.svg b/icon-font/U+2B62 Rightwards Triangle-Headed Arrow.svg similarity index 100% rename from icon_font/U+2B62 Rightwards Triangle-Headed Arrow.svg rename to icon-font/U+2B62 Rightwards Triangle-Headed Arrow.svg diff --git a/icon_font/U+2B70 Leftwards Triangle-Headed Arrow To Bar.svg b/icon-font/U+2B70 Leftwards Triangle-Headed Arrow To Bar.svg similarity index 100% rename from icon_font/U+2B70 Leftwards Triangle-Headed Arrow To Bar.svg rename to icon-font/U+2B70 Leftwards Triangle-Headed Arrow To Bar.svg diff --git a/icon_font/U+2B72 Rightwards Triangle-Headed Arrow To Bar.svg b/icon-font/U+2B72 Rightwards Triangle-Headed Arrow To Bar.svg similarity index 100% rename from icon_font/U+2B72 Rightwards Triangle-Headed Arrow To Bar.svg rename to icon-font/U+2B72 Rightwards Triangle-Headed Arrow To Bar.svg diff --git a/icon_font/U+2B82 Rightwards Triangle-Headed Arrow Over Leftwards Triangle-Headed Arrow.svg b/icon-font/U+2B82 Rightwards Triangle-Headed Arrow Over Leftwards Triangle-Headed Arrow.svg similarity index 100% rename from icon_font/U+2B82 Rightwards Triangle-Headed Arrow Over Leftwards Triangle-Headed Arrow.svg rename to icon-font/U+2B82 Rightwards Triangle-Headed Arrow Over Leftwards Triangle-Headed Arrow.svg diff --git a/icon_font/U+2BA0 Downwards Triangle-Headed Arrow with Long Tip Leftwards.svg b/icon-font/U+2BA0 Downwards Triangle-Headed Arrow with Long Tip Leftwards.svg similarity index 100% rename from icon_font/U+2BA0 Downwards Triangle-Headed Arrow with Long Tip Leftwards.svg rename to icon-font/U+2BA0 Downwards Triangle-Headed Arrow with Long Tip Leftwards.svg diff --git a/icon_font/U+2BC7 Black Medium Left-Pointing Triangle Centred.svg b/icon-font/U+2BC7 Black Medium Left-Pointing Triangle Centred.svg similarity index 100% rename from icon_font/U+2BC7 Black Medium Left-Pointing Triangle Centred.svg rename to icon-font/U+2BC7 Black Medium Left-Pointing Triangle Centred.svg diff --git a/icon_font/icon.sfd b/icon-font/icon.sfd similarity index 100% rename from icon_font/icon.sfd rename to icon-font/icon.sfd diff --git a/controller.go b/inputcontrol/controller.go similarity index 98% rename from controller.go rename to inputcontrol/controller.go index 28597f0..7e9e768 100644 --- a/controller.go +++ b/inputcontrol/controller.go @@ -17,7 +17,7 @@ * along with Remote-Touchpad. If not, see . */ -package main +package inputcontrol import "sort" diff --git a/controller_portal.go b/inputcontrol/controller_portal.go similarity index 99% rename from controller_portal.go rename to inputcontrol/controller_portal.go index 4fdb231..5245cb1 100644 --- a/controller_portal.go +++ b/inputcontrol/controller_portal.go @@ -19,7 +19,7 @@ * along with Remote-Touchpad. If not, see . */ -package main +package inputcontrol import ( "errors" diff --git a/controller_windows.go b/inputcontrol/controller_windows.go similarity index 99% rename from controller_windows.go rename to inputcontrol/controller_windows.go index 0e0afd6..eb844b2 100644 --- a/controller_windows.go +++ b/inputcontrol/controller_windows.go @@ -19,7 +19,7 @@ * along with Remote-Touchpad. If not, see . */ -package main +package inputcontrol import ( "errors" diff --git a/controller_x11.go b/inputcontrol/controller_x11.go similarity index 99% rename from controller_x11.go rename to inputcontrol/controller_x11.go index b9df621..3d7c9f7 100644 --- a/controller_x11.go +++ b/inputcontrol/controller_x11.go @@ -19,7 +19,7 @@ * along with Remote-Touchpad. If not, see . */ -package main +package inputcontrol // #cgo LDFLAGS: -lX11 -lXtst // #include diff --git a/keysyms.generated.go b/inputcontrol/keysyms.generated.go similarity index 99% rename from keysyms.generated.go rename to inputcontrol/keysyms.generated.go index 798ed50..8734718 100644 --- a/keysyms.generated.go +++ b/inputcontrol/keysyms.generated.go @@ -1,7 +1,7 @@ // Code generated by keysyms.generator.go. DO NOT EDIT. //go:build portal || x11 -package main +package inputcontrol var keysymsMap = map[rune]Keysym{ 0x0008: 0x0000ff08, diff --git a/keysyms.generator.go b/inputcontrol/keysyms.generator.go similarity index 98% rename from keysyms.generator.go rename to inputcontrol/keysyms.generator.go index 15e4706..cc18417 100644 --- a/keysyms.generator.go +++ b/inputcontrol/keysyms.generator.go @@ -103,7 +103,7 @@ func main() { } content := "// Code generated by keysyms.generator.go. DO NOT EDIT.\n" + "//go:build portal || x11\n\n" + - "package main\n\n" + + "package inputcontrol\n\n" + "var keysymsMap = map[rune]Keysym{\n" keys := make([]rune, 0) for key := range keysymsMap { diff --git a/keysyms.go b/inputcontrol/keysyms.go similarity index 99% rename from keysyms.go rename to inputcontrol/keysyms.go index 55bd7a6..5402120 100644 --- a/keysyms.go +++ b/inputcontrol/keysyms.go @@ -19,7 +19,7 @@ * along with Remote-Touchpad. If not, see . */ -package main +package inputcontrol //go:generate go run keysyms.generator.go diff --git a/main.go b/main.go index 92fb9cc..07eaaea 100644 --- a/main.go +++ b/main.go @@ -27,6 +27,8 @@ import ( "errors" "flag" "fmt" + "github.com/unrud/remote-touchpad/inputcontrol" + "github.com/unrud/remote-touchpad/terminal" "golang.org/x/net/websocket" "log" mathrand "math/rand" @@ -57,7 +59,7 @@ type config struct { MouseMoveSpeed float64 `json:"mouseMoveSpeed"` } -func processCommand(controller Controller, command string) error { +func processCommand(controller inputcontrol.Controller, command string) error { if len(command) == 0 { return errors.New("empty command") } @@ -81,10 +83,10 @@ func processCommand(controller Controller, command string) error { return err } if command[0] == 'k' { - if x < 0 || x >= int64(KeyLimit) { + if x < 0 || x >= int64(inputcontrol.KeyLimit) { return errors.New("unsupported key") } - return controller.KeyboardKey(Key(x)) + return controller.KeyboardKey(inputcontrol.Key(x)) } y, err := strconv.ParseInt(arguments[1], 10, 32) if err != nil { @@ -100,14 +102,14 @@ func processCommand(controller Controller, command string) error { return controller.PointerScroll(int(x), int(y), true) } if command[0] == 'b' { - if x < 0 || x >= int64(PointerButtonLimit) { + if x < 0 || x >= int64(inputcontrol.PointerButtonLimit) { return errors.New("unsupported pointer button") } b := true if y == 0 { b = false } - return controller.PointerButton(PointerButton(x), b) + return controller.PointerButton(inputcontrol.PointerButton(x), b) } return errors.New("unsupported command") } @@ -148,7 +150,7 @@ func secureRandBase64(length int) string { } func main() { - TerminalSetTitle(prettyAppName) + terminal.SetTitle(prettyAppName) var bind, certFile, keyFile, secret string var showVersion bool var config config @@ -177,19 +179,19 @@ func main() { if secret == "" { secret = secureRandBase64(defaultSecretLength) } - if len(Controllers) == 0 { + if len(inputcontrol.Controllers) == 0 { log.Fatal("compiled without controller") } - var controller Controller + var controller inputcontrol.Controller var controllerName string platformErrors := "" - for _, controllerInfo := range Controllers { + for _, controllerInfo := range inputcontrol.Controllers { controllerName = controllerInfo.Name var err error controller, err = controllerInfo.Init() if err == nil { break - } else if _, ok := err.(UnsupportedPlatformError); ok { + } else if _, ok := err.(inputcontrol.UnsupportedPlatformError); ok { platformErrors += fmt.Sprintf("%s controller: %v\n", controllerName, err) } else { log.Fatalf("%s controller: %v", controllerName, err) @@ -218,11 +220,11 @@ func main() { } } if host == "" { - host = FindDefaultHost() + host = findDefaultHost() } port := addr.Port mux := http.NewServeMux() - mux.Handle("/", http.FileServer(http.FS(WebdataFS))) + mux.Handle("/", http.FileServer(http.FS(webdataFS))) mux.Handle("/ws", websocket.Handler(func(ws *websocket.Conn) { var message string challenge := <-authenticationChallenges @@ -254,7 +256,7 @@ func main() { } url := fmt.Sprintf("%s://%s/#%s", scheme, domain, secret) fmt.Println(url) - if qrCode, err := GenerateQRCode(url, TerminalSupportsColor(os.Stdout.Fd())); err == nil { + if qrCode, err := terminal.GenerateQRCode(url, terminal.SupportsColor(os.Stdout.Fd())); err == nil { fmt.Print(qrCode) } else { log.Printf("QR code error: %v", err) diff --git a/qr.go b/terminal/qr.go similarity index 92% rename from qr.go rename to terminal/qr.go index eb2832a..105aee7 100644 --- a/qr.go +++ b/terminal/qr.go @@ -17,7 +17,7 @@ * along with Remote-Touchpad. If not, see . */ -package main +package terminal import qrcode "github.com/skip2/go-qrcode" @@ -33,7 +33,7 @@ func qrCodeToString(bits [][]bool, colorize bool) string { s := "" for y := -1; y < len(bits); y += 2 { if colorize { - s += TerminalForegroundBlack + TerminalBackgroundWhite + s += ForegroundBlack + BackgroundWhite } for x := range bits[0] { upper := false @@ -55,7 +55,7 @@ func qrCodeToString(bits [][]bool, colorize bool) string { } } if colorize { - s += TerminalForegroundReset + TerminalBackgroundReset + s += ForegroundReset + BackgroundReset } s += "\n" } diff --git a/terminal.go b/terminal/terminal.go similarity index 80% rename from terminal.go rename to terminal/terminal.go index 75de079..8050fc6 100644 --- a/terminal.go +++ b/terminal/terminal.go @@ -17,11 +17,11 @@ * along with Remote-Touchpad. If not, see . */ -package main +package terminal const ( - TerminalForegroundBlack string = "\033[30m" - TerminalForegroundReset string = "\033[39m" - TerminalBackgroundWhite string = "\033[47m" - TerminalBackgroundReset string = "\033[49m" + ForegroundBlack string = "\033[30m" + ForegroundReset string = "\033[39m" + BackgroundWhite string = "\033[47m" + BackgroundReset string = "\033[49m" ) diff --git a/terminal_posix.go b/terminal/terminal_posix.go similarity index 91% rename from terminal_posix.go rename to terminal/terminal_posix.go index a549e1d..9d80e70 100644 --- a/terminal_posix.go +++ b/terminal/terminal_posix.go @@ -19,17 +19,17 @@ * along with Remote-Touchpad. If not, see . */ -package main +package terminal // #include import "C" import "os" -func TerminalSupportsColor(fd uintptr) bool { +func SupportsColor(fd uintptr) bool { return C.isatty(C.int(fd)) != 0 } -func TerminalSetTitle(title string) bool { +func SetTitle(title string) bool { if C.isatty(C.int(os.Stdout.Fd())) != 0 { os.Stdout.Write([]byte("\x1b]2;" + title + "\x07")) os.Stdout.Sync() diff --git a/terminal_windows.go b/terminal/terminal_windows.go similarity index 93% rename from terminal_windows.go rename to terminal/terminal_windows.go index 5637a7d..b28c084 100644 --- a/terminal_windows.go +++ b/terminal/terminal_windows.go @@ -17,7 +17,7 @@ * along with Remote-Touchpad. If not, see . */ -package main +package terminal import ( "syscall" @@ -36,13 +36,13 @@ var ( setConsoleTitleProc = kernel32DLL.NewProc("SetConsoleTitleW") ) -func TerminalSupportsColor(fd uintptr) bool { +func SupportsColor(fd uintptr) bool { r, _, _ := setConsoleModeProc.Call(fd, uintptr(enableProcessedOuput| enableWrapAtEolOutput|enableVirtualTerminalProcessing)) return r != 0 } -func TerminalSetTitle(title string) bool { +func SetTitle(title string) bool { r, _, _ := setConsoleTitleProc.Call( uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(title)))) return r != 0 diff --git a/webdata.go b/webdata.go index 9b03150..4d07131 100644 --- a/webdata.go +++ b/webdata.go @@ -8,11 +8,11 @@ import ( //go:embed webdata/* var webdataFSWithPrefix embed.FS -var WebdataFS fs.FS +var webdataFS fs.FS func init() { var err error - WebdataFS, err = fs.Sub(webdataFSWithPrefix, "webdata") + webdataFS, err = fs.Sub(webdataFSWithPrefix, "webdata") if err != nil { log.Fatal(err) }