// Sets the remote repository for this veb repo. // Remote repository must already exist for it to be set. func Remote(index *veb.Index, remote string, log *veb.Log) error { defer log.Un(log.Trace(REMOTE)) var timer veb.Timer timer.Start() // make remote an absolute path if !path.IsAbs(remote) { remote = path.Join(index.Root, remote) } // check to see if remote exists fi, err := os.Stat(remote) if err != nil { if os.IsNotExist(err) { log.Err().Println(err) return fmt.Errorf("veb remote dir does not exist: %v", err) } else { log.Err().Println(err) return err } } else if !fi.IsDir() { // ain't a directory log.Err().Println(remote, "isn't a directory") return fmt.Errorf("veb remote must be a folder: %s is not a folder", remote) } // check to see if it's a veb repo remoteRepo := path.Join(remote, veb.META_FOLDER) fi, err = os.Stat(remoteRepo) if err != nil { if os.IsNotExist(err) { log.Err().Println(err) fmt.Println("veb remote needs to be initialized as a veb repository", "\n (use 'veb init' in remote dir)") return err } else { log.Err().Println(err) return err } } else if !fi.IsDir() { // ain't a directory log.Err().Println(remoteRepo, "isn't a directory") fmt.Println("veb remote needs", remoteRepo, "to be a folder", "\nDelete or rename that file and run 'veb init' from", remote, "\n") return fmt.Errorf("%s isn't a directory", remoteRepo) } // set remote index.Remote = remote index.Save() fmt.Println("veb added", remote, "as the remote") // info log timer.Stop() log.Info().Printf("%s took %v\n", REMOTE, timer.Duration()) return nil }