method for clean by duplicate projects
This commit is contained in:
parent
b8221695ba
commit
9a93840beb
|
@ -2,3 +2,12 @@
|
||||||
|
|
||||||
### Overview
|
### Overview
|
||||||
Run, build and watch file changes with custom paths
|
Run, build and watch file changes with custom paths
|
||||||
|
|
||||||
|
### To do
|
||||||
|
- [x] Command start - default config gile
|
||||||
|
- [x] Command add - new project on the config file
|
||||||
|
- [ ] Command remove - remove project from the config file
|
||||||
|
- [ ] Command watch - watch changes
|
||||||
|
|
||||||
|
- [ ] Live reload for web project
|
||||||
|
- [x] Remove duplicate projects
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
hash: 7bade7c00b648e1da872c366bddaf5fd79edb0b33b68a552e40d1856932f06da
|
hash: ef1aaff11d9be4abdfb2f2152fe8bcb49e255fe27796ab61b938144a0098f883
|
||||||
updated: 2016-07-12T22:45:49.351419881+02:00
|
updated: 2016-07-25T00:16:27.960277787+02:00
|
||||||
imports:
|
imports:
|
||||||
- name: gopkg.in/urfave/cli.v2
|
- name: gopkg.in/urfave/cli.v2
|
||||||
version: 2b959bd8919d1110df44ec9a839e25a739906c3c
|
version: ee2e8aa5b22f55f006c27fd35765c62249a39aad
|
||||||
- name: gopkg.in/yaml.v2
|
- name: gopkg.in/yaml.v2
|
||||||
version: a83829b6f1293c91addabc89d0571c246397bbf4
|
version: e4d366fc3c7938e2958e662b4258c7a89e1f0e3e
|
||||||
devImports: []
|
devImports: []
|
||||||
|
|
12
main.go
12
main.go
|
@ -46,9 +46,8 @@ func main() {
|
||||||
&cli.BoolFlag{Name: "run", Aliases: []string{"r"}, Value: true},
|
&cli.BoolFlag{Name: "run", Aliases: []string{"r"}, Value: true},
|
||||||
},
|
},
|
||||||
Action: func(params *cli.Context) error {
|
Action: func(params *cli.Context) error {
|
||||||
y := realize.Config{}
|
y := realize.New(params)
|
||||||
y.Init(params)
|
return handle(y.Create(params))
|
||||||
return handle(y.Create())
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -62,10 +61,9 @@ func main() {
|
||||||
&cli.BoolFlag{Name: "run", Aliases: []string{"r"}, Value: true},
|
&cli.BoolFlag{Name: "run", Aliases: []string{"r"}, Value: true},
|
||||||
},
|
},
|
||||||
Action: func(params *cli.Context) error {
|
Action: func(params *cli.Context) error {
|
||||||
y := realize.Config{}
|
y := realize.New(params)
|
||||||
err := y.Read()
|
y.Read()
|
||||||
y.Add(params)
|
return handle(y.Add(params))
|
||||||
return handle(err)
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -18,6 +18,7 @@ type Project struct {
|
||||||
Run bool `yaml:"app_run,omitempty"`
|
Run bool `yaml:"app_run,omitempty"`
|
||||||
Build bool `yaml:"app_build,omitempty"`
|
Build bool `yaml:"app_build,omitempty"`
|
||||||
Main string `yaml:"app_main,omitempty"`
|
Main string `yaml:"app_main,omitempty"`
|
||||||
|
Name string `yaml:"app_name,omitempty"`
|
||||||
Watcher Watcher `yaml:"app_watcher,omitempty"`
|
Watcher Watcher `yaml:"app_watcher,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,39 +29,54 @@ type Watcher struct{
|
||||||
Exts []string `yaml:"exts,omitempty"`
|
Exts []string `yaml:"exts,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var file = "realize.config.yaml"
|
|
||||||
|
|
||||||
// Check file exists and clean by duplicates
|
|
||||||
func (h *Config) Check() error{
|
|
||||||
// clean duplicates
|
|
||||||
_, err := ioutil.ReadFile(h.file);
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Default value
|
// Default value
|
||||||
func (h *Config) Init(params *cli.Context) {
|
func New(params *cli.Context) *Config{
|
||||||
h.file = file
|
return &Config{
|
||||||
h.Version = "1.0"
|
file: "realize.config.yaml",
|
||||||
h.Projects = []Project{
|
Version: "1.0",
|
||||||
{
|
Projects: []Project{
|
||||||
Main: params.String("main"),
|
{
|
||||||
Run: params.Bool("run"),
|
Main: params.String("main"),
|
||||||
Build: params.Bool("build"),
|
Run: params.Bool("run"),
|
||||||
Watcher: Watcher{
|
Build: params.Bool("build"),
|
||||||
|
Watcher: Watcher{
|
||||||
Paths: []string{"/"},
|
Paths: []string{"/"},
|
||||||
Exts: []string{"go"},
|
Exts: []string{"go"},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read config file
|
// check for duplicates
|
||||||
|
func Duplicates(value string, arr []Project) bool{
|
||||||
|
for _, val := range arr{
|
||||||
|
if value == val.Main{
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove duplicate projects
|
||||||
|
func (h *Config) Clean() {
|
||||||
|
arr := h.Projects
|
||||||
|
for key, val := range arr {
|
||||||
|
if Duplicates(val.Main, arr[key+1:]) {
|
||||||
|
h.Projects = append(arr[:key], arr[key+1:]...)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check, Read and remove duplicates from the config file
|
||||||
func (h *Config) Read() error{
|
func (h *Config) Read() error{
|
||||||
if file, err := ioutil.ReadFile(file); err == nil{
|
if file, err := ioutil.ReadFile(h.file); err == nil{
|
||||||
return yaml.Unmarshal(file, &h)
|
err = yaml.Unmarshal(file, h)
|
||||||
|
if err == nil {
|
||||||
|
h.Clean()
|
||||||
|
}
|
||||||
|
return err
|
||||||
}else{
|
}else{
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -68,8 +84,7 @@ func (h *Config) Read() error{
|
||||||
|
|
||||||
// Create config yaml file
|
// Create config yaml file
|
||||||
func (h *Config) Create(params *cli.Context) error{
|
func (h *Config) Create(params *cli.Context) error{
|
||||||
h.Init(params)
|
if h.Read() != nil {
|
||||||
if h.Check() == nil {
|
|
||||||
if y, err := yaml.Marshal(h); err == nil {
|
if y, err := yaml.Marshal(h); err == nil {
|
||||||
err = ioutil.WriteFile(h.file, y, 0755)
|
err = ioutil.WriteFile(h.file, y, 0755)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -81,12 +96,12 @@ func (h *Config) Create(params *cli.Context) error{
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return errors.New("The configuration file already exist")
|
return errors.New("The config file already exists, check for realize.config.yaml")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add another project
|
// Add another project
|
||||||
func (h *Config) Add(params *cli.Context) error{
|
func (h *Config) Add(params *cli.Context) error{
|
||||||
if h.Check() == nil {
|
if h.Read() == nil {
|
||||||
new := Project{
|
new := Project{
|
||||||
Main: params.String("main"),
|
Main: params.String("main"),
|
||||||
Run: params.Bool("run"),
|
Run: params.Bool("run"),
|
||||||
|
@ -96,13 +111,15 @@ func (h *Config) Add(params *cli.Context) error{
|
||||||
Exts: []string{"go"},
|
Exts: []string{"go"},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
if Duplicates(new.Main, h.Projects) {
|
||||||
|
return errors.New("There is already one project with same main path")
|
||||||
|
}
|
||||||
h.Projects = append(h.Projects, new)
|
h.Projects = append(h.Projects, new)
|
||||||
y, err := yaml.Marshal(h)
|
y, err := yaml.Marshal(h)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = ioutil.WriteFile(file, y, 0755)
|
return ioutil.WriteFile(h.file, y, 0755)
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
return errors.New("The configuration file doesn't exist")
|
return errors.New("The configuration file doesn't exist")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue