Add CLI commands "ls" and "rules".

This commit is contained in:
Amy Boyd
2016-06-23 00:20:21 +01:00
parent 2a8ad5689c
commit 39414ee074
4 changed files with 88 additions and 0 deletions

2
bin/run-ls Executable file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
go run main.go ls editorconfig/tests/

2
bin/run-rules Executable file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
go run main.go rules editorconfig/tests/

72
editorconfig/cli.go Normal file
View File

@@ -0,0 +1,72 @@
package editorconfig
import (
"fmt"
"github.com/codegangsta/cli"
"strconv"
"strings"
)
func LsCommand(c *cli.Context) error {
files, err := FindSourceFiles(c.Args())
if err != nil {
return err
}
nbFiles := strconv.Itoa(len(files))
fmt.Println(nbFiles + " source files are matched by the paths you gave " + "(" + strings.Join(c.Args(), ", ") + ")")
for _, file := range files {
fmt.Println(file)
}
fmt.Println()
configs := FindConfigFiles(files)
nbConfig := strconv.Itoa(len(configs))
fmt.Println(nbConfig + " .editorconfig files were found that apply to your files")
for _, c := range configs {
if c.IsRoot() {
fmt.Println("A root .editorconfig is in " + c.Path)
} else {
fmt.Println("A non-root .editorconfig is in " + c.Path)
}
}
fmt.Println()
return nil
}
func RulesCommand(c *cli.Context) error {
path := c.Args()[0]
configs := FindConfigFiles([]string{path})
rules := GetRulesToApplyToSourcePath(path, configs)
fmt.Printf("%d rules match the path %s\n", len(rules), path)
for key, value := range rules {
fmt.Println(key + " = " + value)
}
return nil
}
func CreateCliApp() *cli.App {
app := cli.NewApp()
app.Name = "editorconfig-cli"
app.Usage = "Validate and fix files based on the rules in your .editorconfig file"
app.Commands = []cli.Command{
{
Name: "ls",
Usage: "List files that will be matched by the arguments you give",
Action: LsCommand,
},
{
Name: "rules",
Usage: "List rules that match a given file",
Action: RulesCommand,
},
}
return app
}

12
main.go Normal file
View File

@@ -0,0 +1,12 @@
package main
import (
"github.com/amyboyd/editorconfig-cli/editorconfig"
"os"
)
func main() {
app := editorconfig.CreateCliApp()
app.Run(os.Args)
}