From 78c5696d2de52dd2ff584b048f73decf46e9a9ca Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sat, 13 Feb 2016 09:59:22 +0000
Subject: [PATCH] moved ExpandTilde to the util package

---
 cmd/liber/liber.go | 19 ++++++-------------
 util/tilde.go      | 20 ++++++++++++++++++++
 2 files changed, 26 insertions(+), 13 deletions(-)
 create mode 100644 util/tilde.go

diff --git a/cmd/liber/liber.go b/cmd/liber/liber.go
index 52153c4..5712ca4 100644
--- a/cmd/liber/liber.go
+++ b/cmd/liber/liber.go
@@ -16,6 +16,7 @@ import (
 	"sync"
 
 	"git.autistici.org/ale/liber"
+	"git.autistici.org/ale/liber/util"
 )
 
 var (
@@ -152,7 +153,7 @@ func doUpdate(db *liber.Database, dir string) {
 }
 
 func doSync(db *liber.Database, remoteAddr string) {
-	storage := liber.NewFileStorage(expandTilde(*bookDir))
+	storage := liber.NewFileStorage(util.ExpandTilde(*bookDir))
 	sc := liber.NewRemoteServer(remoteAddr)
 	if err := db.Sync(storage, sc); err != nil {
 		log.Fatal(err)
@@ -181,8 +182,8 @@ func doSearch(db *liber.Database, query string) {
 }
 
 func doHttpServer(db *liber.Database, addr string) {
-	storage := liber.NewRWFileStorage(expandTilde(*bookDir), 2)
-	cache := liber.NewRWFileStorage(filepath.Join(expandTilde(*databaseDir), "cache"), 2)
+	storage := liber.NewRWFileStorage(util.ExpandTilde(*bookDir), 2)
+	cache := liber.NewRWFileStorage(filepath.Join(util.ExpandTilde(*databaseDir), "cache"), 2)
 	server := liber.NewHttpServer(db, storage, cache, addr)
 	log.Fatal(server.ListenAndServe())
 }
@@ -202,14 +203,6 @@ func b2i(b bool) int {
 	return 0
 }
 
-func expandTilde(path string) string {
-	if strings.HasPrefix(path, "~/") {
-		curUser, _ := user.Current()
-		return filepath.Join(curUser.HomeDir, strings.TrimPrefix(path, "~/"))
-	}
-	return path
-}
-
 func main() {
 	log.SetFlags(0)
 	flag.Parse()
@@ -221,7 +214,7 @@ func main() {
 		log.Fatal("Must specify --book-dir")
 	}
 
-	dbdir := expandTilde(*databaseDir)
+	dbdir := util.ExpandTilde(*databaseDir)
 	db, err := liber.NewDb(dbdir)
 	if err != nil {
 		log.Fatal(err)
@@ -237,7 +230,7 @@ func main() {
 			log.SetFlags(log.Ldate | log.Ltime)
 		}
 
-		doUpdate(db, expandTilde(*bookDir))
+		doUpdate(db, util.ExpandTilde(*bookDir))
 	} else if *remotesync != "" {
 		doSync(db, *remotesync)
 	} else if *search {
diff --git a/util/tilde.go b/util/tilde.go
new file mode 100644
index 0000000..73c326e
--- /dev/null
+++ b/util/tilde.go
@@ -0,0 +1,20 @@
+package util
+
+import (
+	"os/user"
+	"path/filepath"
+	"strings"
+)
+
+// ExpandTilde replaces an initial "~/" in the given path with the
+// current user's home directory. It is intended as a convenience for
+// those cases where the provided path does not come from a shell,
+// which would otherwise handle the expansion.
+func ExpandTilde(path string) string {
+	if strings.HasPrefix(path, "~/") {
+		if u, err := user.Current(); err == nil {
+			return filepath.Join(u.HomeDir, path[2:])
+		}
+	}
+	return path
+}
-- 
GitLab