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 | 	SetDefaultLimit(limit int) error | ||||||
| 	ScriptLookupFS() ([]fs.FS, error) | 	ScriptLookupFS() ([]fs.FS, error) | ||||||
| 	SetScriptLookupPaths(value string) 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", | 			Message: "In read-write mode", | ||||||
| 			Next:    SettingsUpdated{}, | 			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": | 	case "default-limit": | ||||||
|  | 		if value == "" { | ||||||
|  | 			return events.StatusMsg(fmt.Sprintf("default-limit = %v", sc.settings.DefaultLimit())) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		newLimit, err := strconv.Atoi(value) | 		newLimit, err := strconv.Atoi(value) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return events.Error(errors.Wrapf(err, "bad value: %v", value)) | 			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{}, | 			Next:    SettingsUpdated{}, | ||||||
| 		} | 		} | ||||||
| 	case "script.lookup-path": | 	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 { | 		if err := sc.settings.SetScriptLookupPaths(value); err != nil { | ||||||
| 			return events.Error(err) | 			return events.Error(err) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -16,6 +16,9 @@ func TestSettingsController_SetSetting(t *testing.T) { | ||||||
| 		assert.True(t, srv.settingsController.IsReadOnly()) | 		assert.True(t, srv.settingsController.IsReadOnly()) | ||||||
| 		assert.IsType(t, events.WrappedStatusMsg{}, msg) | 		assert.IsType(t, events.WrappedStatusMsg{}, msg) | ||||||
| 		assert.IsType(t, controllers.SettingsUpdated{}, msg.(events.WrappedStatusMsg).Next) | 		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) { | 	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.False(t, srv.settingsController.IsReadOnly()) | ||||||
| 		assert.IsType(t, events.WrappedStatusMsg{}, msg) | 		assert.IsType(t, events.WrappedStatusMsg{}, msg) | ||||||
| 		assert.IsType(t, controllers.SettingsUpdated{}, msg.(events.WrappedStatusMsg).Next) | 		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) { | 	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")) | 		invokeCommand(t, srv.settingsController.SetSetting("default-limit", "20")) | ||||||
| 
 | 
 | ||||||
| 		assert.Equal(t, 20, srv.settingProvider.DefaultLimit()) | 		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) | 	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) { | func (c *SettingStore) ScriptLookupFS() ([]fs.FS, error) { | ||||||
| 	paths, err := c.getStringValue(keyScriptLookupPath, defaultScriptLookupPaths) | 	paths, err := c.getStringValue(keyScriptLookupPath, defaultScriptLookupPaths) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue