diff --git a/cmd/beam.go b/cmd/beam.go index 2a43495..51dd1c5 100644 --- a/cmd/beam.go +++ b/cmd/beam.go @@ -37,11 +37,7 @@ func init() { // Cobra supports Persistent Flags which will work for this command // and all subcommands, e.g.: - beamCmd.PersistentFlags().StringP("from", "f", "", "Source service configuration (required)") - beamCmd.MarkPersistentFlagRequired("from") - beamCmd.PersistentFlags().StringP("to", "t", "", "Target service configuration (required)") - beamCmd.MarkPersistentFlagRequired("to") - beamCmd.PersistentFlags().Int64P("timestamp", "s", 0, "Only import data newer then given Unix timestamp") + // beamCmd.PersistentFlags().String("foo", "", "A help for foo") // Cobra supports local flags which will only run when this command // is called directly, e.g.: diff --git a/cmd/beam_listens.go b/cmd/beam_listens.go index 499654d..1b83e29 100644 --- a/cmd/beam_listens.go +++ b/cmd/beam_listens.go @@ -26,9 +26,11 @@ import ( ) var beamListensCmd = &cobra.Command{ - Use: "listens", - Short: "Transfer listens between two services", - Long: `Transfers listens between two configured services.`, + Use: "listens SOURCE TARGET", + Short: "Transfer listens between two services", + Long: `Transfers listens between two configured services.`, + Args: cobra.ExactArgs(2), + ArgAliases: []string{"source", "target"}, Run: func(cmd *cobra.Command, args []string) { db, err := storage.New(config.DatabasePath()) cobra.CheckErr(err) @@ -36,7 +38,7 @@ var beamListensCmd = &cobra.Command{ models.ListensExport, models.ListensImport, models.ListensResult, - ](cmd, &db, "listens") + ](cmd, &db, "listens", args[0], args[1]) cobra.CheckErr(err) exp := backends.ListensExportProcessor{Backend: c.ExpBackend} imp := backends.ListensImportProcessor{Backend: c.ImpBackend} @@ -56,4 +58,5 @@ func init() { // Cobra supports local flags which will only run when this command // is called directly, e.g.: // beamListensCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + beamListensCmd.Flags().Int64P("timestamp", "t", 0, "Only import listens newer then given Unix timestamp") } diff --git a/cmd/beam_loves.go b/cmd/beam_loves.go index d632719..9c2669a 100644 --- a/cmd/beam_loves.go +++ b/cmd/beam_loves.go @@ -26,9 +26,10 @@ import ( ) var beamLovesCmd = &cobra.Command{ - Use: "loves", + Use: "loves SOURCE TARGET", Short: "Transfer loves between two services", Long: `Transfers loves between two configured services.`, + Args: cobra.ExactArgs(2), Run: func(cmd *cobra.Command, args []string) { db, err := storage.New(config.DatabasePath()) cobra.CheckErr(err) @@ -36,7 +37,7 @@ var beamLovesCmd = &cobra.Command{ models.LovesExport, models.LovesImport, models.LovesResult, - ](cmd, &db, "loves") + ](cmd, &db, "loves", args[0], args[1]) cobra.CheckErr(err) exp := backends.LovesExportProcessor{Backend: c.ExpBackend} imp := backends.LovesImportProcessor{Backend: c.ImpBackend} @@ -57,4 +58,5 @@ func init() { // Cobra supports local flags which will only run when this command // is called directly, e.g.: // beamLovesCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + beamLovesCmd.Flags().Int64P("timestamp", "t", 0, "Only import loves newer then given Unix timestamp") } diff --git a/internal/cli/transfer.go b/internal/cli/transfer.go index cd8944e..0ad67f1 100644 --- a/internal/cli/transfer.go +++ b/internal/cli/transfer.go @@ -16,7 +16,6 @@ Scotty. If not, see . package cli import ( - "errors" "fmt" "sync" "time" @@ -24,6 +23,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/viper" "go.uploadedlobster.com/scotty/internal/backends" + "go.uploadedlobster.com/scotty/internal/config" "go.uploadedlobster.com/scotty/internal/models" "go.uploadedlobster.com/scotty/internal/storage" ) @@ -36,13 +36,15 @@ func NewTransferCmd[ cmd *cobra.Command, db *storage.Database, entity string, + source string, + target string, ) (TransferCmd[E, I, R], error) { c := TransferCmd[E, I, R]{ cmd: cmd, db: db, entity: entity, } - err := c.resolveBackends() + err := c.resolveBackends(source, target) if err != nil { return c, err } @@ -59,15 +61,10 @@ type TransferCmd[E models.Backend, I models.ImportBackend, R models.ListensResul ImpBackend I } -func (c *TransferCmd[E, I, R]) resolveBackends() error { - sourceConfig := GetServiceConfigFromFlag(c.cmd, "from") - if sourceConfig == nil { - cobra.CheckErr(errors.New("failed loading service configuration")) - } - targetConfig := GetServiceConfigFromFlag(c.cmd, "to") - if targetConfig == nil { - cobra.CheckErr(errors.New("failed loading service configuration")) - } +func (c *TransferCmd[E, I, R]) resolveBackends(source string, target string) error { + sourceConfig, err := config.GetService(source) + cobra.CheckErr(err) + targetConfig, err := config.GetService(target) // Initialize backends expBackend, err := backends.ResolveBackend[E](sourceConfig)