aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/model.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/admin/model.go')
-rw-r--r--internal/admin/model.go48
1 files changed, 29 insertions, 19 deletions
diff --git a/internal/admin/model.go b/internal/admin/model.go
index ee65045..079496e 100644
--- a/internal/admin/model.go
+++ b/internal/admin/model.go
@@ -97,19 +97,38 @@ type ServerRepos struct {
basePath string
}
-func loadFromGit(gitURL, filePath string) ([]byte, error) {
+func loadConfigFromGit(baseDir, filePath string) ([]byte, error) {
+ mgmtPath := filepath.Join(baseDir, mgmtRepoName)
+ _, err := os.Stat(mgmtPath)
+ if errors.Is(err, os.ErrNotExist) {
+ return []byte(""), ErrMgmtRepoNotFound
+ } else if err != nil {
+ log.Fatalf("An unexpected error was encountered %s", err)
+ }
+ repoURI := fmt.Sprintf("file://%s", mgmtPath)
+ slog.Info("mgmt repo uri", "uri", repoURI)
fs := memfs.New()
storer := memory.NewStorage()
- _, err := git.Clone(storer, fs, &git.CloneOptions{
- URL: gitURL,
+ _, err = git.Clone(storer, fs, &git.CloneOptions{
+ URL: repoURI,
})
if err != nil {
- return []byte(""), fmt.Errorf("couldn't clone mgmt repo %w", err)
+ return []byte(""), fmt.Errorf("couldn't clone mgmt repo %s %w", repoURI, err)
+ }
+ files, err := fs.ReadDir("/")
+ if err != nil {
+ log.Fatal(err)
+ }
+ for _, file := range files {
+ fmt.Println(file)
+
}
+
file, err := fs.Open(filePath)
if err != nil {
return []byte(""), fmt.Errorf("couldn't open file in repo %w", err)
}
+
defer file.Close()
return io.ReadAll(file)
}
@@ -155,24 +174,13 @@ func loadServerConfig(mgmtRepo bool, baseDir, configPath string) (*ServerRepos,
err error
)
if mgmtRepo {
- mgmtPath := filepath.Join(baseDir, mgmtRepoName)
- _, err := os.Stat(mgmtPath)
- if errors.Is(err, os.ErrNotExist) {
- return &ServerRepos{}, ErrMgmtRepoNotFound
- } else if err != nil {
- log.Fatalf("An unexpected error was encountered %s", err)
- }
- repoURI := filepath.Join("file:///", mgmtPath)
- configBytes, err = loadFromGit(repoURI, configPath)
+ configBytes, err = loadConfigFromGit(baseDir, configPath)
if err != nil {
- // log.error
- slog.Error("Failed to load config file from git", "path", configPath)
return &ServerRepos{}, err
}
} else {
configBytes, err = loadLocalFile(configPath)
if err != nil {
- // log.error
slog.Error("Local server config couldn't be loaded")
return &ServerRepos{}, err
}
@@ -203,13 +211,15 @@ func (s *ServerRepos) ConfigureRepos() error {
}
func readOnlyPaths(role, repoName string) [][]string {
+ // WARN this is kind of hard coded pathing... not sure that's great
return [][]string{
- []string{role, fmt.Sprintf("/%s/info/refs", repoName), "GET"},
- []string{role, fmt.Sprintf("/%s/git-upload-pack", repoName), "POST"},
+ {role, fmt.Sprintf("/%s/info/refs", repoName), "GET"},
+ {role, fmt.Sprintf("/%s/git-upload-pack", repoName), "POST"},
}
}
func writePaths(role, repoName string) [][]string {
- return [][]string{[]string{role, fmt.Sprintf("/%s/git-receive-pack", repoName), "POST"}}
+ // WARN this is kind of hard coded pathing... not sure that's great
+ return [][]string{{role, fmt.Sprintf("/%s/git-receive-pack", repoName), "POST"}}
}
// Policy generate policy for repo base on mode