Skip to content

Commit

Permalink
Extension SetFS with create flag
Browse files Browse the repository at this point in the history
  • Loading branch information
Juergen Enge committed May 8, 2024
1 parent 4edbfcd commit d2544c6
Show file tree
Hide file tree
Showing 24 changed files with 33 additions and 38 deletions.
2 changes: 1 addition & 1 deletion pkg/extension/0001-digest-algorithms.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func (sl *DigestAlgorithms) GetFixityDigests() []checksum.DigestAlgorithm {
return algorithms
}

func (sl *DigestAlgorithms) SetFS(fsys fs.FS) {
func (sl *DigestAlgorithms) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/extension/0002-flat-direct-storage-layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ func (sl *StorageLayoutFlatDirect) Stat(w io.Writer, statInfo []ocfl.StatInfo) e
return nil
}

func (sl *StorageLayoutFlatDirect) SetFS(fs fs.FS) {
sl.fsys = fs
func (sl *StorageLayoutFlatDirect) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

func (sl *StorageLayoutFlatDirect) SetParams(params map[string]string) error {
Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/0003-hash-and-id-n-tuple-storage-layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func (sl *StorageLayoutHashAndIdNTuple) GetName() string {
return StorageLayoutHashAndIdNTupleName
}

func (sl *StorageLayoutHashAndIdNTuple) SetFS(fsys fs.FS) {
func (sl *StorageLayoutHashAndIdNTuple) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/0004-hashed-n-tuple-storage-layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func (sl *StorageLayoutHashedNTuple) IsRegistered() bool {

func (sl *StorageLayoutHashedNTuple) GetName() string { return StorageLayoutHashedNTupleName }

func (sl *StorageLayoutHashedNTuple) SetFS(fsys fs.FS) {
func (sl *StorageLayoutHashedNTuple) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/0006-flat-omit-prefix-storage-layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func (sl *FlatOmitPrefixStorageLayout) Stat(w io.Writer, statInfo []ocfl.StatInf
return nil
}

func (sl *FlatOmitPrefixStorageLayout) SetFS(fsys fs.FS) {
func (sl *FlatOmitPrefixStorageLayout) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/0007-n-tuple-omit-prefix-storage-layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func (sl *NTupleOmitPrefixStorageLayout) Stat(w io.Writer, statInfo []ocfl.StatI
return nil
}

func (sl *NTupleOmitPrefixStorageLayout) SetFS(fsys fs.FS) {
func (sl *NTupleOmitPrefixStorageLayout) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-content-subpath.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func (sl *ContentSubPath) IsRegistered() bool {
return false
}

func (sl *ContentSubPath) SetFS(fsys fs.FS) {
func (sl *ContentSubPath) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-direct-clean-path-layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ func (sl *DirectClean) IsRegistered() bool {

func (sl *DirectClean) GetName() string { return DirectCleanName }

func (sl *DirectClean) SetFS(fsys fs.FS) {
func (sl *DirectClean) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-filesystem.go
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ func (extFS *Filesystem) UpdateObjectAfter(object ocfl.Object) error {
return nil
}

func (extFS *Filesystem) SetFS(fsys fs.FS) {
func (extFS *Filesystem) SetFS(fsys fs.FS, create bool) {
extFS.fsys = fsys
}

Expand Down
21 changes: 8 additions & 13 deletions pkg/extension/NNNN-gocfl-extension-manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ func (manager *GOCFLExtensionManager) Add(ext ocfl.Extension) error {
return nil
}

func (manager *GOCFLExtensionManager) SetFS(fsys fs.FS) {
func (manager *GOCFLExtensionManager) SetFS(fsys fs.FS, create bool) {
if fsys == nil {
return
}
Expand All @@ -164,26 +164,21 @@ func (manager *GOCFLExtensionManager) SetFS(fsys fs.FS) {
}
extFS, err := fs.Sub(fsys, ext.GetName())
if err != nil {
/*
// todo: do not create...
if errors.Is(err, fs.ErrNotExist) {
extFS, err = writefs.SubFSCreate(fsys, ext.GetName())
}
*/
if create && errors.Is(err, fs.ErrNotExist) {
extFS, err = writefs.SubFSCreate(fsys, ext.GetName())
}
if err != nil {
panic(err)
}
}
ext.SetFS(extFS)
ext.SetFS(extFS, create)
}
var err error
manager.fsys, err = fs.Sub(fsys, manager.GetName())
if err != nil {
/*
if errors.Is(err, fs.ErrNotExist) {
//manager.fsys, err = writefs.SubFSCreate(fsys, manager.GetName())
}
*/
if create && errors.Is(err, fs.ErrNotExist) {
manager.fsys, err = writefs.SubFSCreate(fsys, manager.GetName())
}
if err != nil {
panic(err)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-indexer-logging-object.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func (sl *LoggingIndexer) IsRegistered() bool {
return false
}

func (li *LoggingIndexer) SetFS(fsys fs.FS) {
func (li *LoggingIndexer) SetFS(fsys fs.FS, create bool) {
//TODO implement me
panic("implement me")
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-indexer.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ func (sl *Indexer) IsRegistered() bool { return false }

func (sl *Indexer) GetName() string { return IndexerName }

func (sl *Indexer) SetFS(fsys fs.FS) { sl.fsys = fsys }
func (sl *Indexer) SetFS(fsys fs.FS, create bool) { sl.fsys = fsys }

func (sl *Indexer) SetParams(params map[string]string) error {
var err error
Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-metafile.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ func (sl *MetaFile) SetParams(params map[string]string) error {
return nil
}

func (sl *MetaFile) SetFS(fsys fs.FS) {
func (sl *MetaFile) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-mets.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ func (me *Mets) SetParams(params map[string]string) error {
return nil
}

func (me *Mets) SetFS(fsys fs.FS) {
func (me *Mets) SetFS(fsys fs.FS, create bool) {
me.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-migration.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (mi *Migration) IsRegistered() bool { return false }

func (mi *Migration) GetName() string { return MigrationName }

func (mi *Migration) SetFS(fsys fs.FS) { mi.fsys = fsys }
func (mi *Migration) SetFS(fsys fs.FS, create bool) { mi.fsys = fsys }

func (mi *Migration) SetParams(map[string]string) error {
return nil
Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-pairtree-storage-layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func (sl *StorageLayoutPairTree) WriteLayout(fsys fs.FS) error {
return nil
}

func (sl *StorageLayoutPairTree) SetFS(fsys fs.FS) {
func (sl *StorageLayoutPairTree) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/NNNN-thumbnail.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ func (thumb *Thumbnail) IsRegistered() bool { return false }

func (thumb *Thumbnail) GetName() string { return ThumbnailName }

func (thumb *Thumbnail) SetFS(fsys fs.FS) { thumb.fsys = fsys }
func (thumb *Thumbnail) SetFS(fsys fs.FS, create bool) { thumb.fsys = fsys }

func (thumb *Thumbnail) SetParams(map[string]string) error {
return nil
Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/initial.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ func (sl *Initial) IsRegistered() bool {
return true
}

func (sl *Initial) SetFS(fsys fs.FS) {
func (sl *Initial) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/extension/pathdirect.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (sl *PathDirect) IsRegistered() bool {
return false
}

func (sl *PathDirectConfig) SetFS(fsys fs.FS) {
func (sl *PathDirectConfig) SetFS(fsys fs.FS, create bool) {
sl.fsys = fsys
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/ocfl/extension.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type ExtensionConfig struct {

type Extension interface {
GetName() string
SetFS(fsys fs.FS)
SetFS(fsys fs.FS, create bool)
GetFS() fs.FS
SetParams(params map[string]string) error
WriteConfig() error
Expand Down
2 changes: 1 addition & 1 deletion pkg/ocfl/extensionFactory.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ func (f *ExtensionFactory) CreateExtensions(fsys fs.FS, validation Validation) (
// do final steps
manager.Finalize()
manager.SetInitial(initial)
manager.SetFS(fsys)
manager.SetFS(fsys, false)
return manager, errors.Combine(errs...)
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/ocfl/extensionInitialDummy.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func (dummy *InitialDummy) WriteConfig() error {
panic("never call me")
}

func (dummy *InitialDummy) SetFS(fsys fs.FS) {
func (dummy *InitialDummy) SetFS(fsys fs.FS, create bool) {
panic("never call me")
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/ocfl/objectbase.go
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@ func (object *ObjectBase) Init(id string, digest checksum.DigestAlgorithm, fixit
if err != nil {
return errors.Wrapf(err, "cannot create subfs of %v for folder '%s'", object.fsys, "extensions")
}
object.extensionManager.SetFS(subfs)
object.extensionManager.SetFS(subfs, true)

// check fixity here
algs := []checksum.DigestAlgorithm{
Expand Down Expand Up @@ -552,7 +552,7 @@ func (object *ObjectBase) StartUpdate(sourceFS fs.FS, msg string, UserName strin
if err != nil {
return nil, errors.Wrapf(err, "cannot create subfs of %v for folder '%s'", object.fsys, "extensions")
}
object.extensionManager.SetFS(subfs)
object.extensionManager.SetFS(subfs, false)

if err := object.i.NewVersion(msg, UserName, UserAddress); err != nil {
return nil, errors.Wrap(err, "cannot create new object version")
Expand Down
2 changes: 1 addition & 1 deletion pkg/ocfl/storagerootbase.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func (osr *StorageRootBase) Init(version OCFLVersion, digest checksum.DigestAlgo

subfs, err := writefs.SubFSCreate(osr.fsys, "extensions")
if err == nil {
osr.extensionManager.SetFS(subfs)
osr.extensionManager.SetFS(subfs, true)
if err := osr.extensionManager.WriteConfig(); err != nil {
return errors.Wrap(err, "cannot store extension configs")
}
Expand Down

0 comments on commit d2544c6

Please sign in to comment.