Example #1
0
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
}
Example #2
0
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
}