summaryrefslogtreecommitdiff
path: root/example/compflag/main.go
blob: 8ae67acfd6a1b4b1b0e2655c5abe3706ef9cbebf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// compflag shows how to use the github.com/posener/complete/v2/compflag package to have auto bash
// completion for a defined set of flags.
package main

import (
	"fmt"
	"os"

	"github.com/posener/complete/v2/compflag"
)

var (
	// Add variables to the program. Since we are using the compflag library, we can pass options to
	// enable bash completion to the flag values.
	name      = compflag.String("name", "", "Give your name", compflag.OptValues("foo", "bar", "foo bar"))
	something = compflag.String("something", "", "Expect somthing, but we don't know what, so no other completion options will be provided.", compflag.OptValues(""))
	nothing   = compflag.String("nothing", "", "Expect nothing after flag, so other completion can be provided.")
)

func main() {
	// Parse flags and perform bash completion if needed.
	compflag.Parse("stdlib")

	// Program logic.
	if *name == "" {
		fmt.Println("Your name is missing")
		os.Exit(1)
	}

	fmt.Println("Hi,", name)
}