Derive family member publish destinations

This commit is contained in:
2026-09-07 11:52:57 +00:00
parent f7a40afc7a
commit 884a62e8a6
5 changed files with 342 additions and 14 deletions

View File

@@ -9,6 +9,36 @@ import (
"gitea.maximumdirect.net/eric/narratio/internal/pathsafe"
)
type derivedPublishDestination struct {
index int
dest string
}
func deriveMissingPublishDestinations(cfg *PublishConfig, scriptorium *ScriptoriumConfig, notarius *NotariusConfig) []derivedPublishDestination {
if cfg == nil {
return nil
}
configuredOutputs := scriptoriumOutputPathMap(scriptorium)
extractionOutputs := notariusOutputKeySet(notarius)
derived := make([]derivedPublishDestination, 0)
for index, output := range cfg.Outputs {
if strings.TrimSpace(output.Dest) != "" {
continue
}
dest, err := artifactpolicy.ResolvePublishedDestinationWithExtractions(strings.TrimSpace(output.Source), "", configuredOutputs, extractionOutputs)
if err == nil {
derived = append(derived, derivedPublishDestination{index: index, dest: dest})
}
}
return derived
}
func applyMissingPublishDestinations(cfg *PublishConfig, scriptorium *ScriptoriumConfig, notarius *NotariusConfig) {
for _, derived := range deriveMissingPublishDestinations(cfg, scriptorium, notarius) {
cfg.Outputs[derived.index].Dest = derived.dest
}
}
func validateStorage(cfg StorageConfig) error {
backend := strings.ToLower(strings.TrimSpace(cfg.Backend))
switch backend {