github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/juju/errors/path.go (about) 1 // Copyright 2013, 2014 Canonical Ltd. 2 // Licensed under the LGPLv3, see LICENCE file for details. 3 4 package errors 5 6 import ( 7 "runtime" 8 "strings" 9 ) 10 11 // prefixSize is used internally to trim the user specific path from the 12 // front of the returned filenames from the runtime call stack. 13 var prefixSize int 14 15 // goPath is the deduced path based on the location of this file as compiled. 16 var goPath string 17 18 func init() { 19 _, file, _, ok := runtime.Caller(0) 20 if file == "?" { 21 return 22 } 23 if ok { 24 // We know that the end of the file should be: 25 // yougam/libraries/juju/errors/path.go 26 size := len(file) 27 suffix := len("github.com/insionng/yougam/libraries/juju/errors/path.go") 28 goPath = file[:size-suffix] 29 prefixSize = len(goPath) 30 } 31 } 32 33 func trimGoPath(filename string) string { 34 if strings.HasPrefix(filename, goPath) { 35 return filename[prefixSize:] 36 } 37 return filename 38 }