From f22affc05cf7e4dd04c716aa0dbd10625b0db8e0 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Thu, 3 Oct 2024 01:24:50 +0800 Subject: [PATCH] :wastebasket: Remove old RoadSign CLI --- pkg/cmd/rdc/conn/commands.go | 89 ------------------------------ pkg/cmd/rdc/conn/connect.go | 42 --------------- pkg/cmd/rdc/conn/directory.go | 17 ------ pkg/cmd/rdc/deploy/commands.go | 98 ---------------------------------- pkg/cmd/rdc/main.go | 48 ----------------- 5 files changed, 294 deletions(-) delete mode 100644 pkg/cmd/rdc/conn/commands.go delete mode 100644 pkg/cmd/rdc/conn/connect.go delete mode 100644 pkg/cmd/rdc/conn/directory.go delete mode 100644 pkg/cmd/rdc/deploy/commands.go delete mode 100644 pkg/cmd/rdc/main.go diff --git a/pkg/cmd/rdc/conn/commands.go b/pkg/cmd/rdc/conn/commands.go deleted file mode 100644 index db438a2..0000000 --- a/pkg/cmd/rdc/conn/commands.go +++ /dev/null @@ -1,89 +0,0 @@ -package conn - -import ( - "encoding/json" - "fmt" - - "github.com/rs/zerolog/log" - "github.com/samber/lo" - "github.com/spf13/viper" - "github.com/urfave/cli/v2" -) - -var CliCommands = []*cli.Command{ - { - Name: "list", - Aliases: []string{"ls"}, - Description: "List all connected remote server", - Action: func(ctx *cli.Context) error { - var servers []CliConnection - raw, _ := json.Marshal(viper.Get("servers")) - _ = json.Unmarshal(raw, &servers) - - log.Info().Msgf("There are %d server(s) connected in total.", len(servers)) - for idx, server := range servers { - log.Info().Msgf("%d) %s: %s", idx+1, server.ID, server.Url) - } - - return nil - }, - }, - { - Name: "connect", - Aliases: []string{"add"}, - Description: "Connect and save configuration of remote server", - ArgsUsage: " ", - Action: func(ctx *cli.Context) error { - if ctx.Args().Len() < 3 { - return fmt.Errorf("must have three arguments: ") - } - - c := CliConnection{ - ID: ctx.Args().Get(0), - Url: ctx.Args().Get(1), - Credential: ctx.Args().Get(2), - } - - if err := c.CheckConnectivity(); err != nil { - return fmt.Errorf("couldn't connect server: %s", err.Error()) - } else { - var servers []CliConnection - raw, _ := json.Marshal(viper.Get("servers")) - _ = json.Unmarshal(raw, &servers) - viper.Set("servers", append(servers, c)) - - if err := viper.WriteConfig(); err != nil { - return err - } else { - log.Info().Msg("Successfully connected a new remote server, enter \"rds ls\" to get more info.") - return nil - } - } - }, - }, - { - Name: "disconnect", - Aliases: []string{"remove"}, - Description: "Remove a remote server configuration", - ArgsUsage: "", - Action: func(ctx *cli.Context) error { - if ctx.Args().Len() < 1 { - return fmt.Errorf("must have more one arguments: ") - } - - var servers []CliConnection - raw, _ := json.Marshal(viper.Get("servers")) - _ = json.Unmarshal(raw, &servers) - viper.Set("servers", lo.Filter(servers, func(item CliConnection, idx int) bool { - return item.ID != ctx.Args().Get(0) - })) - - if err := viper.WriteConfig(); err != nil { - return err - } else { - log.Info().Msg("Successfully disconnected a remote server, enter \"rds ls\" to get more info.") - return nil - } - }, - }, -} diff --git a/pkg/cmd/rdc/conn/connect.go b/pkg/cmd/rdc/conn/connect.go deleted file mode 100644 index 21a5155..0000000 --- a/pkg/cmd/rdc/conn/connect.go +++ /dev/null @@ -1,42 +0,0 @@ -package conn - -import ( - "encoding/json" - "fmt" - "strings" - - roadsign "git.solsynth.dev/goatworks/roadsign/pkg" - "github.com/gofiber/fiber/v2" - "github.com/rs/zerolog/log" -) - -type CliConnection struct { - ID string `json:"id"` - Url string `json:"url"` - Credential string `json:"credential"` -} - -func (v CliConnection) CheckConnectivity() error { - client := fiber.Get(v.Url + "/cgi/metadata") - client.BasicAuth("RoadSign CLI", v.Credential) - - if status, data, err := client.Bytes(); len(err) > 0 { - return fmt.Errorf("couldn't connect to server: %q", err) - } else if status != 200 { - return fmt.Errorf("server rejected request, may cause by invalid credential") - } else { - var resp fiber.Map - if err := json.Unmarshal(data, &resp); err != nil { - return err - } else if resp["server"] != "RoadSign" { - return fmt.Errorf("remote server isn't roadsign") - } else if resp["version"] != roadsign.AppVersion { - 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/rdc/conn/directory.go b/pkg/cmd/rdc/conn/directory.go deleted file mode 100644 index 60821b0..0000000 --- a/pkg/cmd/rdc/conn/directory.go +++ /dev/null @@ -1,17 +0,0 @@ -package conn - -import ( - "encoding/json" - - "github.com/samber/lo" - "github.com/spf13/viper" -) - -func GetConnection(id string) (CliConnection, bool) { - var servers []CliConnection - raw, _ := json.Marshal(viper.Get("servers")) - _ = json.Unmarshal(raw, &servers) - return lo.Find(servers, func(item CliConnection) bool { - return item.ID == id - }) -} diff --git a/pkg/cmd/rdc/deploy/commands.go b/pkg/cmd/rdc/deploy/commands.go deleted file mode 100644 index 6eea1d2..0000000 --- a/pkg/cmd/rdc/deploy/commands.go +++ /dev/null @@ -1,98 +0,0 @@ -package deploy - -import ( - "fmt" - "io" - "os" - "strings" - - jsoniter "github.com/json-iterator/go" - - "git.solsynth.dev/goatworks/roadsign/pkg/cmd/rdc/conn" - "github.com/gofiber/fiber/v2" - "github.com/rs/zerolog/log" - "github.com/urfave/cli/v2" -) - -var DeployCommands = []*cli.Command{ - { - Name: "deploy", - Aliases: []string{"dp"}, - ArgsUsage: " [path]", - Action: func(ctx *cli.Context) error { - if ctx.Args().Len() < 4 { - return fmt.Errorf("must have four arguments: ") - } - - if !strings.HasSuffix(ctx.Args().Get(3), ".zip") { - return fmt.Errorf("input file must be a zip file and ends with .zip") - } - - 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 - log.Info().Msg("Now publishing to remote server...") - - url := fmt.Sprintf("/webhooks/publish/%s/%s?mimetype=%s", ctx.Args().Get(1), ctx.Args().Get(2), "application/zip") - client := fiber.Put(server.Url+url). - SendFile(ctx.Args().Get(3), "attachments"). - MultipartForm(nil). - BasicAuth("RoadSign CLI", server.Credential) - - if status, data, err := client.Bytes(); len(err) > 0 { - return fmt.Errorf("failed to publish to remote: %q", err) - } else if status != 200 { - return fmt.Errorf("server rejected request, status code %d, response %s", status, string(data)) - } - - log.Info().Msg("Well done! Your site is successfully published! 🎉") - - return nil - }, - }, - { - Name: "sync", - ArgsUsage: " ", - Action: func(ctx *cli.Context) error { - if ctx.Args().Len() < 3 { - return fmt.Errorf("must have three arguments: ") - } - - 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 raw []byte - if file, err := os.Open(ctx.Args().Get(2)); err != nil { - return err - } else { - raw, _ = io.ReadAll(file) - } - - url := fmt.Sprintf("/webhooks/sync/%s", ctx.Args().Get(1)) - client := fiber.Put(server.Url+url). - JSONEncoder(jsoniter.ConfigCompatibleWithStandardLibrary.Marshal). - JSONDecoder(jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal). - Body(raw). - BasicAuth("RoadSign CLI", server.Credential) - - if status, data, err := client.Bytes(); len(err) > 0 { - return fmt.Errorf("failed to sync to remote: %q", err) - } else if status != 200 { - return fmt.Errorf("server rejected request, status code %d, response %s", status, string(data)) - } - - log.Info().Msg("Well done! Your site configuration is up-to-date! 🎉") - - return nil - }, - }, -} diff --git a/pkg/cmd/rdc/main.go b/pkg/cmd/rdc/main.go deleted file mode 100644 index d1f0c71..0000000 --- a/pkg/cmd/rdc/main.go +++ /dev/null @@ -1,48 +0,0 @@ -package main - -import ( - "os" - - roadsign "git.solsynth.dev/goatworks/roadsign/pkg" - "git.solsynth.dev/goatworks/roadsign/pkg/cmd/rdc/conn" - "git.solsynth.dev/goatworks/roadsign/pkg/cmd/rdc/deploy" - "github.com/rs/zerolog" - "github.com/rs/zerolog/log" - "github.com/spf13/viper" - "github.com/urfave/cli/v2" -) - -func init() { - zerolog.TimeFieldFormat = zerolog.TimeFormatUnix - log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stdout}) -} - -func main() { - // Configure settings - viper.AddConfigPath("$HOME") - viper.SetConfigName(".roadsignrc") - viper.SetConfigType("toml") - - // Load settings - if err := viper.ReadInConfig(); err != nil { - if _, ok := err.(viper.ConfigFileNotFoundError); ok { - viper.SafeWriteConfig() - viper.ReadInConfig() - } else { - log.Panic().Err(err).Msg("An error occurred when loading settings.") - } - } - - // Configure CLI - app := &cli.App{ - Name: "RoadSign CLI", - Version: roadsign.AppVersion, - Suggest: true, - Commands: append(append([]*cli.Command{}, conn.CliCommands...), deploy.DeployCommands...), - } - - // Run CLI - if err := app.Run(os.Args); err != nil { - log.Fatal().Err(err).Msg("An error occurred when running cli.") - } -}