From cbe27923b36578b2dff7825090c300ebcf556be2 Mon Sep 17 00:00:00 2001 From: boojack Date: Thu, 3 Aug 2023 23:48:21 +0800 Subject: [PATCH] chore: update commands (#2074) --- cmd/memos.go | 123 ---------------------------------------- cmd/mvrss.go | 94 ++++++++++++++++++++++++++++++ {setup => cmd}/setup.go | 54 ++++++++++++++++-- 3 files changed, 144 insertions(+), 127 deletions(-) create mode 100644 cmd/mvrss.go rename {setup => cmd}/setup.go (62%) diff --git a/cmd/memos.go b/cmd/memos.go index 90c371ce..06a6c919 100644 --- a/cmd/memos.go +++ b/cmd/memos.go @@ -7,14 +7,12 @@ import ( "os" "os/signal" "syscall" - "time" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/usememos/memos/server" _profile "github.com/usememos/memos/server/profile" - "github.com/usememos/memos/setup" "github.com/usememos/memos/store" "github.com/usememos/memos/store/db" ) @@ -81,110 +79,6 @@ var ( <-ctx.Done() }, } - - setupCmd = &cobra.Command{ - Use: "setup", - Short: "Make initial setup for memos", - Run: func(cmd *cobra.Command, _ []string) { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - - hostUsername, err := cmd.Flags().GetString(setupCmdFlagHostUsername) - if err != nil { - fmt.Printf("failed to get owner username, error: %+v\n", err) - return - } - - hostPassword, err := cmd.Flags().GetString(setupCmdFlagHostPassword) - if err != nil { - fmt.Printf("failed to get owner password, error: %+v\n", err) - return - } - - db := db.NewDB(profile) - if err := db.Open(ctx); err != nil { - fmt.Printf("failed to open db, error: %+v\n", err) - return - } - - store := store.New(db.DBInstance, profile) - if err := setup.Execute(ctx, store, hostUsername, hostPassword); err != nil { - fmt.Printf("failed to setup, error: %+v\n", err) - return - } - }, - } - - mvrssCmd = &cobra.Command{ - Use: "mvrss", // `mvrss` is a shortened for 'means move resource' - Short: "Move resource between storage", - Run: func(cmd *cobra.Command, _ []string) { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - - from, err := cmd.Flags().GetString(mvrssCmdFlagFrom) - if err != nil { - fmt.Printf("failed to get from storage, error: %+v\n", err) - return - } - - to, err := cmd.Flags().GetString(mvrssCmdFlagTo) - if err != nil { - fmt.Printf("failed to get to storage, error: %+v\n", err) - return - } - - if from != "local" || to != "db" { - fmt.Printf("only local=>db be supported currently\n") - return - } - - db := db.NewDB(profile) - if err := db.Open(ctx); err != nil { - fmt.Printf("failed to open db, error: %+v\n", err) - return - } - - s := store.New(db.DBInstance, profile) - resources, err := s.ListResources(ctx, &store.FindResource{}) - if err != nil { - fmt.Printf("failed to list resources, error: %+v\n", err) - return - } - - var emptyString string - for _, res := range resources { - if res.InternalPath == "" { - continue - } - - buf, err := os.ReadFile(res.InternalPath) - if err != nil { - fmt.Printf("Resource %5d failed to read file: %s\n", res.ID, err) - continue - } - - if len(buf) != int(res.Size) { - fmt.Printf("Resource %5d size of file %d != %d\n", res.ID, len(buf), res.Size) - continue - } - - update := store.UpdateResource{ - ID: res.ID, - Blob: buf, - InternalPath: &emptyString, - } - _, err = s.UpdateResource(ctx, &update) - if err != nil { - fmt.Printf("Resource %5d failed to update: %s\n", res.ID, err) - continue - } - - fmt.Printf("Resource %5d copy %12d bytes from %s\n", res.ID, len(buf), res.InternalPath) - } - fmt.Println("done") - }, - } ) func Execute() error { @@ -214,16 +108,6 @@ func init() { viper.SetDefault("mode", "demo") viper.SetDefault("port", 8081) viper.SetEnvPrefix("memos") - - setupCmd.Flags().String(setupCmdFlagHostUsername, "", "Owner username") - setupCmd.Flags().String(setupCmdFlagHostPassword, "", "Owner password") - - rootCmd.AddCommand(setupCmd) - - mvrssCmd.Flags().String(mvrssCmdFlagFrom, "local", "From storage") - mvrssCmd.Flags().String(mvrssCmdFlagTo, "db", "To Storage") - - rootCmd.AddCommand(mvrssCmd) } func initConfig() { @@ -243,10 +127,3 @@ func initConfig() { println("version:", profile.Version) println("---") } - -const ( - setupCmdFlagHostUsername = "host-username" - setupCmdFlagHostPassword = "host-password" - mvrssCmdFlagFrom = "from" - mvrssCmdFlagTo = "to" -) diff --git a/cmd/mvrss.go b/cmd/mvrss.go new file mode 100644 index 00000000..1063e530 --- /dev/null +++ b/cmd/mvrss.go @@ -0,0 +1,94 @@ +package cmd + +import ( + "context" + "fmt" + "os" + "time" + + "github.com/spf13/cobra" + "github.com/usememos/memos/store" + "github.com/usememos/memos/store/db" +) + +var ( + mvrssCmdFlagFrom = "from" + mvrssCmdFlagTo = "to" + mvrssCmd = &cobra.Command{ + Use: "mvrss", // `mvrss` is a shortened for 'means move resource' + Short: "Move resource between storage", + Run: func(cmd *cobra.Command, _ []string) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + from, err := cmd.Flags().GetString(mvrssCmdFlagFrom) + if err != nil { + fmt.Printf("failed to get from storage, error: %+v\n", err) + return + } + + to, err := cmd.Flags().GetString(mvrssCmdFlagTo) + if err != nil { + fmt.Printf("failed to get to storage, error: %+v\n", err) + return + } + + if from != "local" || to != "db" { + fmt.Printf("only local=>db be supported currently\n") + return + } + + db := db.NewDB(profile) + if err := db.Open(ctx); err != nil { + fmt.Printf("failed to open db, error: %+v\n", err) + return + } + + s := store.New(db.DBInstance, profile) + resources, err := s.ListResources(ctx, &store.FindResource{}) + if err != nil { + fmt.Printf("failed to list resources, error: %+v\n", err) + return + } + + var emptyString string + for _, res := range resources { + if res.InternalPath == "" { + continue + } + + buf, err := os.ReadFile(res.InternalPath) + if err != nil { + fmt.Printf("Resource %5d failed to read file: %s\n", res.ID, err) + continue + } + + if len(buf) != int(res.Size) { + fmt.Printf("Resource %5d size of file %d != %d\n", res.ID, len(buf), res.Size) + continue + } + + update := store.UpdateResource{ + ID: res.ID, + Blob: buf, + InternalPath: &emptyString, + } + _, err = s.UpdateResource(ctx, &update) + if err != nil { + fmt.Printf("Resource %5d failed to update: %s\n", res.ID, err) + continue + } + + fmt.Printf("Resource %5d copy %12d bytes from %s\n", res.ID, len(buf), res.InternalPath) + } + fmt.Println("done") + }, + } +) + +func init() { + mvrssCmd.Flags().String(mvrssCmdFlagFrom, "local", "From storage") + mvrssCmd.Flags().String(mvrssCmdFlagTo, "db", "To Storage") + + rootCmd.AddCommand(mvrssCmd) +} diff --git a/setup/setup.go b/cmd/setup.go similarity index 62% rename from setup/setup.go rename to cmd/setup.go index 0ed27e79..55332d8d 100644 --- a/setup/setup.go +++ b/cmd/setup.go @@ -1,17 +1,63 @@ -package setup +package cmd import ( "context" "errors" "fmt" + "time" - "golang.org/x/crypto/bcrypt" - + "github.com/spf13/cobra" "github.com/usememos/memos/common/util" "github.com/usememos/memos/store" + "github.com/usememos/memos/store/db" + "golang.org/x/crypto/bcrypt" ) -func Execute(ctx context.Context, store *store.Store, hostUsername, hostPassword string) error { +var ( + setupCmdFlagHostUsername = "host-username" + setupCmdFlagHostPassword = "host-password" + setupCmd = &cobra.Command{ + Use: "setup", + Short: "Make initial setup for memos", + Run: func(cmd *cobra.Command, _ []string) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + hostUsername, err := cmd.Flags().GetString(setupCmdFlagHostUsername) + if err != nil { + fmt.Printf("failed to get owner username, error: %+v\n", err) + return + } + + hostPassword, err := cmd.Flags().GetString(setupCmdFlagHostPassword) + if err != nil { + fmt.Printf("failed to get owner password, error: %+v\n", err) + return + } + + db := db.NewDB(profile) + if err := db.Open(ctx); err != nil { + fmt.Printf("failed to open db, error: %+v\n", err) + return + } + + store := store.New(db.DBInstance, profile) + if err := ExecuteSetup(ctx, store, hostUsername, hostPassword); err != nil { + fmt.Printf("failed to setup, error: %+v\n", err) + return + } + }, + } +) + +func init() { + setupCmd.Flags().String(setupCmdFlagHostUsername, "", "Owner username") + setupCmd.Flags().String(setupCmdFlagHostPassword, "", "Owner password") + + rootCmd.AddCommand(setupCmd) +} + +func ExecuteSetup(ctx context.Context, store *store.Store, hostUsername, hostPassword string) error { s := setupService{store: store} return s.Setup(ctx, hostUsername, hostPassword) }