Skip to content

Installation

Requirements

  • Go 1.21 or later

Install

go get github.com/plexusone/omnistorage-core

Backend-Specific Dependencies

The core package has minimal dependencies. Cloud backends are in separate packages:

Core Backends (Included)

These backends have minimal or no external dependencies:

  • object/backend/file - Local filesystem (no external deps)
  • object/backend/memory - In-memory storage (no external deps)
  • object/backend/channel - Go channels (no external deps)
  • object/backend/sftp - SSH file transfer (uses pkg/sftp)
  • object/backend/dropbox - Dropbox cloud storage

Cloud Backends (Separate Packages)

Cloud backends with vendor SDKs are in separate repositories:

# AWS S3 backend
go get github.com/plexusone/omni-aws/omnistorage/s3

# Google Cloud Storage
go get github.com/plexusone/omni-google/omnistorage/gcs

# Google Drive
go get github.com/plexusone/omni-google/omnistorage/drive

Compression

Zstandard compression is included in the core:

import "github.com/plexusone/omnistorage-core/object/compress/zstd"

This uses github.com/klauspost/compress.

Import Patterns

Import the root package to auto-register all core backends:

import "github.com/plexusone/omnistorage-core"

// All core backends registered: channel, dropbox, file, memory, sftp
backend, _ := omnistorage.Open("file", map[string]string{"root": "/data"})

Direct Backend Usage

import (
    "github.com/plexusone/omnistorage-core/object/backend/file"
    "github.com/plexusone/omnistorage-core/object/backend/memory"
)

// Use backends directly
fileBackend := file.New(file.Config{Root: "/data"})
memBackend := memory.New()

Selective Registry Pattern

import (
    "github.com/plexusone/omnistorage-core/object"

    // Side-effect imports register only specific backends
    _ "github.com/plexusone/omnistorage-core/object/backend/file"
    _ "github.com/plexusone/omnistorage-core/object/backend/memory"
)

// Open by name from configuration
backend, _ := object.Open("file", map[string]string{
    "root": "/data",
})

Verify Installation

package main

import (
    "fmt"
    "github.com/plexusone/omnistorage-core"
)

func main() {
    backends := omnistorage.Backends()
    fmt.Println("Registered backends:", backends)
    // Output: Registered backends: [channel dropbox file memory sftp]
}

Next Steps