mirror of https://github.com/hrfee/jfa-go
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.6 KiB
63 lines
2.6 KiB
3 months ago
|
package common
|
||
|
|
||
|
type SectionMeta struct {
|
||
|
Name string `json:"name" yaml:"name" example:"My Section"` // friendly name of the section
|
||
|
Description string `json:"description" yaml:"description"`
|
||
|
Advanced bool `json:"advanced,omitempty" yaml:"advanced,omitempty"`
|
||
|
Disabled bool `json:"disabled,omitempty" yaml:"disabled,omitempty"`
|
||
|
DependsTrue string `json:"depends_true,omitempty" yaml:"depends_true,omitempty"`
|
||
|
DependsFalse string `json:"depends_false,omitempty" yaml:"depends_false,omitempty"`
|
||
|
WikiLink string `json:"wiki_link,omitempty" yaml:"wiki_link,omitempty"`
|
||
|
}
|
||
|
|
||
|
type Option [2]string
|
||
|
|
||
|
type SettingType string
|
||
|
|
||
|
var (
|
||
|
BoolType SettingType = "bool"
|
||
|
SelectType SettingType = "select"
|
||
|
TextType SettingType = "text"
|
||
|
PasswordType SettingType = "password"
|
||
|
NumberType SettingType = "number"
|
||
|
NoteType SettingType = "note"
|
||
|
EmailType SettingType = "email"
|
||
|
ListType SettingType = "list"
|
||
|
)
|
||
|
|
||
|
type Setting struct {
|
||
|
Setting string `json:"setting" yaml:"setting" example:"my_setting"`
|
||
|
Name string `json:"name" yaml:"name" example:"My Setting"`
|
||
|
Description string `json:"description" yaml:"description"`
|
||
|
Required bool `json:"required" yaml:"required"`
|
||
|
RequiresRestart bool `json:"requires_restart" yaml:"requires_restart"`
|
||
|
Advanced bool `json:"advanced,omitempty" yaml:"advanced,omitempty"`
|
||
|
Type SettingType `json:"type" yaml:"type"` // Type (string, number, bool, etc.)
|
||
|
Value any `json:"value" yaml:"value"`
|
||
|
Options []Option `json:"options,omitempty" yaml:"options,omitempty"`
|
||
|
DependsTrue string `json:"depends_true,omitempty" yaml:"depends_true,omitempty"` // If specified, this field is enabled when the specified bool setting is enabled.
|
||
|
DependsFalse string `json:"depends_false,omitempty" yaml:"depends_false,omitempty"` // If specified, opposite behaviour of DependsTrue.
|
||
|
Style string `json:"style,omitempty" yaml:"style,omitempty"`
|
||
|
Deprecated bool `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
|
||
|
WikiLink string `json:"wiki_link,omitempty" yaml:"wiki_link,omitempty"`
|
||
|
}
|
||
|
|
||
|
type Section struct {
|
||
|
Section string `json:"section" yaml:"section" example:"my_section"`
|
||
|
Meta SectionMeta `json:"meta" yaml:"meta"`
|
||
|
Settings []Setting `json:"settings" yaml:"settings"`
|
||
|
}
|
||
|
|
||
|
type Config struct {
|
||
|
Sections []Section `json:"sections" yaml:"sections"`
|
||
|
}
|
||
|
|
||
|
func (c *Config) removeSection(section string) {
|
||
|
for i, v := range c.Sections {
|
||
|
if v.Section == section {
|
||
|
c.Sections = append(c.Sections[:i], c.Sections[i+1:]...)
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
}
|