Skip to content

Commit 4cf3cfc

Browse files
authored
make -h work with imported targets (magefile#335)
fixes magefile#249 Forgot to allow help to be called on imported targets. Kinda useful, eh?
1 parent de7ca6c commit 4cf3cfc

File tree

2 files changed

+121
-2
lines changed

2 files changed

+121
-2
lines changed

mage/import_test.go

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,104 @@ Targets:
3838
}
3939
}
4040

41+
func TestMageImportsHelp(t *testing.T) {
42+
stdout := &bytes.Buffer{}
43+
stderr := &bytes.Buffer{}
44+
inv := Invocation{
45+
Dir: "./testdata/mageimport",
46+
Stdout: stdout,
47+
Stderr: stderr,
48+
Help: true,
49+
Args: []string{"buildSubdir"},
50+
}
51+
52+
code := Invoke(inv)
53+
if code != 0 {
54+
t.Fatalf("expected to exit with code 0, but got %v, stderr:\n%s", code, stderr)
55+
}
56+
actual := stdout.String()
57+
expected := `
58+
BuildSubdir Builds stuff.
59+
60+
Usage:
61+
62+
mage buildsubdir
63+
64+
`[1:]
65+
66+
if actual != expected {
67+
t.Logf("expected: %q", expected)
68+
t.Logf(" actual: %q", actual)
69+
t.Fatalf("expected:\n%v\n\ngot:\n%v", expected, actual)
70+
}
71+
}
72+
73+
func TestMageImportsHelpNamed(t *testing.T) {
74+
stdout := &bytes.Buffer{}
75+
stderr := &bytes.Buffer{}
76+
inv := Invocation{
77+
Dir: "./testdata/mageimport",
78+
Stdout: stdout,
79+
Stderr: stderr,
80+
Help: true,
81+
Args: []string{"zz:buildSubdir2"},
82+
}
83+
84+
code := Invoke(inv)
85+
if code != 0 {
86+
t.Fatalf("expected to exit with code 0, but got %v, stderr:\n%s", code, stderr)
87+
}
88+
actual := stdout.String()
89+
expected := `
90+
BuildSubdir2 Builds stuff.
91+
92+
Usage:
93+
94+
mage zz:buildsubdir2
95+
96+
`[1:]
97+
98+
if actual != expected {
99+
t.Logf("expected: %q", expected)
100+
t.Logf(" actual: %q", actual)
101+
t.Fatalf("expected:\n%v\n\ngot:\n%v", expected, actual)
102+
}
103+
}
104+
105+
func TestMageImportsHelpNamedNS(t *testing.T) {
106+
stdout := &bytes.Buffer{}
107+
stderr := &bytes.Buffer{}
108+
inv := Invocation{
109+
Dir: "./testdata/mageimport",
110+
Stdout: stdout,
111+
Stderr: stderr,
112+
Help: true,
113+
Args: []string{"zz:ns:deploy2"},
114+
}
115+
116+
code := Invoke(inv)
117+
if code != 0 {
118+
t.Fatalf("expected to exit with code 0, but got %v, stderr:\n%s", code, stderr)
119+
}
120+
actual := stdout.String()
121+
expected := `
122+
Deploy2 deploys stuff.
123+
124+
Usage:
125+
126+
mage zz:ns:deploy2
127+
128+
Aliases: nsd2
129+
130+
`[1:]
131+
132+
if actual != expected {
133+
t.Logf("expected: %q", expected)
134+
t.Logf(" actual: %q", actual)
135+
t.Fatalf("expected:\n%v\n\ngot:\n%v", expected, actual)
136+
}
137+
}
138+
41139
func TestMageImportsRoot(t *testing.T) {
42140
stdout := &bytes.Buffer{}
43141
stderr := &bytes.Buffer{}

mage/template.go

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,27 @@ Options:
339339
os.Exit(2)
340340
}
341341
switch strings.ToLower(args.Args[0]) {
342-
{{range .Funcs}}case "{{lower .TargetName}}":
342+
{{range .Funcs -}}
343+
case "{{lower .TargetName}}":
344+
{{if ne .Comment "" -}}
345+
fmt.Println({{printf "%q" .Comment}})
346+
fmt.Println()
347+
{{end}}
348+
fmt.Print("Usage:\n\n\t{{$.BinaryName}} {{lower .TargetName}}{{range .Args}} <{{.Name}}>{{end}}\n\n")
349+
var aliases []string
350+
{{- $name := .Name -}}
351+
{{- $recv := .Receiver -}}
352+
{{range $alias, $func := $.Aliases}}
353+
{{if and (eq $name $func.Name) (eq $recv $func.Receiver)}}aliases = append(aliases, "{{$alias}}"){{end -}}
354+
{{- end}}
355+
if len(aliases) > 0 {
356+
fmt.Printf("Aliases: %s\n\n", strings.Join(aliases, ", "))
357+
}
358+
return
359+
{{end -}}
360+
{{range .Imports -}}
361+
{{range .Info.Funcs -}}
362+
case "{{lower .TargetName}}":
343363
{{if ne .Comment "" -}}
344364
fmt.Println({{printf "%q" .Comment}})
345365
fmt.Println()
@@ -355,7 +375,8 @@ Options:
355375
fmt.Printf("Aliases: %s\n\n", strings.Join(aliases, ", "))
356376
}
357377
return
358-
{{end}}
378+
{{end -}}
379+
{{end -}}
359380
default:
360381
logger.Printf("Unknown target: %q\n", args.Args[0])
361382
os.Exit(2)

0 commit comments

Comments
 (0)