Fixed bad value errors when trying to set default-limit without specifying a value
Now, when calling 'set' with a name but no value, with a few exceptions, the current setting value will be displayed.
This commit is contained in:
parent
ad1a77a257
commit
700a1a2253
|
@ -23,4 +23,5 @@ type SettingsProvider interface {
|
|||
SetDefaultLimit(limit int) error
|
||||
ScriptLookupFS() ([]fs.FS, error)
|
||||
SetScriptLookupPaths(value string) error
|
||||
ScriptLookupPaths() string
|
||||
}
|
||||
|
|
|
@ -44,7 +44,25 @@ func (sc *SettingsController) SetSetting(name string, value string) tea.Msg {
|
|||
Message: "In read-write mode",
|
||||
Next: SettingsUpdated{},
|
||||
}
|
||||
case "read-only":
|
||||
if value == "" {
|
||||
isRO, _ := sc.settings.IsReadOnly()
|
||||
return events.StatusMsg(fmt.Sprintf("read-only = %v", isRO))
|
||||
}
|
||||
|
||||
newRO, err := strconv.ParseBool(value)
|
||||
if err != nil {
|
||||
return events.Error(errors.Wrapf(err, "bad value: %v", value))
|
||||
}
|
||||
|
||||
if err := sc.settings.SetReadOnly(newRO); err != nil {
|
||||
return events.Error(err)
|
||||
}
|
||||
case "default-limit":
|
||||
if value == "" {
|
||||
return events.StatusMsg(fmt.Sprintf("default-limit = %v", sc.settings.DefaultLimit()))
|
||||
}
|
||||
|
||||
newLimit, err := strconv.Atoi(value)
|
||||
if err != nil {
|
||||
return events.Error(errors.Wrapf(err, "bad value: %v", value))
|
||||
|
@ -58,6 +76,10 @@ func (sc *SettingsController) SetSetting(name string, value string) tea.Msg {
|
|||
Next: SettingsUpdated{},
|
||||
}
|
||||
case "script.lookup-path":
|
||||
if value == "" {
|
||||
return events.StatusMsg(fmt.Sprintf("script.lookup-path = '%v'", sc.settings.ScriptLookupPaths()))
|
||||
}
|
||||
|
||||
if err := sc.settings.SetScriptLookupPaths(value); err != nil {
|
||||
return events.Error(err)
|
||||
}
|
||||
|
|
|
@ -16,6 +16,9 @@ func TestSettingsController_SetSetting(t *testing.T) {
|
|||
assert.True(t, srv.settingsController.IsReadOnly())
|
||||
assert.IsType(t, events.WrappedStatusMsg{}, msg)
|
||||
assert.IsType(t, controllers.SettingsUpdated{}, msg.(events.WrappedStatusMsg).Next)
|
||||
|
||||
msg = invokeCommand(t, srv.settingsController.SetSetting("read-only", ""))
|
||||
assert.Equal(t, "read-only = true", string(msg.(events.StatusMsg)))
|
||||
})
|
||||
|
||||
t.Run("read-write setting", func(t *testing.T) {
|
||||
|
@ -26,6 +29,9 @@ func TestSettingsController_SetSetting(t *testing.T) {
|
|||
assert.False(t, srv.settingsController.IsReadOnly())
|
||||
assert.IsType(t, events.WrappedStatusMsg{}, msg)
|
||||
assert.IsType(t, controllers.SettingsUpdated{}, msg.(events.WrappedStatusMsg).Next)
|
||||
|
||||
msg = invokeCommand(t, srv.settingsController.SetSetting("read-only", ""))
|
||||
assert.Equal(t, "read-only = false", string(msg.(events.StatusMsg)))
|
||||
})
|
||||
|
||||
t.Run("set default limit", func(t *testing.T) {
|
||||
|
@ -35,5 +41,8 @@ func TestSettingsController_SetSetting(t *testing.T) {
|
|||
invokeCommand(t, srv.settingsController.SetSetting("default-limit", "20"))
|
||||
|
||||
assert.Equal(t, 20, srv.settingProvider.DefaultLimit())
|
||||
|
||||
msg := invokeCommand(t, srv.settingsController.SetSetting("default-limit", ""))
|
||||
assert.Equal(t, "default-limit = 20", string(msg.(events.StatusMsg)))
|
||||
})
|
||||
}
|
||||
|
|
|
@ -36,6 +36,14 @@ func (c *SettingStore) SetScriptLookupPaths(value string) error {
|
|||
return c.ws.Set(settingBucket, keyTableReadOnly, value)
|
||||
}
|
||||
|
||||
func (c *SettingStore) ScriptLookupPaths() string {
|
||||
paths, err := c.getStringValue(keyScriptLookupPath, defaultScriptLookupPaths)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return paths
|
||||
}
|
||||
|
||||
func (c *SettingStore) ScriptLookupFS() ([]fs.FS, error) {
|
||||
paths, err := c.getStringValue(keyScriptLookupPath, defaultScriptLookupPaths)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in a new issue