mirror of
https://git.sr.ht/~phw/scotty
synced 2025-04-29 21:27:05 +02:00
service auth, edit and delete now all support --service flag
If a service name is given, this will be used. If not the user is prompted to select one.
This commit is contained in:
parent
c21715d36b
commit
9449a29fb1
9 changed files with 29 additions and 51 deletions
|
@ -63,12 +63,8 @@ func (l BackendList) Swap(i, j int) {
|
|||
|
||||
type Capability = string
|
||||
|
||||
func ResolveBackend[T interface{}](config *config.ServiceConfig) (T, error) {
|
||||
func ResolveBackend[T interface{}](config config.ServiceConfig) (T, error) {
|
||||
var result T
|
||||
if config == nil {
|
||||
err := fmt.Errorf("config must not be nil")
|
||||
return result, err
|
||||
}
|
||||
backend, err := backendWithConfig(config)
|
||||
if err != nil {
|
||||
return result, err
|
||||
|
@ -120,12 +116,12 @@ var knownBackends = map[string]func() models.Backend{
|
|||
"subsonic": func() models.Backend { return &subsonic.SubsonicApiBackend{} },
|
||||
}
|
||||
|
||||
func backendWithConfig(config *config.ServiceConfig) (models.Backend, error) {
|
||||
func backendWithConfig(config config.ServiceConfig) (models.Backend, error) {
|
||||
backend, err := BackendByName(config.Backend)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return backend.FromConfig(config), nil
|
||||
return backend.FromConfig(&config), nil
|
||||
}
|
||||
|
||||
func ImplementsInterface[T interface{}](backend *models.Backend) (bool, string) {
|
||||
|
|
|
@ -42,7 +42,7 @@ func TestResolveBackend(t *testing.T) {
|
|||
c := viper.New()
|
||||
c.Set("backend", "dump")
|
||||
service := config.NewServiceConfig("test", c)
|
||||
backend, err := backends.ResolveBackend[models.ListensImport](&service)
|
||||
backend, err := backends.ResolveBackend[models.ListensImport](service)
|
||||
assert.NoError(t, err)
|
||||
assert.IsType(t, &dump.DumpBackend{}, backend)
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ func TestResolveBackendUnknown(t *testing.T) {
|
|||
c := viper.New()
|
||||
c.Set("backend", "foo")
|
||||
service := config.NewServiceConfig("test", c)
|
||||
_, err := backends.ResolveBackend[models.ListensImport](&service)
|
||||
_, err := backends.ResolveBackend[models.ListensImport](service)
|
||||
assert.EqualError(t, err, "unknown backend \"foo\"")
|
||||
}
|
||||
|
||||
|
@ -59,7 +59,7 @@ func TestResolveBackendInvalidInterface(t *testing.T) {
|
|||
c := viper.New()
|
||||
c.Set("backend", "dump")
|
||||
service := config.NewServiceConfig("test", c)
|
||||
_, err := backends.ResolveBackend[models.ListensExport](&service)
|
||||
_, err := backends.ResolveBackend[models.ListensExport](service)
|
||||
assert.EqualError(t, err, "backend dump does not implement ListensExport")
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue