MCPcopy
hub / github.com/alecthomas/kong / build

Function build

build.go:14–43  ·  view source on GitHub ↗
(k *Kong, ast any)

Source from the content-addressed store, hash-verified

12type Plugins []any
13
14func build(k *Kong, ast any) (app *Application, err error) {
15 v := reflect.ValueOf(ast)
16 iv := reflect.Indirect(v)
17 if v.Kind() != reflect.Ptr || iv.Kind() != reflect.Struct {
18 return nil, fmt.Errorf("expected a pointer to a struct but got %T", ast)
19 }
20
21 app = &Application{}
22 extraFlags := k.extraFlags()
23 seenFlags := map[string]bool{}
24 for _, flag := range extraFlags {
25 seenFlags[flag.Name] = true
26 }
27
28 node, err := buildNode(k, iv, ApplicationNode, newEmptyTag(), seenFlags)
29 if err != nil {
30 return nil, err
31 }
32 if len(node.Positional) > 0 && len(node.Children) > 0 {
33 return nil, fmt.Errorf("can't mix positional arguments and branching arguments on %T", ast)
34 }
35 if provider, ok := v.Interface().(HelpProvider); ok {
36 node.Detail = provider.Help()
37 }
38 app.Node = node
39 app.Node.Flags = append(extraFlags, app.Node.Flags...)
40 app.Tag = newEmptyTag()
41 app.Tag.Vars = k.vars
42 return app, nil
43}
44
45func dashedString(s string) string {
46 return strings.Join(camelCase(s), "-")

Callers 3

NewFunction · 0.85

Calls 5

buildNodeFunction · 0.85
newEmptyTagFunction · 0.85
ErrorfMethod · 0.80
extraFlagsMethod · 0.80
HelpMethod · 0.65

Tested by 2

Used in the wild real call sites across dependent graphs

searching dependent graphs…