Compare commits

...

2 commits

Author SHA1 Message Date
75c6ce47e1 Add quality to mkflex 2025-09-03 11:24:23 -05:00
e8401db519 Make IntOrString support TOML as well 2025-07-18 16:55:54 -05:00
6 changed files with 98 additions and 17 deletions

View file

@ -36,6 +36,22 @@ tasks:
cmds:
- go build -o build/ ./cmd/{{.CMD}}
build-mkflex:
desc: Builds the mkflex command
sources:
- cmd/mkflex/**/*.go
- cli/**/*.go
- convids/**/*.go
- internal/cli/mkflex/**/*.go
- mkflex/**/*.go
- types/**/*.go
generates:
- builds/mkflex
cmds:
- task: cmd-build
vars:
CMD: mkflex
build-convids:
desc: Builds the convids command
sources:
@ -77,6 +93,7 @@ tasks:
desc: Installs the mkflex command
source:
- cmd/mkflex/**/*.go
- cli/**/*.go
- convids/**/*.go
- internal/cli/mkflex/**/*.go
- mkflex/**/*.go

View file

@ -38,6 +38,7 @@ type Show struct {
AlternateName []string `yaml:"alternate_name"`
Exact bool
Skip bool
Quality string
}
re *regexp.Regexp

View file

@ -90,6 +90,9 @@ func getShow(show conutils.Show, sh Series) SeriesGroups {
if !show.Flexget.Begin.IsZero() {
sh.Begin = show.Flexget.Begin
}
if show.Flexget.Quality != "" {
sh.Quality = show.Flexget.Quality
}
sh.AlternameName = show.Flexget.AlternateName
sh.Exact = show.Flexget.Exact
name := cmp.Or(show.Flexget.Name, show.Name, show.Pattern)

51
types/int_string.go Normal file
View file

@ -0,0 +1,51 @@
package types
import "fmt"
type IntOrString struct {
intVal int
strVal string
isInt bool
}
func (is *IntOrString) Set(val any) error {
switch v := val.(type) {
case int:
case int8:
case int16:
case int32:
case int64:
case uint:
case uint8:
case uint16:
case uint32:
is.isInt = true
is.intVal = int(v)
return nil
case string:
is.isInt = false
is.strVal = v
return nil
case []byte:
is.isInt = false
is.strVal = string(v)
return nil
}
//nolint:err113 // Temp skip
return fmt.Errorf("invalid type: %T", val)
}
func (is IntOrString) IsZero() bool {
if is.isInt {
return is.intVal == 0
}
return is.strVal == ""
}
func (is IntOrString) Value() any {
if is.isInt {
return is.intVal
}
return is.strVal
}

25
types/toml.go Normal file
View file

@ -0,0 +1,25 @@
package types
import "fmt"
type TomlTypeError struct {
Value any
}
func (te *TomlTypeError) Error() string {
return fmt.Sprintf("unsupported type: %T", te.Value)
}
func (is *IntOrString) UnmarshalTOML(val any) error {
switch v := val.(type) {
case string:
is.isInt = false
is.strVal = v
return nil
case int64:
is.isInt = true
is.intVal = int(v)
return nil
}
return &TomlTypeError{Value: val}
}

View file

@ -10,17 +10,8 @@ func (ye *YamlTypeError) Error() string {
return ye.Node.Tag + " is not a valid type for this field"
}
type IntOrString struct {
intVal int
strVal string
isInt bool
}
func (is IntOrString) MarshalYAML() (any, error) {
if is.isInt {
return is.intVal, nil
}
return is.strVal, nil
return is.Value(), nil
}
func (is *IntOrString) UnmarshalYAML(value *yaml.Node) error {
@ -36,10 +27,3 @@ func (is *IntOrString) UnmarshalYAML(value *yaml.Node) error {
return &YamlTypeError{Node: value}
}
func (is IntOrString) IsZero() bool {
if is.isInt {
return is.intVal == 0
}
return is.strVal == ""
}