返回 DeepSeek-Reasonix
deprecated_mode_flags.go
根目录 / internal / cli / deprecated_mode_flags.go
1 package cli
2
3 import (
4 "fmt"
5 "os"
6 "strings"
7 "sync"
8
9 "reasonix/internal/agentpreset"
10 )
11
12 var deprecatedModeNoticeOnce sync.Once
13
14 // acceptDeprecatedModeFlag validates a role value; the caller applies the
15 // returned floor to the controller. Unknown values error; light folds to
16 // standard silently.
17 func acceptDeprecatedModeFlag(raw string) error {
18 if strings.TrimSpace(raw) == "" {
19 return nil
20 }
21 if _, err := parseRuntimeProfile(raw); err != nil {
22 return err
23 }
24 deprecatedModeNoticeOnce.Do(func() {
25 fmt.Fprintln(os.Stderr, agentpreset.FloorNotice)
26 })
27 return nil
28 }
29
30 // consumeDeprecatedModeFlags strips hidden one-version compatibility flags so
31 // public help and completions expose only standard execution.
32 func consumeDeprecatedModeFlags(args []string, names ...string) ([]string, string, error) {
33 allowed := make(map[string]struct{}, len(names))
34 values := make(map[string]string, len(names))
35 for _, name := range names {
36 allowed[name] = struct{}{}
37 }
38 clean := make([]string, 0, len(args))
39 for i := 0; i < len(args); i++ {
40 arg := args[i]
41 if arg == "--" {
42 clean = append(clean, args[i:]...)
43 break
44 }
45 flagText := ""
46 switch {
47 case strings.HasPrefix(arg, "--"):
48 flagText = strings.TrimPrefix(arg, "--")
49 case strings.HasPrefix(arg, "-"):
50 flagText = strings.TrimPrefix(arg, "-")
51 default:
52 clean = append(clean, arg)
53 continue
54 }
55 name, value, hasValue := strings.Cut(flagText, "=")
56 if _, ok := allowed[name]; !ok {
57 clean = append(clean, arg)
58 continue
59 }
60 if !hasValue {
61 if i+1 >= len(args) {
62 return nil, "", fmt.Errorf("flag needs an argument: --%s", name)
63 }
64 i++
65 value = args[i]
66 }
67 values[name] = value
68 }
69 for _, name := range names {
70 if value := strings.TrimSpace(values[name]); value != "" {
71 return clean, value, nil
72 }
73 }
74 return clean, "", nil
75 }
76
76 lines GO