rootDir = path.Clean(rootDir+"/..")
if rootDir == "/" {
- return fmt.Errorf("Couldn't find config file\n")
+ // Should return 'true' for os.IsNotExist(err)
+ return err
}
}
} else {
return
}
+func (tc *ToolConfig) Init() (err error) {
+ var rootDir string
+ rootDir, err = os.Getwd()
+ if err != nil {
+ return fmt.Errorf("Trying to get wd: %v\n", err)
+ }
+ tc.rootDir = rootDir
+ return
+}
+
func (tc *ToolConfig) Save() (err error) {
if tc.rootDir == "" {
return fmt.Errorf("Uninitialized root dir")
}
fmt.Printf("Trying local config...\n")
- if err := config.Tool.Load(); err != nil && !os.IsNotExist(err) {
- fmt.Printf("Error opening config file: %v\n", err)
- return 1
+ if err := config.Tool.Load(); err != nil {
+ if os.IsNotExist(err) {
+ config.Tool.Init()
+ } else {
+ fmt.Printf("Error opening config file: %v\n", err)
+ return 1
+ }
}
setDef := func(s *string, d string) {
}
}
- defaultPath := [TreeMax]string{
+ defaultPath := map[Tree]string{
TreeXen: "xen.git",
TreeQemuU: "qemu-xen.git",
TreeQemuT: "qemu-xen-traditional.git",
TreeXSA: "xsa.git",
}
setDefaultPath := func(tree Tree) (err error) {
- setDef(&config.Tool.Paths[tree], defaultPath[tree])
+ _, prs := config.Tool.Paths[tree]
+ if prs {
+ fmt.Printf("Already set to %s\n", config.Tool.Paths[tree])
+ } else {
+ config.Tool.Paths[tree] = defaultPath[tree]
+ fmt.Printf("Setting default: %s\n", defaultPath[tree])
+ }
return
}
return true, nil
}
- defaultUrl := [TreeMax]string {
+ defaultUrl := map[Tree]string {
TreeXen: "git://xenbits.xenproject.org/xen.git",
TreeQemuU: "git://xenbits.xenproject.org/qemu-xen.git",
TreeQemuT: "git://xenbits.xenproject.org/qemu-xen-traditional.git",
TreeXSA: "xenbits.xen.org:/home/xensec/git/xsa.git",
}
- cloneXen := func(target string, origin string, t Tree) (xr XenRepo, err error) {
+ cloneXen := func(target string, origin string, t Tree) (xr *XenRepo, err error) {
doClone, err := checkDir(target)
if doClone {