|
1 | 1 | package config |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "encoding/json" |
4 | 5 | "errors" |
5 | 6 | "fmt" |
6 | 7 | "io" |
@@ -1447,6 +1448,33 @@ func (c *Config) SessionMode(defaultMode ...SessionMode) SessionMode { |
1447 | 1448 | return mode.FromString(c.viper.GetString(SettingsMode), c.IsCIMode()) |
1448 | 1449 | } |
1449 | 1450 |
|
| 1451 | +func HasLegacySessionMode(v *viper.Viper) (SessionMode, bool) { |
| 1452 | + // Prefer newer session value |
| 1453 | + if v.IsSet("settings.session.mode") { |
| 1454 | + return SessionModeUnset, false |
| 1455 | + } |
| 1456 | + |
| 1457 | + // Check for legacy settings |
| 1458 | + if !(v.IsSet("settings.mode.enablecreate") || v.IsSet("settings.mode.enableupdate") || v.IsSet("settings.mode.enabledelete")) { |
| 1459 | + return SessionModeUnset, false |
| 1460 | + } |
| 1461 | + |
| 1462 | + // Map legacy mode settings to session mode |
| 1463 | + enableCreate := v.GetBool("settings.mode.enablecreate") |
| 1464 | + enableUpdate := v.GetBool("settings.mode.enableupdate") |
| 1465 | + enableDelete := v.GetBool("settings.mode.enabledelete") |
| 1466 | + |
| 1467 | + mode := SessionModeUnset |
| 1468 | + if !enableCreate && !enableUpdate && !enableDelete { |
| 1469 | + mode = SessionModeProduction |
| 1470 | + } else if enableCreate && enableUpdate && !enableDelete { |
| 1471 | + mode = SessionModeQual |
| 1472 | + } else if enableCreate && enableUpdate && enableDelete { |
| 1473 | + mode = SessionModeDev |
| 1474 | + } |
| 1475 | + return mode, true |
| 1476 | +} |
| 1477 | + |
1450 | 1478 | // AllowModeCreate enables create (post) commands |
1451 | 1479 | func (c *Config) AllowModeCreate() bool { |
1452 | 1480 | return c.SessionMode().CanCreate() |
@@ -1826,6 +1854,18 @@ func (c *Config) AllSettings() map[string]interface{} { |
1826 | 1854 | return c.viper.AllSettings() |
1827 | 1855 | } |
1828 | 1856 |
|
| 1857 | +// MarshalSettings marshals all of the settings into json for debugging purposes |
| 1858 | +func (c *Config) MarshalSettings() ([]byte, error) { |
| 1859 | + values := map[string]any{} |
| 1860 | + if c.Persistent != nil { |
| 1861 | + values["all"] = c.viper.AllSettings() |
| 1862 | + } |
| 1863 | + if c.Persistent != nil { |
| 1864 | + values["persistent"] = c.Persistent.AllSettings() |
| 1865 | + } |
| 1866 | + return json.Marshal(values) |
| 1867 | +} |
| 1868 | + |
1829 | 1869 | // SaveClientConfig save client settings to the session configuration |
1830 | 1870 | func (c *Config) SaveClientConfig(client *c8y.Client) error { |
1831 | 1871 | if client != nil { |
|
0 commit comments