Reorder items in generated source files.

Ideally they would always have been sorted as such, but this seems more
critical in migrating from one service definition to another where the ordering might
change.
This commit is contained in:
John Beisley
2022-03-13 09:02:29 +00:00
parent 730ab6506b
commit ca81a64b42
8 changed files with 11755 additions and 11715 deletions
+4 -4
View File
@@ -29,16 +29,16 @@ import (
var _ time.Time
// Device URNs:
const ({{range .DeviceTypes}}
const ({{range .OrderedDeviceTypes}}
{{.Const}} = "{{.URN}}"{{end}}
)
// Service URNs:
const ({{range .ServiceTypes}}
const ({{range .OrderedServiceTypes}}
{{.Const}} = "{{.URN}}"{{end}}
)
{{range .Services}}
{{range .OrderedServices}}
{{$srv := .}}
{{$srvIdent := printf "%s%s" .Name .Version}}
@@ -102,7 +102,7 @@ func new{{$srvIdent}}ClientsFromGenericClients(genericClients []goupnp.ServiceCl
return clients
}
{{range .SCPD.Actions}}{{/* loops over *SCPDWithURN values */}}
{{range .SCPD.OrderedActions}}{{/* loops over *SCPDWithURN values */}}
{{$winargs := $srv.WrapArguments .InputArguments}}
{{$woutargs := $srv.WrapArguments .OutputArguments}}
+29
View File
@@ -5,6 +5,7 @@ import (
"fmt"
"io"
"os"
"sort"
"strings"
"github.com/huin/goupnp"
@@ -85,6 +86,7 @@ func (dcp *DCP) writeCode(outFile string, useGofmt bool) error {
return err
}
}
if err = packageTmpl.Execute(output, dcp); err != nil {
output.Close()
return err
@@ -92,6 +94,33 @@ func (dcp *DCP) writeCode(outFile string, useGofmt bool) error {
return output.Close()
}
func (dcp *DCP) OrderedServices() []SCPDWithURN {
services := append([]SCPDWithURN{}, dcp.Services...)
sort.SliceStable(services, func(i, j int) bool {
return services[i].URNParts.URN < services[j].URNParts.URN
})
return services
}
func orderedURNParts(urnMap map[string]*URNParts) []*URNParts {
urns := make([]*URNParts, 0, len(urnMap))
for _, urn := range urnMap {
urns = append(urns, urn)
}
sort.SliceStable(urns, func(i, j int) bool {
return urns[i].URN < urns[j].URN
})
return urns
}
func (dcp *DCP) OrderedDeviceTypes() []*URNParts {
return orderedURNParts(dcp.DeviceTypes)
}
func (dcp *DCP) OrderedServiceTypes() []*URNParts {
return orderedURNParts(dcp.ServiceTypes)
}
func (dcp *DCP) processSCPDFile(file *zip.File) error {
scpd := new(scpd.SCPD)
if err := unmarshalXmlFile(file, scpd); err != nil {
+5784 -5784
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -4,5 +4,5 @@ go 1.14
require (
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
)
+2
View File
@@ -2,3 +2,5 @@ github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150 h1:vlNjIqmUZ9CMAWsbURY
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+9
View File
@@ -2,6 +2,7 @@ package scpd
import (
"encoding/xml"
"sort"
"strings"
)
@@ -37,6 +38,14 @@ func (scpd *SCPD) Clean() {
}
}
func (scpd *SCPD) OrderedActions() []Action {
actions := append([]Action{}, scpd.Actions...)
sort.SliceStable(actions, func(i, j int) bool {
return actions[i].Name < actions[j].Name
})
return actions
}
func (scpd *SCPD) GetStateVariable(variable string) *StateVariable {
for i := range scpd.StateVariables {
v := &scpd.StateVariables[i]