Files
distributor/internal/publish/reconcile.go

36 lines
1006 B
Go

package publish
import (
"context"
"gitea.maximumdirect.net/eric/distributor/internal/state"
"gitea.maximumdirect.net/eric/distributor/internal/storage"
)
func inspectDestination(ctx context.Context, backend storage.Backend, bundlePath string) (state.DestinationStatus, error) {
statePath, err := storage.StatePath(bundlePath)
if err != nil {
return state.DestinationStatus{}, err
}
data, err := backend.ReadFile(ctx, statePath)
if err == nil {
document, parseErr := state.ParseDocument(data)
if parseErr != nil {
return state.DestinationStatus{StateErr: parseErr}, nil
}
return state.DestinationStatus{
Catalog: document.Catalog,
SupersededLegacy: document.SupersededLegacy,
HasContents: true,
}, nil
}
if !storage.IsNotFound(err) {
return state.DestinationStatus{}, err
}
hasContents, err := backend.HasAny(ctx, bundlePath)
if err != nil {
return state.DestinationStatus{}, err
}
return state.DestinationStatus{HasContents: hasContents}, nil
}