37 lines
714 B
Go
37 lines
714 B
Go
package git
|
|
|
|
import "os"
|
|
import "path/filepath"
|
|
|
|
import git "github.com/go-git/go-git/v5"
|
|
|
|
type RepoManager struct {
|
|
BaseDir string
|
|
}
|
|
|
|
func (rm *RepoManager) Ensure() error {
|
|
return os.MkdirAll(rm.BaseDir, 0o755)
|
|
}
|
|
|
|
func (rm *RepoManager) RepoPath(repoID string) string {
|
|
return filepath.Join(rm.BaseDir, repoID)
|
|
}
|
|
|
|
func (rm *RepoManager) RepoPathFor(projectID, repoName string) string {
|
|
return filepath.Join(rm.BaseDir, projectID, repoName+".git")
|
|
}
|
|
|
|
func (rm *RepoManager) InitRepo(repoPath string, bare bool) error {
|
|
var err error
|
|
err = rm.Ensure()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = os.MkdirAll(repoPath, 0o755)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = git.PlainInit(repoPath, bare)
|
|
return err
|
|
}
|