diff --git a/realize.go b/realize.go index c925635..24073fd 100644 --- a/realize.go +++ b/realize.go @@ -80,7 +80,6 @@ func main() { if err := r.Read(&r); err != nil { return err } - // increase the file limit if r.Config.Flimit != 0 { if err := r.Flimit(); err != nil { @@ -111,6 +110,7 @@ func main() { Description: "Run a toolchain on a project or a list of projects. If not exist a config file it creates a new one", Flags: []cli.Flag{ &cli.StringFlag{Name: "path", Aliases: []string{"p"}, Value: "", Usage: "Project base path."}, + &cli.StringFlag{Name: "name", Aliases: []string{"n"}, Value: "", Usage: "Run a project by its name."}, &cli.BoolFlag{Name: "test", Aliases: []string{"t"}, Value: false, Usage: "Enable go test."}, &cli.BoolFlag{Name: "generate", Aliases: []string{"g"}, Value: false, Usage: "Enable go generate."}, &cli.BoolFlag{Name: "build", Aliases: []string{"b"}, Value: false, Usage: "Enable go build."}, @@ -121,6 +121,14 @@ func main() { &cli.BoolFlag{Name: "no-config", Aliases: []string{"nc"}, Value: false, Usage: "Ignore existing configurations."}, }, Action: func(p *cli.Context) error { + c := r + if p.String("name") != ""{ + for index, project := range r.Blueprint.Projects{ + if project.Name == p.String("name"){ + c.Blueprint.Projects = []watcher.Project{r.Blueprint.Projects[index]} + } + } + } if p.Bool("legacy") { r.Config.Legacy = settings.Legacy{ Status: p.Bool("legacy"), @@ -136,13 +144,13 @@ func main() { return err } } - if err := r.Server.Start(p); err != nil { + if err := c.Server.Start(p); err != nil { return err } - if err := r.Blueprint.Run(); err != nil { + if err := c.Blueprint.Run(p); err != nil { return err } - if err := r.Record(r); err != nil { + if err := r.Record(c); err != nil { return err } return nil diff --git a/settings/settings.go b/settings/settings.go index 41a4054..21e56ae 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -3,7 +3,6 @@ package settings import ( "os" "time" - yaml "gopkg.in/yaml.v2" ) diff --git a/watcher/cmd.go b/watcher/cmd.go index a67d6e7..46d7c02 100644 --- a/watcher/cmd.go +++ b/watcher/cmd.go @@ -9,14 +9,14 @@ import ( ) // Run launches the toolchain for each project -func (h *Blueprint) Run() error { +func (h *Blueprint) Run(p *cli.Context) error { err := h.check() if err == nil { // loop projects wg.Add(len(h.Projects)) for k, element := range h.Projects { tools := tools{} - if element.Cmds.Fmt { + if element.Cmds.Fmt{ tools.Fmt = tool{ status: &h.Projects[k].Cmds.Fmt, cmd: "gofmt", @@ -24,7 +24,7 @@ func (h *Blueprint) Run() error { name: "Go Fmt", } } - if element.Cmds.Generate { + if element.Cmds.Generate{ tools.Generate = tool{ status: &h.Projects[k].Cmds.Generate, cmd: "go", @@ -32,7 +32,7 @@ func (h *Blueprint) Run() error { name: "Go Generate", } } - if element.Cmds.Test { + if element.Cmds.Test{ tools.Test = tool{ status: &h.Projects[k].Cmds.Test, cmd: "go", diff --git a/watcher/exec.go b/watcher/exec.go index 850f7b4..c8e0e3f 100644 --- a/watcher/exec.go +++ b/watcher/exec.go @@ -4,6 +4,7 @@ import ( "bufio" "bytes" "fmt" + "github.com/tockins/realize/style" "log" "os" "os/exec" @@ -12,7 +13,6 @@ import ( "strings" "sync" "time" - "github.com/tockins/realize/style" ) // GoRun is an implementation of the bin execution diff --git a/watcher/main.go b/watcher/main.go index 3474e26..3a4c3bc 100644 --- a/watcher/main.go +++ b/watcher/main.go @@ -31,20 +31,20 @@ type Blueprint struct { // Project defines the informations of a single project type Project struct { - settings.Settings `yaml:"-"` - LastChangedOn time.Time `yaml:"-" json:"-"` - base string - Name string `yaml:"name" json:"name"` - Path string `yaml:"path" json:"path"` - Cmds Cmds `yaml:"cmds" json:"cmds"` - Args []string `yaml:"args,omitempty" json:"args,omitempty"` - Watcher Watcher `yaml:"watcher" json:"watcher"` - Streams Streams `yaml:"streams" json:"streams"` - Buffer Buffer `yaml:"-" json:"buffer"` + settings.Settings `yaml:"-"` + LastChangedOn time.Time `yaml:"-" json:"-"` + base string + Name string `yaml:"name" json:"name"` + Path string `yaml:"path" json:"path"` + Cmds Cmds `yaml:"commands" json:"commands"` + Args []string `yaml:"args,omitempty" json:"args,omitempty"` + Watcher Watcher `yaml:"watcher" json:"watcher"` + Streams Streams `yaml:"streams" json:"streams"` + Buffer Buffer `yaml:"-" json:"buffer"` ErrorOutputPattern string `yaml:"errorOutputPattern" json:"errorOutputPattern"` - parent *Blueprint - path string - tools tools + parent *Blueprint + path string + tools tools } type tools struct { diff --git a/watcher/watcher.go b/watcher/watcher.go index e7425c1..0e9f2be 100644 --- a/watcher/watcher.go +++ b/watcher/watcher.go @@ -3,19 +3,19 @@ package watcher import ( "errors" "fmt" + "github.com/fsnotify/fsnotify" + "github.com/tockins/realize/style" "log" "math/big" "os" "os/signal" "path/filepath" + "reflect" "strconv" "strings" "sync" "syscall" "time" - "reflect" - "github.com/fsnotify/fsnotify" - "github.com/tockins/realize/style" ) var msg string @@ -285,8 +285,8 @@ func (p *Project) build() error { func (p *Project) tool(path string, tool tool) error { if tool.status != nil { v := reflect.ValueOf(tool.status).Elem() - if v.Interface().(bool) && (strings.HasSuffix(path, ".go") || strings.HasSuffix(path, "")) { - if strings.HasSuffix(path, ".go"){ + if v.Interface().(bool) && (strings.HasSuffix(path, ".go") || strings.HasSuffix(path, "")) { + if strings.HasSuffix(path, ".go") { tool.options = append(tool.options, path) path = p.base }