From 6cce9c8fe5ca41f3cb48555160dfb82aec6f0b6f Mon Sep 17 00:00:00 2001 From: zhaocy Date: Fri, 5 Aug 2022 11:07:18 +0800 Subject: [PATCH] update --- cmd/ptt/lib/common/lang_en.go | 13 +++++- cmd/ptt/ui/app_container.go | 74 +++++++++++++++++++++++++++++++++-- cmd/ptt/ui/app_interface.go | 38 ++++++++++++++++++ cmd/ptt/ui/app_tester.go | 29 ++++++++++++++ cmd/ptt/ui/app_welcome.go | 35 +++++++++++++++++ cmd/ptt/ui/mainwindow.go | 53 ++++++++++++++++++++----- cmd/ptt/ui/status_bar.go | 4 ++ cmd/ptt/ui/tool_bar.go | 25 ++++++++++-- cmd/ptt/ui/toy_datetime.go | 72 ++++++++++++++++++++++++++++++++++ cmd/ptt/ui/toy_interface.go | 31 +++++++++++++++ cmd/ptt/ui/toys.go | 14 ++++++- cmd/ptt/ui/ui.go | 3 +- go.mod | 12 ++++++ go.sum | 28 +++++++++++++ 14 files changed, 410 insertions(+), 21 deletions(-) create mode 100644 cmd/ptt/ui/app_tester.go create mode 100644 cmd/ptt/ui/app_welcome.go create mode 100644 cmd/ptt/ui/toy_datetime.go create mode 100644 cmd/ptt/ui/toy_interface.go diff --git a/cmd/ptt/lib/common/lang_en.go b/cmd/ptt/lib/common/lang_en.go index 501943381..4ba21dda7 100644 --- a/cmd/ptt/lib/common/lang_en.go +++ b/cmd/ptt/lib/common/lang_en.go @@ -1,6 +1,13 @@ package common const ( + // app + APP_NAME = "protocol" + + // toolbar + TOOLBAR_WELCOME = "welcome" + TOOLBAR_TESTER = "tester" + //button BUTTON_LOGIN = "login" BUTTON_REGISTE = "registe" @@ -9,9 +16,10 @@ const ( BUTTON_CANCEL = "cancel" //label - LABEL_WELCOME = "welcom,The service you choose is " + LABEL_CHOOSE = "welcome,The service you choose is " LABEL_NICKNAME = "nickname" LABEL_ACCOUNT = "account" + LABEL_WELCOME = "welcome " // form title FORM_TITLE_CREATEROLE = "create role" @@ -22,4 +30,7 @@ const ( // menu MENU_FILE = "file" + + // datetiem + DATETIME = "datetime" ) diff --git a/cmd/ptt/ui/app_container.go b/cmd/ptt/ui/app_container.go index 9492ace44..67e774390 100644 --- a/cmd/ptt/ui/app_container.go +++ b/cmd/ptt/ui/app_container.go @@ -3,19 +3,85 @@ package ui import "fyne.io/fyne/v2/container" type appContainer struct { + appStatusMap map[string]appStatus container.DocTabs } func newAppContainer() *appContainer { at := &appContainer{} + at.appStatusMap = make(map[string]appStatus) + at.CloseIntercept = at.closeHandle + at.SetTabLocation(container.TabLocationTop) + at.ExtendBaseWidget(at) + at.OnSelected = func(item *container.TabItem) { + item.Content.Refresh() + } return at } -func (at *appContainer) openApp(app appInterface) error{ - // for _, appItem := range at.Items { - // if appItem.Text == - // } +type appStatus struct { + lazyInit bool +} +func (at *appContainer) closeHandle(tab *container.TabItem) { + for _, app := range appRegister { + if app.GetAppName() == tab.Text { + if app.OnClose() { + at.Remove(tab) + } + } + } +} + +func (at *appContainer) openApp(app appInterface) error { + for _, appItem := range at.Items { + if appItem.Text == app.GetAppName() { + at.Select(appItem) + return nil + } + } + err := at.initApp(app) + if err != nil { + return err + } + + tab := app.GetTabItem() + at.Append(tab) + at.Select(tab) + return nil +} + +// open default app +func (at *appContainer) openDefaultApp() (string, error) { + var firstTab *container.TabItem + for _, app := range appRegister { + if app.OpenDefault() { + if err := at.initApp(app); err != nil { + return app.GetAppName(), err + } + tab := app.GetTabItem() + at.Append(tab) + if firstTab == nil { + firstTab = tab + } + } + } + + if firstTab != nil { + at.Select(firstTab) + } + return "", nil +} + +func (at *appContainer) initApp(app appInterface) error { + st, ok := at.appStatusMap[app.GetAppName()] + if !ok || !st.lazyInit { + err := app.LazyInit() + if err != nil { + return err + } + at.appStatusMap[app.GetAppName()] = appStatus{lazyInit: true} + } return nil } diff --git a/cmd/ptt/ui/app_interface.go b/cmd/ptt/ui/app_interface.go index 0e234c98f..3ffb68208 100644 --- a/cmd/ptt/ui/app_interface.go +++ b/cmd/ptt/ui/app_interface.go @@ -1,4 +1,42 @@ package ui +import "fyne.io/fyne/v2/container" + type appInterface interface { + LazyInit() error + GetTabItem() *container.TabItem + GetAppName() string + OpenDefault() bool + OnClose() bool +} + +var ( + appRegister = []appInterface{ + &appWelcome{}, + &appTester{}, + } +) + +type appAdapter struct { + tabItem *container.TabItem +} + +func (a appAdapter) LazyInit() error { + panic("implement LazyInit") +} + +func (a appAdapter) GetAppName() string { + panic("implement GetAppName()") +} + +func (a appAdapter) OpenDefault() bool { + return false +} + +func (a appAdapter) GetTabItem() *container.TabItem { + return a.tabItem +} + +func (a appAdapter) OnClose() bool { + return true } diff --git a/cmd/ptt/ui/app_tester.go b/cmd/ptt/ui/app_tester.go new file mode 100644 index 000000000..adf110409 --- /dev/null +++ b/cmd/ptt/ui/app_tester.go @@ -0,0 +1,29 @@ +package ui + +import ( + "go_dreamfactory/cmd/ptt/lib/common" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/theme" + "fyne.io/fyne/v2/widget" +) + +type appTester struct { + appAdapter +} + +func (a *appTester) GetAppName() string { + return common.TOOLBAR_TESTER +} + +func (a *appTester) LazyInit() error { + a.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_TESTER, theme.AccountIcon(), nil) + a.tabItem.Content = container.NewCenter( + container.NewVBox( + widget.NewLabelWithStyle(common.TOOLBAR_TESTER, + fyne.TextAlignCenter, + fyne.TextStyle{Bold: true})), + ) + return nil +} diff --git a/cmd/ptt/ui/app_welcome.go b/cmd/ptt/ui/app_welcome.go new file mode 100644 index 000000000..1f2e39a54 --- /dev/null +++ b/cmd/ptt/ui/app_welcome.go @@ -0,0 +1,35 @@ +package ui + +import ( + "go_dreamfactory/cmd/ptt/lib/common" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/theme" + "fyne.io/fyne/v2/widget" +) + +type appWelcome struct { + appAdapter +} + +func (a *appWelcome) LazyInit() error { + + a.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_WELCOME, theme.ComputerIcon(), nil) + + a.tabItem.Content = container.NewCenter( + container.NewVBox( + widget.NewLabelWithStyle(common.TOOLBAR_WELCOME, + fyne.TextAlignCenter, + fyne.TextStyle{Bold: true})), + ) + return nil +} + +func (a *appWelcome) OpenDefault() bool { + return true +} + +func (a *appWelcome) GetAppName() string { + return common.TOOLBAR_WELCOME +} diff --git a/cmd/ptt/ui/mainwindow.go b/cmd/ptt/ui/mainwindow.go index 7c4a84d38..851cf135f 100644 --- a/cmd/ptt/ui/mainwindow.go +++ b/cmd/ptt/ui/mainwindow.go @@ -10,11 +10,16 @@ import ( "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/widget" + "github.com/BabySid/gobase" "github.com/Pallinder/go-randomdata" "github.com/sirupsen/logrus" "github.com/spf13/cast" ) +var ( + globalWin *MainWindowImpl +) + type MainWindow interface { WindowInterface } @@ -22,18 +27,34 @@ type MainWindow interface { type MainWindowImpl struct { UIImpl WindowDefaultOptions - w fyne.Window - - tb *toolBar - toys *toys - sb *statusBar + w fyne.Window + tb *toolBar //工具条 + toys *toys // + sb *statusBar //状态栏 at *appContainer //tabs } func NewMainWindow(ui *UIImpl) MainWindow { - return &MainWindowImpl{ + gobase.NewScheduler().Start() + gobase.RegisterAtExit(gobase.GlobalScheduler.Stop) + mw := &MainWindowImpl{ UIImpl: *ui, } + + // status bar + mw.sb = newStatusBar() + + // tool bar + mw.tb = newToolBar() + + // Fun Toys + mw.toys = newToys() + + // main app tabs + mw.at = newAppContainer() + + globalWin = mw + return mw } // createWindowContainer create a container with the window content @@ -109,6 +130,7 @@ func (ui *MainWindowImpl) createChooseServerWindow( defer d.Hide() logrus.WithField("server", serverName).Debug("choose server") + ui.sb.setMessage(serverName) //conn server if err := ui.connService.Connect("ws://localhost:7891/gateway"); err != nil { logrus.Error(err) @@ -166,6 +188,11 @@ func (ui *MainWindowImpl) createLoginWin(sid int32) { if rsp.Data.Created { // ui.renderUserContainer() ui.createWindowContainer() + ui.sb.setMessage(common.LABEL_WELCOME + rsp.Data.Binduid) + appName, err := ui.at.openDefaultApp() + if err != nil { + logrus.WithField("appName", appName).Error(err) + } } else { ui.createRoleWindowPopUp() } @@ -215,6 +242,7 @@ func (ui *MainWindowImpl) createRoleWindowPopUp() { if rsp.IsSucc { user := ui.pttService.GetUser() logrus.WithField("uid", user.DbUser.Uid).Debug("create role succ") + ui.createWindowContainer() } else { logrus.Error("create role failure") } @@ -245,17 +273,22 @@ func (ui *MainWindowImpl) renderUserContainer() { // NewWelcomeLabel func (ui *MainWindowImpl) NewWelcomeLabel(sid int32) { c := container.NewCenter(container.NewVBox( - widget.NewLabelWithStyle(common.LABEL_WELCOME+cast.ToString(sid), + widget.NewLabelWithStyle(common.LABEL_CHOOSE+cast.ToString(sid), fyne.TextAlignCenter, fyne.TextStyle{Bold: true}), container.NewCenter(container.NewHBox( widget.NewButton(common.BUTTON_LOGIN, func() { ui.createLoginWin(sid) }), - widget.NewButton(common.BUTTON_REGISTE, func() { - logrus.Debug("registe") - }), + // widget.NewButton(common.BUTTON_REGISTE, func() { + // logrus.Debug("registe") + // }), )), )) ui.w.SetContent(c) } + +// show userInfo +func (ui *MainWindowImpl) showUserInfoWin() { + +} diff --git a/cmd/ptt/ui/status_bar.go b/cmd/ptt/ui/status_bar.go index 27f8b058b..7a3c905d3 100644 --- a/cmd/ptt/ui/status_bar.go +++ b/cmd/ptt/ui/status_bar.go @@ -20,3 +20,7 @@ func newStatusBar() *statusBar { layout.NewSpacer()) return &sb } + +func (sb *statusBar) setMessage(msg string) { + sb.msgLabel.SetText(msg) +} diff --git a/cmd/ptt/ui/tool_bar.go b/cmd/ptt/ui/tool_bar.go index 0fe99a537..4468805fb 100644 --- a/cmd/ptt/ui/tool_bar.go +++ b/cmd/ptt/ui/tool_bar.go @@ -1,9 +1,12 @@ package ui import ( - "go_dreamfactory/theme" + "fmt" + "go_dreamfactory/cmd/ptt/lib/common" + "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" + "github.com/sirupsen/logrus" ) type toolBar struct { @@ -14,11 +17,25 @@ func newToolBar() *toolBar { var tb toolBar tb.toolbar = widget.NewToolbar( - widget.NewToolbarAction(theme.ResourceWelIcon, func() { - + widget.NewToolbarAction(theme.ComputerIcon(), func() { + openApp(common.TOOLBAR_WELCOME) + }), + widget.NewToolbarAction(theme.AccountIcon(), func() { + openApp(common.TOOLBAR_TESTER) }), widget.NewToolbarSeparator(), - widget.NewToolbarAction(theme.ResourceAboutIcon, func() {}), + widget.NewToolbarAction(theme.DocumentIcon(), func() {}), ) return &tb } + +func openApp(name string) { + for _, app := range appRegister { + if app.GetAppName() == name { + err := globalWin.at.openApp(app) + if err != nil { + logrus.Error(fmt.Errorf("theme.RunAppFailedFormat", app.GetAppName(), err)) + } + } + } +} diff --git a/cmd/ptt/ui/toy_datetime.go b/cmd/ptt/ui/toy_datetime.go new file mode 100644 index 000000000..692213c9c --- /dev/null +++ b/cmd/ptt/ui/toy_datetime.go @@ -0,0 +1,72 @@ +package ui + +import ( + "go_dreamfactory/cmd/ptt/lib/common" + "time" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/canvas" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/layout" + "fyne.io/fyne/v2/widget" + "github.com/BabySid/gobase" +) + +type toyDateTime struct { + toyAdapter + date *canvas.Text + week *canvas.Text + time *canvas.Text +} + +func (tdt *toyDateTime) Init() error { + tdt.date = canvas.NewText("", nil) + tdt.date.TextSize = 15 + + tdt.week = canvas.NewText("", nil) + tdt.week.TextSize = 15 + + tdt.time = canvas.NewText("", nil) + tdt.time.TextSize = 42 + + tdt.widget = widget.NewCard("", common.DATETIME, + container.NewVBox( + container.NewHBox(layout.NewSpacer(), tdt.date, tdt.week, layout.NewSpacer()), + container.NewCenter(tdt.time), + ), + ) + + tdt.widget.Resize(fyne.NewSize(ToyWidth, 130)) + + // for init + tdt.Run() + + _ = gobase.GlobalScheduler.AddJob("toy_datetime", "*/1 * * * * *", tdt) + // todo assert(err == nil) + return nil +} + +var ( + weekStr = [...]string{ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + } +) + +func (tdt *toyDateTime) Run() { + now := time.Now() + + tdt.date.Text = gobase.FormatTimeStampWithFormat(now.Unix(), gobase.DateFormat) + tdt.date.Refresh() + + tdt.week.Text = weekStr[now.Weekday()] + tdt.week.Refresh() + + tdt.time.Text = gobase.FormatTimeStampWithFormat(now.Unix(), gobase.TimeFormat) + tdt.time.Refresh() +} diff --git a/cmd/ptt/ui/toy_interface.go b/cmd/ptt/ui/toy_interface.go new file mode 100644 index 000000000..a61e09a91 --- /dev/null +++ b/cmd/ptt/ui/toy_interface.go @@ -0,0 +1,31 @@ +package ui + +import "fyne.io/fyne/v2/widget" + +type toyInterface interface { + Init() error + GetToyCard() *widget.Card +} + +var ( + toyRegister = []toyInterface{ + + &toyDateTime{}, + } +) + +const ( + ToyWidth = 250 +) + +type toyAdapter struct { + widget *widget.Card +} + +func (t toyAdapter) Init() error { + panic("implement Init") +} + +func (t toyAdapter) GetToyCard() *widget.Card { + return t.widget +} diff --git a/cmd/ptt/ui/toys.go b/cmd/ptt/ui/toys.go index db700c5b0..7de1ba1a8 100644 --- a/cmd/ptt/ui/toys.go +++ b/cmd/ptt/ui/toys.go @@ -12,6 +12,18 @@ type toys struct { func newToys() *toys { var t toys - t.widget = container.New(NewVCZBoxLayout()) + cards := make([]fyne.CanvasObject, len(toyRegister)) + for i, toy := range toyRegister { + toy := toy + err := toy.Init() + if err != nil { + panic(err) + } + + cards[i] = toy.GetToyCard() + } + + t.widget = container.New(NewVCZBoxLayout(), + cards...) return &t } diff --git a/cmd/ptt/ui/ui.go b/cmd/ptt/ui/ui.go index 0d98920b8..8517b5b67 100644 --- a/cmd/ptt/ui/ui.go +++ b/cmd/ptt/ui/ui.go @@ -5,6 +5,7 @@ import ( "sync" "fyne.io/fyne/v2" + "fyne.io/fyne/v2/theme" ) type UI interface { @@ -26,7 +27,7 @@ func NewUI( connService service.ConnService, pttService service.PttService, ) *UIImpl { - // app.Settings().SetTheme(theme.DarkTheme()) + app.Settings().SetTheme(theme.DarkTheme()) return &UIImpl{ app: app, windows: make(map[string]fyne.Window), diff --git a/go.mod b/go.mod index 21c2b7873..bfd8ea5db 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.18 require ( bright v0.0.0 fyne.io/fyne/v2 v2.2.3 + github.com/BabySid/gobase v0.0.0-20220614103908-39ac0a583c02 github.com/Pallinder/go-randomdata v1.2.0 github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 github.com/dengsgo/math-engine v0.0.0-20220213125415-0351c3c75eca @@ -37,7 +38,9 @@ require ( require ( fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93 // indirect + github.com/PuerkitoBio/goquery v1.8.0 // indirect github.com/akutz/memconn v0.1.0 // indirect + github.com/andybalholm/cascadia v1.3.1 // indirect github.com/apache/thrift v0.16.0 // indirect github.com/armon/go-metrics v0.3.10 // indirect github.com/aws/aws-sdk-go v1.34.28 // indirect @@ -56,10 +59,12 @@ require ( github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe // indirect github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504 // indirect github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 // indirect + github.com/go-cmd/cmd v1.4.0 // indirect github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 // indirect github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-ping/ping v0.0.0-20211130115550-779d1e919534 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect @@ -96,11 +101,13 @@ require ( github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f // indirect github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 // indirect github.com/lucas-clemente/quic-go v0.27.0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/marten-seemann/qtls-go1-16 v0.1.5 // indirect github.com/marten-seemann/qtls-go1-17 v0.1.1 // indirect github.com/marten-seemann/qtls-go1-18 v0.1.1 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-sqlite3 v1.14.12 // indirect github.com/miekg/dns v1.1.48 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.4.3 // indirect @@ -110,10 +117,12 @@ require ( github.com/philhofer/fwd v1.1.1 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/rpcxio/libkv v0.5.1-0.20210420120011-1fceaedca8a5 // indirect github.com/rs/cors v1.8.2 // indirect github.com/rubyist/circuitbreaker v2.2.1+incompatible // indirect github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414 // indirect + github.com/shirou/gopsutil/v3 v3.22.2 // indirect github.com/smallnest/quick v0.0.0-20220103065406-780def6371e6 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/srwiley/oksvg v0.0.0-20200311192757-870daf9aa564 // indirect @@ -126,6 +135,8 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/tinylib/msgp v1.1.6 // indirect github.com/tjfoc/gmsm v1.4.1 // indirect + github.com/tklauser/go-sysconf v0.3.9 // indirect + github.com/tklauser/numcpus v0.3.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect @@ -135,6 +146,7 @@ require ( github.com/xtaci/kcp-go v5.4.20+incompatible // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect github.com/yuin/goldmark v1.4.1 // indirect + github.com/yusufpapurcu/wmi v1.2.2 // indirect go.opentelemetry.io/otel v1.6.3 // indirect go.opentelemetry.io/otel/trace v1.6.3 // indirect go.uber.org/atomic v1.7.0 // indirect diff --git a/go.sum b/go.sum index fbad7e789..d17936854 100644 --- a/go.sum +++ b/go.sum @@ -48,6 +48,8 @@ fyne.io/fyne/v2 v2.2.3/go.mod h1:MBoGuHzLLSXdQOWFAwWhIhYTEMp33zqtGCReSWhaQTA= fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93 h1:V2IC9t0Zj9Ur6qDbfhUuzVmIvXKFyxZXRJyigUvovs4= fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93/go.mod h1:oM2AQqGJ1AMo4nNqZFYU8xYygSBZkW2hmdJ7n4yjedE= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/BabySid/gobase v0.0.0-20220614103908-39ac0a583c02 h1:4VkwDX+9araWz3MeAx/3EAWuQTu+dYnJqBlYrk86i4k= +github.com/BabySid/gobase v0.0.0-20220614103908-39ac0a583c02/go.mod h1:psRlcjEywZdxNf9jp6IdYY7VcAsYPtcnLHYQ+dWG5uw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -55,6 +57,8 @@ github.com/ChimeraCoder/gojson v1.1.0/go.mod h1:nYbTQlu6hv8PETM15J927yM0zGj3njIl github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= +github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U= +github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI= github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/akutz/memconn v0.1.0 h1:NawI0TORU4hcOMsMr11g7vwlCdkYeLKXBcxWu2W/P8A= github.com/akutz/memconn v0.1.0/go.mod h1:Jo8rI7m0NieZyLI5e2CDlRdRqRRB4S7Xp77ukDjH+Fw= @@ -63,6 +67,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk= +github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= +github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= @@ -158,6 +164,8 @@ github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 h1:hnLq+55b7Zh7/2IRz github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2/go.mod h1:eO7W361vmlPOrykIg+Rsh1SZ3tQBaOsfzZhsIOb/Lm0= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-cmd/cmd v1.4.0 h1:dF+1JtZMlgCKAcsvstp2VNmVA/jXRjlRYFOF4/w7Bbo= +github.com/go-cmd/cmd v1.4.0/go.mod h1:tbBenttXtZU4c5djS1o7PWL5pd2xAr5sIqH1kGdNiRc= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 h1:zDw5v7qm4yH7N8C8uWd+8Ii9rROdgWxQuGoJ9WDXxfk= github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw= @@ -175,6 +183,7 @@ github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ping/ping v0.0.0-20211130115550-779d1e919534 h1:dhy9OQKGBh4zVXbjwbxxHjRxMJtLXj3zfgpBYQaR4Q4= github.com/go-ping/ping v0.0.0-20211130115550-779d1e919534/go.mod h1:xIFjORFzTxqIV/tDVGO4eDy/bLuSyawEeojSm3GfRGk= @@ -197,6 +206,7 @@ github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= @@ -459,6 +469,8 @@ github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2 github.com/lucas-clemente/quic-go v0.27.0 h1:v6WY87q9zD4dKASbG8hy/LpzAVNzEQzw8sEIeloJsc4= github.com/lucas-clemente/quic-go v0.27.0/go.mod h1:AzgQoPda7N+3IqMMMkywBKggIFo2KT6pfnlrQ2QieeI= github.com/lucor/goinfo v0.0.0-20210802170112-c078a2b0f08b/go.mod h1:PRq09yoB+Q2OJReAmwzKivcYyremnibWGbK7WfftHzc= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -488,6 +500,8 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0= +github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= @@ -567,6 +581,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -613,6 +629,8 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= +github.com/shirou/gopsutil/v3 v3.22.2 h1:wCrArWFkHYIdDxx/FSfF5RB4dpJYW6t7rcp3+zL8uks= +github.com/shirou/gopsutil/v3 v3.22.2/go.mod h1:WapW1AOOPlHyXr+yOyw3uYx36enocrtSoSBy0L5vUHY= github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= @@ -705,6 +723,10 @@ github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw= github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho= github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE= +github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo= +github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= +github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ= +github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= github.com/toolkits/concurrent v0.0.0-20150624120057-a4371d70e3e3/go.mod h1:QDlpd3qS71vYtakd2hmdpqhJ9nwv6mD6A30bQ1BPBFE= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= @@ -741,6 +763,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1 h1:/vn0k+RBvwlxEmP5E7SZMqNxPhfMVFEJiykr15/0XKM= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= +github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= @@ -891,6 +915,7 @@ golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -976,6 +1001,7 @@ golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -993,9 +1019,11 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e h1:NHvCuwuS43lGnYhten69ZWqi2QOj/CiDNcKbVqwVoew=