Use config.ServiceConfig across API

This commit is contained in:
Philipp Wolfer 2023-12-07 23:44:58 +01:00
parent 091b3c2f49
commit 9c363cc06d
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
27 changed files with 137 additions and 99 deletions

View file

@ -16,23 +16,15 @@ Scotty. If not, see <https://www.gnu.org/licenses/>.
package cli
import (
"fmt"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"go.uploadedlobster.com/scotty/internal/config"
)
func GetConfigFromFlag(cmd *cobra.Command, flagName string) (string, *viper.Viper) {
configName := cmd.Flag(flagName).Value.String()
var config *viper.Viper
servicesConfig := viper.Sub("service")
if servicesConfig != nil {
config = servicesConfig.Sub(configName)
}
if config == nil {
cobra.CheckErr(fmt.Sprintf("invalid configuration \"%s\"", configName))
}
return configName, config
func GetServiceConfigFromFlag(cmd *cobra.Command, flagName string) *config.ServiceConfig {
name := cmd.Flag(flagName).Value.String()
config, err := config.GetService(name)
cobra.CheckErr(err)
return config
}
func getInt64FromFlag(cmd *cobra.Command, flagName string) (result int64) {

View file

@ -16,6 +16,7 @@ Scotty. If not, see <https://www.gnu.org/licenses/>.
package cli
import (
"errors"
"fmt"
"sync"
"time"
@ -59,8 +60,14 @@ type TransferCmd[E models.Backend, I models.ImportBackend, R models.ListensResul
}
func (c *TransferCmd[E, I, R]) resolveBackends() error {
sourceName, sourceConfig := GetConfigFromFlag(c.cmd, "from")
targetName, targetConfig := GetConfigFromFlag(c.cmd, "to")
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"))
}
// Initialize backends
expBackend, err := backends.ResolveBackend[E](sourceConfig)
@ -72,8 +79,8 @@ func (c *TransferCmd[E, I, R]) resolveBackends() error {
return err
}
c.sourceName = sourceName
c.targetName = targetName
c.sourceName = sourceConfig.Name
c.targetName = targetConfig.Name
c.ExpBackend = expBackend
c.ImpBackend = impBackend
return nil