git-project-manager/internal/projects/projects_fs.go
2023-12-09 23:19:19 -05:00

46 lines
926 B
Go

package projects
import (
"os"
"path/filepath"
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/gitlab"
)
func (c *Cache) GoTo(project *gitlab.Project) {
pPath := c.GetProjectPath(project)
c.log.Debug("Going to project", c.log.Args(
"project", project.String(),
"path", pPath,
))
if _, err := os.Stat(pPath); err != nil {
c.log.Info("Preparing project path")
c.PrepProjectPath(pPath)
}
os.Chdir(filepath.Dir(pPath))
}
func (c *Cache) IsProjectCloned(p *gitlab.Project) bool {
_, err := os.Stat(c.GetProjectPath(p) + "/.git")
if err == nil {
return true
}
return false
}
func (c *Cache) PrepProjectPath(path string) {
if err := os.MkdirAll(path, 0750); err != nil {
c.log.Fatal("Failed to prepare project path", c.log.Args(
"path", path,
"error", err,
))
}
}
func (c *Cache) GetProjectPath(p *gitlab.Project) string {
return c.path + "/" + p.SanitizedPath()
}