mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-02 23:47:07 -05:00
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package engineering
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"sort"
|
|
"strings"
|
|
|
|
"github.com/v2fly/v2ray-core/v5/app/subscription/entries/nonnative"
|
|
"github.com/v2fly/v2ray-core/v5/main/commands/base"
|
|
)
|
|
|
|
type valueContainer struct {
|
|
key, value string
|
|
}
|
|
|
|
type orderedValueContainer []valueContainer
|
|
|
|
func (o *orderedValueContainer) Len() int {
|
|
return len(*o)
|
|
}
|
|
|
|
func (o *orderedValueContainer) Less(i, j int) bool {
|
|
return strings.Compare((*o)[i].key, (*o)[j].key) < 0
|
|
}
|
|
|
|
func (o *orderedValueContainer) Swap(i, j int) {
|
|
(*o)[i], (*o)[j] = (*o)[j], (*o)[i]
|
|
}
|
|
|
|
var cmdNonNativeLinkExtract = &base.Command{
|
|
UsageLine: "{{.Exec}} engineering nonnativelinkextract",
|
|
Flag: func() flag.FlagSet {
|
|
fs := flag.NewFlagSet("", flag.ExitOnError)
|
|
return *fs
|
|
}(),
|
|
Run: func(cmd *base.Command, args []string) {
|
|
content, err := io.ReadAll(os.Stdin)
|
|
if err != nil {
|
|
base.Fatalf("%s", err)
|
|
}
|
|
flattenedLink := nonnative.ExtractAllValuesFromBytes(content)
|
|
var valueContainerOrdered orderedValueContainer
|
|
|
|
for key, value := range flattenedLink.Values {
|
|
valueContainerOrdered = append(valueContainerOrdered, valueContainer{key, value})
|
|
}
|
|
sort.Sort(&valueContainerOrdered)
|
|
for _, valueContainer := range valueContainerOrdered {
|
|
io.WriteString(os.Stdout, fmt.Sprintf("%s=%s\n", valueContainer.key, valueContainer.value))
|
|
}
|
|
},
|
|
}
|