| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package engineering
- import (
- "bytes"
- "flag"
- "io"
- "os"
- "github.com/v2fly/v2ray-core/v5/app/subscription/entries/nonnative"
- "github.com/v2fly/v2ray-core/v5/main/commands/base"
- )
- var cmdNonNativeLinkExecInputName *string
- var cmdNonNativeLinkExecTemplatePath *string
- var cmdNonNativeLinkExec = &base.Command{
- UsageLine: "{{.Exec}} engineering nonnativelinkexec",
- Flag: func() flag.FlagSet {
- fs := flag.NewFlagSet("", flag.ExitOnError)
- cmdNonNativeLinkExecInputName = fs.String("name", "", "")
- cmdNonNativeLinkExecTemplatePath = fs.String("templatePath", "", "path for template directory (WARNING: This will not stop templates from reading file outside this directory)")
- return *fs
- }(),
- Run: func(cmd *base.Command, args []string) {
- cmd.Flag.Parse(args)
- content, err := io.ReadAll(os.Stdin)
- if err != nil {
- base.Fatalf("%s", err)
- }
- flattenedLink := nonnative.ExtractAllValuesFromBytes(content)
- matcher := nonnative.NewDefMatcher()
- if *cmdNonNativeLinkExecTemplatePath != "" {
- osFs := os.DirFS(*cmdNonNativeLinkExecTemplatePath)
- err = matcher.LoadDefinitions(osFs)
- if err != nil {
- base.Fatalf("%s", err)
- }
- } else {
- err = matcher.LoadEmbeddedDefinitions()
- if err != nil {
- base.Fatalf("%s", err)
- }
- }
- spec, err := matcher.ExecuteNamed(flattenedLink, *cmdNonNativeLinkExecInputName)
- if err != nil {
- base.Fatalf("%s", err)
- }
- io.Copy(os.Stdout, bytes.NewReader(spec))
- },
- }
|