#100 name flag fixed

This commit is contained in:
asoseil 2017-10-22 18:44:44 +02:00
parent b3bb5c9e91
commit 227871d171
3 changed files with 30 additions and 32 deletions

10
cmd.go
View File

@ -62,8 +62,8 @@ func (r *realize) check() error {
// Add a new project
func (r *realize) add(p *cli.Context) error {
project := Project{
Name: r.Settings.name(p.String("name"), p.String("path")),
Path: r.Settings.path(p.String("path")),
Name: filepath.Base(filepath.Clean(p.String("path"))),
Path: filepath.Clean(p.String("path")),
Cmds: Cmds{
Vet: Cmd{
Status: p.Bool("vet"),
@ -101,6 +101,7 @@ func (r *realize) add(p *cli.Context) error {
// Run launches the toolchain for each project
func (r *realize) run(p *cli.Context) error {
var match bool
err := r.check()
if err == nil {
// loop projects
@ -214,10 +215,13 @@ func (r *realize) run(p *cli.Context) error {
} else {
r.Schema[k].base = filepath.Join(wd, elm.path)
}
match = true
go r.Schema[k].watch()
}
if !match {
return errors.New("there is no project with the given name")
}
wg.Wait()
return nil
}
return err
}

View File

@ -8,6 +8,7 @@ import (
"gopkg.in/urfave/cli.v2"
"log"
"os"
"path/filepath"
"strconv"
"time"
)
@ -52,7 +53,7 @@ func main() {
Aliases: []string{"r"},
Description: "Start 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: "path", Aliases: []string{"p"}, Value: wdir(), Usage: "Project base path"},
&cli.StringFlag{Name: "name", Aliases: []string{"n"}, Value: "", Usage: "Run a project by its name"},
&cli.BoolFlag{Name: "fmt", Aliases: []string{"f"}, Value: false, Usage: "Enable go fmt"},
&cli.BoolFlag{Name: "vet", Aliases: []string{"v"}, Value: false, Usage: "Enable go vet"},
@ -68,7 +69,7 @@ func main() {
if err := r.insert(p); err != nil {
return err
}
if !p.Bool("no-config") {
if !p.Bool("no-config") && p.String("name") == ""{
if err := r.Settings.record(r); err != nil {
return err
}
@ -86,7 +87,7 @@ func main() {
Aliases: []string{"a"},
Description: "Add a project to an existing config file or create a new one",
Flags: []cli.Flag{
&cli.StringFlag{Name: "path", Aliases: []string{"p"}, Value: "", Usage: "Project base path"},
&cli.StringFlag{Name: "path", Aliases: []string{"p"}, Value: wdir(), Usage: "Project base path"},
&cli.BoolFlag{Name: "fmt", Aliases: []string{"f"}, Value: false, Usage: "Enable go fmt"},
&cli.BoolFlag{Name: "vet", Aliases: []string{"v"}, Value: false, Usage: "Enable go vet"},
&cli.BoolFlag{Name: "test", Aliases: []string{"t"}, Value: false, Usage: "Enable go test"},
@ -102,7 +103,7 @@ func main() {
if err := r.Settings.record(r); err != nil {
return err
}
fmt.Fprintln(output, prefix(green.bold("Your project was successfully added")))
log.Println(prefix(green.bold("Your project was successfully added")))
return nil
},
Before: before,
@ -116,7 +117,7 @@ func main() {
interact.Run(&interact.Interact{
Before: func(context interact.Context) error {
context.SetErr(red.bold("INVALID INPUT"))
context.SetPrfx(color.Output, yellow.bold("[")+"REALIZE"+yellow.bold("]"))
context.SetPrfx(color.Output, yellow.regular("[") + time.Now().Format("15:04:05") + yellow.regular("]") + yellow.bold("[")+"REALIZE"+yellow.bold("]"))
return nil
},
Questions: []*interact.Question{
@ -361,7 +362,7 @@ func main() {
},
{
Before: func(d interact.Context) error {
dir, _ := os.Getwd()
dir := wdir()
d.SetDef(dir, green.regular("("+dir+")"))
return nil
},
@ -374,7 +375,7 @@ func main() {
if err != nil {
return d.Err()
}
r.Schema[len(r.Schema)-1].Path = r.Settings.path(val)
r.Schema[len(r.Schema)-1].Path = filepath.Clean(val)
return nil
},
},
@ -1045,7 +1046,7 @@ func main() {
if err := r.Settings.record(r); err != nil {
return err
}
fmt.Fprintln(output, prefix(green.bold(" Your configuration was successful")))
log.Println(prefix(green.bold("Your configuration was successful")))
return nil
},
Before: before,
@ -1065,7 +1066,7 @@ func main() {
if err := r.Settings.record(r); err != nil {
return err
}
fmt.Fprintln(output, prefix(green.bold("Your project was successfully removed")))
log.Println(prefix(green.bold("Your project was successfully removed")))
return nil
},
Before: before,
@ -1079,7 +1080,7 @@ func main() {
if err := r.Settings.del(directory); err != nil {
return err
}
fmt.Fprintln(output, prefix(green.bold("Realize folder successfully removed")))
log.Println(prefix(green.bold("Realize folder successfully removed")))
return nil
},
Before: before,
@ -1087,7 +1088,7 @@ func main() {
},
}
if err := app.Run(os.Args); err != nil {
fmt.Fprintln(output, prefix(red.bold(err)))
log.Println(prefix(red.bold(err)))
os.Exit(1)
}
}
@ -1115,7 +1116,7 @@ func new() realize {
// Prefix a given string
func prefix(s string) string {
if s != "" {
return fmt.Sprint(yellow.bold("["), "REALIZE", yellow.bold("]"), s)
return fmt.Sprint(yellow.bold("["), "REALIZE", yellow.bold("]"), " : ", s)
}
return ""
}
@ -1143,7 +1144,16 @@ func before(*cli.Context) error {
return nil
}
// Wdir return current working directory
func wdir() string {
dir, err := os.Getwd()
if err != nil {
log.Fatal(prefix(err.Error()))
}
return dir
}
// Rewrite the layout of the log timestamp
func (w logWriter) Write(bytes []byte) (int, error) {
return fmt.Fprint(output, yellow.regular("["), time.Now().Format("15:04:05"), yellow.regular("]")+string(bytes))
return fmt.Fprint(output, yellow.regular("["), time.Now().Format("15:04:05"), yellow.regular("]"), string(bytes))
}

View File

@ -7,7 +7,6 @@ import (
"math/rand"
"os"
"path/filepath"
"strings"
"syscall"
"time"
)
@ -102,11 +101,6 @@ func (s *Settings) del(d string) error {
return err
}
// Path cleaner
func (s Settings) path(path string) string {
return strings.Replace(filepath.Clean(path), "\\", "/", -1)
}
// Validate checks a fatal error
func (s Settings) validate(err error) error {
if err != nil {
@ -171,16 +165,6 @@ func (s Settings) write(name string, data []byte) error {
return s.validate(err)
}
// Name return the project name or the path of the working dir
func (s Settings) name(name string, path string) string {
if name == "" && path == "" {
return s.wdir()
} else if path != "/" {
return filepath.Base(path)
}
return name
}
// Create a new file and return its pointer
func (s Settings) create(path string, name string) *os.File {
var file string