Skip to content
Snippets Groups Projects
Select Git revision
  • 3ae6b4022f8cb30d727982bcb0f7c040cf30316f
  • main default protected
  • automated-updates-main
  • release-0.14
  • 14-env
  • fix-version-3
  • automated-updates-fix-action
  • release-0.15
  • release-0.13
  • automated-updates-release-0.13
  • release-0.10
  • release-0.11
  • release-0.12
  • fix-versions-action
  • versions-fix
  • release-0.9
  • release-0.8
  • release-0.7
  • release-0.6
  • release-0.5
  • release-0.4
  • v0.15.0
  • v0.14.0
  • v0.13.0
  • v0.12.0
  • v0.11.0
  • v0.10.0
  • v0.9.0
  • v0.8.0
  • v0.7.0
  • v0.6.0
  • v0.5.0
  • v0.4.0
  • v0.3.0
  • v0.2.0
  • v0.1.0
36 results

bootkube.jsonnet

Blame
  • multi_repo_cache.go 1.47 KiB
    package cache
    
    import (
    	"fmt"
    
    	"github.com/MichaelMure/git-bug/repository"
    )
    
    const lockfile = "lock"
    
    type MultiRepoCache struct {
    	repos map[string]*RepoCache
    }
    
    func NewMultiRepoCache() MultiRepoCache {
    	return MultiRepoCache{
    		repos: make(map[string]*RepoCache),
    	}
    }
    
    // RegisterRepository register a named repository. Use this for multi-repo setup
    func (c *MultiRepoCache) RegisterRepository(ref string, repo repository.Repo) error {
    	r, err := NewRepoCache(repo)
    	if err != nil {
    		return err
    	}
    
    	c.repos[ref] = r
    	return nil
    }
    
    // RegisterDefaultRepository register a unnamed repository. Use this for mono-repo setup
    func (c *MultiRepoCache) RegisterDefaultRepository(repo repository.Repo) error {
    	r, err := NewRepoCache(repo)
    	if err != nil {
    		return err
    	}
    
    	c.repos[""] = r
    	return nil
    }
    
    // ResolveRepo retrieve a repository by name
    func (c *MultiRepoCache) DefaultRepo() (*RepoCache, error) {
    	if len(c.repos) != 1 {
    		return nil, fmt.Errorf("repository is not unique")
    	}
    
    	for _, r := range c.repos {
    		return r, nil
    	}
    
    	panic("unreachable")
    }
    
    // DefaultRepo retrieve the default repository
    func (c *MultiRepoCache) ResolveRepo(ref string) (*RepoCache, error) {
    	r, ok := c.repos[ref]
    	if !ok {
    		return nil, fmt.Errorf("unknown repo")
    	}
    	return r, nil
    }
    
    // Close will do anything that is needed to close the cache properly
    func (c *MultiRepoCache) Close() error {
    	for _, cachedRepo := range c.repos {
    		err := cachedRepo.Close()
    		if err != nil {
    			return err
    		}
    	}
    	return nil
    }