| package main |
| |
| import ( |
| "flag" |
| "fmt" |
| "io/ioutil" |
| "os/exec" |
| "strings" |
| ) |
| |
| func BuildUnfocusCommand() *Command { |
| return &Command{ |
| Name: "unfocus", |
| AltName: "blur", |
| FlagSet: flag.NewFlagSet("unfocus", flag.ExitOnError), |
| UsageCommand: "ginkgo unfocus (or ginkgo blur)", |
| Usage: []string{ |
| "Recursively unfocuses any focused tests under the current directory", |
| }, |
| Command: unfocusSpecs, |
| } |
| } |
| |
| func unfocusSpecs([]string, []string) { |
| unfocus("Describe") |
| unfocus("Context") |
| unfocus("It") |
| unfocus("Measure") |
| unfocus("DescribeTable") |
| unfocus("Entry") |
| unfocus("Specify") |
| unfocus("When") |
| } |
| |
| func unfocus(component string) { |
| fmt.Printf("Removing F%s...\n", component) |
| files, err := ioutil.ReadDir(".") |
| if err != nil { |
| fmt.Println(err.Error()) |
| return |
| } |
| for _, f := range files { |
| // Exclude "vendor" directory |
| if f.IsDir() && f.Name() == "vendor" { |
| continue |
| } |
| // Exclude non-go files in the current directory |
| if !f.IsDir() && !strings.HasSuffix(f.Name(), ".go") { |
| continue |
| } |
| // Recursively run `gofmt` otherwise |
| cmd := exec.Command("gofmt", fmt.Sprintf("-r=F%s -> %s", component, component), "-w", f.Name()) |
| out, err := cmd.CombinedOutput() |
| if err != nil { |
| fmt.Println(err.Error()) |
| } |
| if string(out) != "" { |
| fmt.Println(string(out)) |
| } |
| } |
| } |