From b8f27ed6bc132d10bb59cf3220f993b3647ed4e8 Mon Sep 17 00:00:00 2001 From: tim-kos Date: Wed, 27 Mar 2013 07:16:23 +0100 Subject: [PATCH] make datastore_dir and datastore_max_size configurable env vars, fixes #2 --- src/cmd/tusd/http.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/cmd/tusd/http.go b/src/cmd/tusd/http.go index dba23b7..5e08373 100644 --- a/src/cmd/tusd/http.go +++ b/src/cmd/tusd/http.go @@ -1,6 +1,7 @@ package main import ( + "errors" "fmt" "io" "log" @@ -11,11 +12,6 @@ import ( "strconv" ) -// dataStoreSize limits the storage used by the data store. If exceeded, the -// data store will start garbage collection old files until enough storage is -// available again. -const dataStoreSize = 1024 * 1024 * 1024 - // fileRoute matches /files/. Go seems to use \r to terminate header // values, so to ease bash scripting, the route ignores a trailing \r in the // route. Better ideas are welcome. @@ -31,6 +27,26 @@ func init() { } dataDir := path.Join(wd, "tus_data") + if configDir := os.Getenv("TUSD_DATA_DIR"); configDir != "" { + dataDir = configDir + } + + // dataStoreSize limits the storage used by the data store. If exceeded, the + // data store will start garbage collection old files until enough storage is + // available again. + var dataStoreSize int64 + dataStoreSize = 1024 * 1024 * 1024 + if configStoreSize := os.Getenv("TUSD_DATA_STORE_MAXSIZE"); configStoreSize != "" { + parsed, err := strconv.ParseInt(configStoreSize, 10, 64) + if err != nil { + panic(errors.New("Invalid data store max size configured")) + } + dataStoreSize = parsed + } + + log.Print("Datastore directory: ", dataDir) + log.Print("Datastore max size: ", dataStoreSize) + if err := os.MkdirAll(dataDir, 0777); err != nil { panic(err) }