methods rewritten

This commit is contained in:
alessio 2016-07-24 00:46:25 +02:00
parent e4fe6f4758
commit 83d9f183d1
1 changed files with 74 additions and 42 deletions

View File

@ -4,25 +4,35 @@ import (
"os"
"gopkg.in/yaml.v2"
"errors"
"gopkg.in/urfave/cli.v2"
"path/filepath"
"io/ioutil"
)
type Config struct {
File string `yaml:"app_file,omitempty"`
Main []string `yaml:"app_main,omitempty"`
Version string `yaml:"app_version,omitempty"`
Build bool `yaml:"app_build,omitempty"`
Watchers
file string `yaml:"app_file,omitempty"`
Version string `yaml:"version,omitempty"`
Projects []Project
}
type Watchers struct{
Before []string `yaml:"app_before,omitempty"`
After []string `yaml:"app_after,omitempty"`
Paths []string `yaml:"app_paths,omitempty"`
Ext []string `yaml:"app_ext,omitempty"`
type Project struct {
Run bool `yaml:"app_run,omitempty"`
Build bool `yaml:"app_build,omitempty"`
Main string `yaml:"app_main,omitempty"`
Watcher Watcher `yaml:"app_watcher,omitempty"`
}
type Watcher struct{
Before []string `yaml:"before,omitempty"`
After []string `yaml:"after,omitempty"`
Paths []string `yaml:"paths,omitempty"`
Exts []string `yaml:"exts,omitempty"`
}
var file = "realize.config.yaml"
// Check files exists
func Check(files ...string) (result []bool, err error){
func Check(files ...string) (result []bool){
for _, val := range files {
if _, err := os.Stat(val); err == nil {
result = append(result,true)
@ -33,41 +43,63 @@ func Check(files ...string) (result []bool, err error){
}
// Default value
func Init() Config{
config := Config{
File:"realize.config.yaml",
Main:[]string{"main.go"},
Version:"1.0",
Build: true,
Watchers: Watchers{
func (h *Config) Init(params *cli.Context) {
h.file = file
h.Version = "1.0"
h.Projects = []Project{
{
Main: params.String("main"),
Run: params.Bool("run"),
Build: params.Bool("build"),
Watcher: Watcher{
Paths: []string{"/"},
Ext: []string{"go"},
Exts: []string{"go"},
},
},
}
return config
}
// Create config yaml file
func (h *Config) Create() (result bool, err error){
config, err := Check(h.File)
if config[0] == false {
if w, err := os.Create(h.File); err == nil {
defer w.Close()
y, err := yaml.Marshal(h)
_, err = w.WriteString(string(y))
if err != nil {
os.Remove(h.File)
return false, err
}
return true, nil
}
return false, err
}
return false, errors.New("already exist")
}
// Read config file
func (h *Config) Read(field string) bool {
return true
func (h *Config) Read() error{
if filename, err := filepath.Abs("./"+file); err == nil{
y, err := ioutil.ReadFile(filename)
if err != nil {
return err
}
return yaml.Unmarshal(y, &h)
}else{
return err
}
}
// Create config yaml file
func (h *Config) Create() error{
config := Check(h.file)
if config[0] == false {
if w, err := os.Create(h.file); err == nil {
y, err := yaml.Marshal(h)
if err != nil {
os.Remove(h.file)
return err
}
_, err = w.WriteString(string(y))
return err
}
return errors.New("There is a problem with the file's creation")
}
return errors.New("The configuration file already exist")
}
// Add another project
func (h *Config) Add(params *cli.Context) {
//new := Project{
// Main: params.String("main"),
// Run: params.Bool("run"),
// Build: params.Bool("build"),
// Watcher: Watcher{
// Paths: []string{"/"},
// Exts: []string{"go"},
// },
//}
}