From 9a931698989fb8db2059a3dee1a431ef94beb59e Mon Sep 17 00:00:00 2001
From: Maran <maran.hidskes@gmail.com>
Date: Tue, 15 Jul 2014 12:52:44 +0200
Subject: [PATCH] Rewrote mnemonic word loading to facilitate deployable
 builds.

---
 ethcrypto/mnemonic.go | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/ethcrypto/mnemonic.go b/ethcrypto/mnemonic.go
index 725846792..b8df2ad6f 100644
--- a/ethcrypto/mnemonic.go
+++ b/ethcrypto/mnemonic.go
@@ -6,30 +6,35 @@ import (
 	"os"
 	"path"
 	"path/filepath"
-	"runtime"
 	"strconv"
 	"strings"
 )
 
-func InitWords() []string {
-	_, thisfile, _, _ := runtime.Caller(1)
-	filename := path.Join(path.Dir(thisfile), "mnemonic.words.lst")
+func InitWords(wordsPath string) {
+	filename := path.Join(wordsPath, "mnemonic.words.lst")
 	if _, err := os.Stat(filename); os.IsNotExist(err) {
-		fmt.Printf("reading mnemonic word list file 'mnemonic.words.lst' from source folder failed, looking in current folder.")
-		dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
-		if err != nil {
-			panic(fmt.Errorf("problem getting current folder: ", err))
-		}
+		fmt.Printf("reading mnemonic word list file from supplied path not found. Looked in %s. Trying next option.\n", filename)
+
+		dir := path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "eth-go", "ethcrypto")
 		filename = path.Join(dir, "mnemonic.words.lst")
+		if _, err := os.Stat(filename); os.IsNotExist(err) {
+			fmt.Printf("reading mnemonic word list file 'mnemonic.words.lst' from source folder failed: %s.\n", filename)
+			dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
+			if err != nil {
+				panic(fmt.Errorf("problem getting current folder: ", err))
+			}
+			filename = path.Join(dir, "mnemonic.words.lst")
+		}
 	}
+
 	content, err := ioutil.ReadFile(filename)
 	if err != nil {
-		panic(fmt.Errorf("reading mnemonic word list file 'mnemonic.words.lst' failed: ", err))
+		panic(fmt.Errorf("All options for finding the mnemonic word list file 'mnemonic.words.lst' failed: ", err))
 	}
-	return strings.Split(string(content), "\n")
+	words = strings.Split(string(content), "\n")
 }
 
-var words = InitWords()
+var words []string
 
 // TODO: See if we can refactor this into a shared util lib if we need it multiple times
 func IndexOf(slice []string, value string) int64 {
-- 
GitLab