diff options
| author | 2026-03-04 12:52:14 +0800 | |
|---|---|---|
| committer | 2026-03-04 12:52:14 +0800 | |
| commit | f9f60fcda1e75ddf9ed34ee5997c5cfbe3388e96 (patch) | |
| tree | c80bdf5b8a50936f00a79ef750bc70932bf033b7 /repository/open_config.go | |
| parent | objectstore/mix: Separate (diff) | |
| signature | No signature | |
repository: Split
Diffstat (limited to 'repository/open_config.go')
| -rw-r--r-- | repository/open_config.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/repository/open_config.go b/repository/open_config.go new file mode 100644 index 00000000..fcc9793c --- /dev/null +++ b/repository/open_config.go @@ -0,0 +1,39 @@ +package repository + +import ( + "fmt" + "os" + + "codeberg.org/lindenii/furgit/config" + "codeberg.org/lindenii/furgit/objectid" +) + +func parseRepositoryConfig(root *os.Root) (*config.Config, error) { + configFile, err := root.Open("config") + if err != nil { + return nil, fmt.Errorf("repository: open config: %w", err) + } + + defer func() { _ = configFile.Close() }() + + cfg, err := config.ParseConfig(configFile) + if err != nil { + return nil, fmt.Errorf("repository: parse config: %w", err) + } + + return cfg, nil +} + +func detectObjectAlgorithm(cfg *config.Config) (objectid.Algorithm, error) { + algoName := cfg.Lookup("extensions", "", "objectformat").Value + if algoName == "" { + algoName = objectid.AlgorithmSHA1.String() + } + + algo, ok := objectid.ParseAlgorithm(algoName) + if !ok { + return objectid.AlgorithmUnknown, fmt.Errorf("repository: unsupported object format %q", algoName) + } + + return algo, nil +} |
