func (p *VCSDataProvider) Update(key string) error { key = strings.TrimPrefix(key, "/") vcsType, cloneURL, err := vcsstore.DecodeRepositoryPath(key) if err != nil { return err } cloned := false repo, err := p.svc.Open(vcsType, cloneURL) if os.IsNotExist(err) { cloned = true // TODO(sqs): add support for setting RemoteOpts (requires // persistence?). repo, err = p.svc.Clone(vcsType, cloneURL, vcs.RemoteOpts{}) } if err != nil { return err } if !cloned { // No need to update it now if it was just cloned. err := updateRepository(repo) if err != nil { return err } } return nil }
func (p *VCSDataProvider) HasKey(key string) (bool, error) { vcsType, cloneURL, err := vcsstore.DecodeRepositoryPath(strings.TrimPrefix(key, "/")) if err != nil { return false, err } _, err = p.svc.Open(vcsType, cloneURL) if err != nil { return false, datad.ErrKeyNotExist } return true, nil }