mirror of
https://github.com/lus/pasty.git
synced 2023-08-10 21:13:09 +03:00
Implement transfer tool
This commit is contained in:
parent
5a9a5a8885
commit
f97531e765
67
cmd/transfer/main.go
Normal file
67
cmd/transfer/main.go
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Lukaesebrot/pasty/internal/env"
|
||||||
|
"github.com/Lukaesebrot/pasty/internal/storage"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Validate the command line arguments
|
||||||
|
if len(os.Args) != 3 {
|
||||||
|
panic("Invalid command line arguments")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load the optional .env file
|
||||||
|
log.Println("Loading the optional .env file...")
|
||||||
|
env.Load()
|
||||||
|
|
||||||
|
// Create and initialize the first (from) driver
|
||||||
|
from, err := storage.GetDriver(os.Args[1])
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
err = from.Initialize()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create and initialize the second (to) driver
|
||||||
|
to, err := storage.GetDriver(os.Args[2])
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
err = to.Initialize()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve a list of IDs from the first (from) driver
|
||||||
|
ids, err := from.ListIDs()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transfer every paste to the second (to) driver
|
||||||
|
for _, id := range ids {
|
||||||
|
log.Println("Transferring ID " + id + "...")
|
||||||
|
|
||||||
|
// Retrieve the paste
|
||||||
|
paste, err := from.Get(id)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("[ERR]", err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the paste
|
||||||
|
err = to.Save(paste)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("[ERR]", err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("Transferred ID " + id + ".")
|
||||||
|
}
|
||||||
|
}
|
@ -23,27 +23,31 @@ type Driver interface {
|
|||||||
// Load loads the current storage driver
|
// Load loads the current storage driver
|
||||||
func Load() error {
|
func Load() error {
|
||||||
// Define the driver to use
|
// Define the driver to use
|
||||||
var driver Driver
|
storageType := env.Get("STORAGE_TYPE", "file")
|
||||||
storageType := strings.ToLower(env.Get("STORAGE_TYPE", "file"))
|
driver, err := GetDriver(storageType)
|
||||||
switch storageType {
|
if err != nil {
|
||||||
case "file":
|
return err
|
||||||
driver = new(FileDriver)
|
|
||||||
break
|
|
||||||
case "s3":
|
|
||||||
driver = new(S3Driver)
|
|
||||||
break
|
|
||||||
case "mongodb":
|
|
||||||
driver = new(MongoDBDriver)
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
return fmt.Errorf("invalid storage type '%s'", storageType)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize the driver
|
// Initialize the driver
|
||||||
err := driver.Initialize()
|
err = driver.Initialize()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
Current = driver
|
Current = driver
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetDriver returns the driver with the given type string if it exists
|
||||||
|
func GetDriver(storageType string) (Driver, error) {
|
||||||
|
switch strings.ToLower(storageType) {
|
||||||
|
case "file":
|
||||||
|
return new(FileDriver), nil
|
||||||
|
case "s3":
|
||||||
|
return new(S3Driver), nil
|
||||||
|
case "mongodb":
|
||||||
|
return new(MongoDBDriver), nil
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("invalid storage type '%s'", storageType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user