| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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))
- }
- },
- }
|