Skip to content

Commit 7e13e7d

Browse files
authored
feat: add CLI_ARGS placeholder in list output (#86)
1 parent 1e876ae commit 7e13e7d

4 files changed

Lines changed: 30 additions & 6 deletions

File tree

cmd/tsk/tsk.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func main() {
8585
}
8686

8787
// cfg is the parsed task file
88-
cfg, err := task.NewTaskConfig(opts.taskFile, opts.cliArgs)
88+
cfg, err := task.NewTaskConfig(opts.taskFile, opts.cliArgs, opts.listTasks)
8989
if err != nil {
9090
panic(err)
9191
}

internal/task/task.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ func filterTasks(tasks *map[string]Task, regex *regexp.Regexp) map[string]Task {
249249
return filtered
250250
}
251251

252-
func NewTaskConfig(taskFile, cliArgs string) (*Config, error) {
252+
func NewTaskConfig(taskFile, cliArgs string, listTasks bool) (*Config, error) {
253253
var err error
254254
if taskFile == "" {
255255
dir, _ := os.Getwd()
@@ -260,7 +260,7 @@ func NewTaskConfig(taskFile, cliArgs string) (*Config, error) {
260260
}
261261

262262
// render the task file as a template
263-
rendered, err := render(taskFile, cliArgs)
263+
rendered, err := render(taskFile, cliArgs, listTasks)
264264
if err != nil {
265265
return nil, err
266266
}

internal/task/task_test.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ func TestFindTaskFile(t *testing.T) {
176176
func TestDotEnv(t *testing.T) {
177177
var taskFile, cliArgs string
178178

179-
config, err := NewTaskConfig(taskFile, cliArgs)
179+
config, err := NewTaskConfig(taskFile, cliArgs, false)
180180
if err != nil {
181181
panic(err)
182182
}
@@ -301,7 +301,7 @@ func TestTemplates(t *testing.T) {
301301
expected := regexp.MustCompile(cliArgs)
302302
wd, _ := os.Getwd()
303303
path, _ := findTaskFile(wd, "tasks.toml")
304-
config, _ := NewTaskConfig(path, cliArgs)
304+
config, _ := NewTaskConfig(path, cliArgs, false)
305305
out := new(bytes.Buffer)
306306
exec := Executor{
307307
Stdout: out,
@@ -312,3 +312,22 @@ func TestTemplates(t *testing.T) {
312312
t.Errorf("Expected '%s' to match '%s'", cliArgs, out.String())
313313
}
314314
}
315+
316+
// when building --list output for tasks that use CLI_ARGS test that placeholder
317+
// text is inserted when CLI_ARGS arent provided
318+
func TestTemplatesWithPlaceholders(t *testing.T) {
319+
placeholder := "{{.CLI_ARGS}}"
320+
expected := regexp.MustCompile(placeholder)
321+
wd, _ := os.Getwd()
322+
path, _ := findTaskFile(wd, "tasks.toml")
323+
config, _ := NewTaskConfig(path, "", true)
324+
out := new(bytes.Buffer)
325+
exec := Executor{
326+
Stdout: out,
327+
}
328+
329+
exec.RunTasks(config, &[]string{"template"})
330+
if !expected.Match(out.Bytes()) {
331+
t.Errorf("Expected '%s' to match '%s'", placeholder, out.String())
332+
}
333+
}

internal/task/util.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,17 @@ func appendDotEnvToEnv(env []string, dotenv string) ([]string, error) {
4848
return env, nil
4949
}
5050

51-
func render(file, cliArgs string) (*bytes.Buffer, error) {
51+
func render(file, cliArgs string, cliArgsPlaceholder bool) (*bytes.Buffer, error) {
5252
tmpl, err := template.ParseFiles(file)
5353
if err != nil {
5454
return nil, err
5555
}
5656

57+
// insert a placeholder value for cliArgs for display purposes
58+
if cliArgsPlaceholder && cliArgs == "" {
59+
cliArgs = "{{.CLI_ARGS}}"
60+
}
61+
5762
var renderedBuffer bytes.Buffer
5863
if err := tmpl.Execute(&renderedBuffer, &Vals{CLI_ARGS: cliArgs}); err != nil {
5964
return nil, err

0 commit comments

Comments
 (0)