Contents

giginet/scipio-cache-storage

This is a small library to provide `CacheStorage` protocol.

Motivation

Scipio uses swift-package-manager as a dependency, but it doen't follow the semver. Thereby, it's hassle to maintain the each cache storage plugin. Each plugin must be updated when the Scipio bersion is updated.

I'll show you the structure of the packages.

Before

classDiagram
    object SwiftPM

    object ScipioKit

    object ScipioS3Storage

    object executor

    SwiftPM <|-- ScipioKit
    ScipioKit <|-- ScipioS3Storage
    ScipioKit <|-- executor
    ScipioS3Storage <|.. executor

In this structure, SwiftPM can't resolve versions of swift-package-manager, so all packages must specify the same version at all. It's unuseful to maintain the packages. Additionally, it's difficult to make the other storage plugin.

After

classDiagram
    object SwiftPM

    object ScipioCacheStorage

    object ScipioKit

    object ScipioS3Storage
    object ScipioAzureStorage
    object ScipioFileServerStorage

    object executor

    SwiftPM <|-- ScipioKit
    ScipioCacheStorage <|-- ScipioKit
    ScipioCacheStorage <|-- ScipioS3Storage
    ScipioCacheStorage <|-- ScipioAzureStorage
    ScipioCacheStorage <|-- ScipioFileServerStorage
    ScipioKit <|-- executor
    ScipioS3Storage <|.. executor
    ScipioAzureStorage <|.. executor
    ScipioFileServerStorage <|.. executor

ScipioCacheStoragehelps us to maintain the versioning. It can keep a fewer effort the version management.

Packages except ScipioKit doen't depend on SwiftPM, so it can follow the standard semver.

If you want to make the other storage plugin, you can make it easily. You just need to implement CacheStorage protocol.

Package Metadata

Repository: giginet/scipio-cache-storage

Default branch: main

README: README.md