package repo
import (
"context"
"fmt"
"os"
"nugitea/internal/gitcmd"
)
func (s *Store) InitBare(ctx context.Context, name string) (string, error) {
path, err := s.Path(name)
if err != nil {
return "", err
}
if _, err := os.Stat(path); err == nil {
return "", fmt.Errorf("repo %q already exists", name)
}
if err := os.MkdirAll(path, 0o755); err != nil {
return "", fmt.Errorf("create repo dir: %w", err)
}
if err := gitcmd.New("init", "--bare", ".").WithDir(path).Run(ctx); err != nil {
return "", fmt.Errorf("git init --bare: %w", err)
}
nugiteaBin, err := os.Executable()
if err != nil {
return "", fmt.Errorf("resolve nugitea binary path: %w", err)
}
if err := installHooks(path, nugiteaBin); err != nil {
return "", err
}
return path, nil
}