github.com/gonutz/osext@v0.0.0-20171206091709-9e22409d6bb6/osext.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Extensions to the standard "os" package. 6 package osext // import "github.com/gonutz/osext" 7 8 import "path/filepath" 9 10 var cx, ce = executableClean() 11 12 func executableClean() (string, error) { 13 p, err := executable() 14 return filepath.Clean(p), err 15 } 16 17 // Executable returns an absolute path that can be used to 18 // re-invoke the current program. 19 // It may not be valid after the current program exits. 20 func Executable() (string, error) { 21 return cx, ce 22 } 23 24 // Returns same path as Executable, returns just the folder 25 // path. Excludes the executable name and any trailing slash. 26 func ExecutableFolder() (string, error) { 27 p, err := Executable() 28 if err != nil { 29 return "", err 30 } 31 32 return filepath.Dir(p), nil 33 }