diff --git a/pkg/cmd/rds/conn/commands.go b/pkg/cmd/rds/conn/commands.go index 2942075..db438a2 100644 --- a/pkg/cmd/rds/conn/commands.go +++ b/pkg/cmd/rds/conn/commands.go @@ -44,7 +44,7 @@ var CliCommands = []*cli.Command{ Credential: ctx.Args().Get(2), } - if err := c.GetConnectivity(); err != nil { + if err := c.CheckConnectivity(); err != nil { return fmt.Errorf("couldn't connect server: %s", err.Error()) } else { var servers []CliConnection diff --git a/pkg/cmd/rds/conn/connect.go b/pkg/cmd/rds/conn/connect.go index bdc0b21..abd48a3 100644 --- a/pkg/cmd/rds/conn/connect.go +++ b/pkg/cmd/rds/conn/connect.go @@ -3,6 +3,7 @@ package conn import ( "encoding/json" "fmt" + "strings" roadsign "code.smartsheep.studio/goatworks/roadsign/pkg" "github.com/gofiber/fiber/v2" @@ -15,7 +16,7 @@ type CliConnection struct { Credential string `json:"credential"` } -func (v CliConnection) GetConnectivity() error { +func (v CliConnection) CheckConnectivity() error { client := fiber.Get(v.Url + "/cgi/connectivity") client.BasicAuth("RoadSign CLI", v.Credential) @@ -30,7 +31,11 @@ func (v CliConnection) GetConnectivity() error { } else if resp["server"] != "RoadSign" { return fmt.Errorf("remote server isn't roadsign") } else if resp["version"] != roadsign.AppVersion { - log.Warn().Msg("Server connected successfully, but remote server version mismatch than CLI version, some features may buggy or completely unusable.") + if strings.Contains(roadsign.AppVersion, "#") { + return fmt.Errorf("remote server version mismatch client version, update or downgrade client required") + } else { + log.Warn().Msg("RoadSign CLI didn't complied with vcs information, compatibility was disabled. To enable it, reinstall cli with -buildvcs flag.") + } } } return nil diff --git a/pkg/cmd/rds/deploy/commands.go b/pkg/cmd/rds/deploy/commands.go index 97c410e..2014289 100644 --- a/pkg/cmd/rds/deploy/commands.go +++ b/pkg/cmd/rds/deploy/commands.go @@ -31,6 +31,8 @@ var DeployCommands = []*cli.Command{ server, ok := conn.GetConnection(ctx.Args().Get(0)) if !ok { return fmt.Errorf("server was not found, use \"rds connect\" add one first") + } else if err := server.CheckConnectivity(); err != nil { + return fmt.Errorf("couldn't connect server: %s", err.Error()) } // Send request @@ -65,6 +67,8 @@ var DeployCommands = []*cli.Command{ server, ok := conn.GetConnection(ctx.Args().Get(0)) if !ok { return fmt.Errorf("server was not found, use \"rds connect\" add one first") + } else if err := server.CheckConnectivity(); err != nil { + return fmt.Errorf("couldn't connect server: %s", err.Error()) } var site sign.SiteConfig