Golang implementation of https://lib.rs/crates/directories
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
package main |
|
|
|
import ( |
|
"fmt" |
|
"reflect" |
|
"runtime" |
|
"strings" |
|
|
|
"git.martyn.berlin/martyn/directories/base" |
|
"git.martyn.berlin/martyn/directories/project" |
|
"git.martyn.berlin/martyn/directories/user" |
|
) |
|
|
|
func GetFunctionName(i interface{}) string { |
|
fullName := strings.Split(runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name(), "/") |
|
funcName := fullName[len(fullName)-1] |
|
return funcName |
|
} |
|
|
|
func printOne(f func() (string, error)) { |
|
result, e := f() |
|
if e != nil { |
|
fmt.Printf("%s() : ERROR : %s\n", GetFunctionName(f), e.Error()) |
|
return |
|
} |
|
fmt.Printf("%s() : %s\n", GetFunctionName(f), result) |
|
} |
|
|
|
func printall() { |
|
printOne(base.Home) |
|
printOne(base.Cache) |
|
printOne(base.Config) |
|
printOne(base.Data) |
|
printOne(base.DataLocal) |
|
printOne(base.Executable) |
|
printOne(base.Preferences) |
|
printOne(base.Runtime) |
|
printOne(base.State) |
|
printOne(user.Home) |
|
printOne(user.Audio) |
|
printOne(user.Desktop) |
|
printOne(user.Documents) |
|
printOne(user.Downloads) |
|
printOne(user.Fonts) |
|
printOne(user.Pictures) |
|
printOne(user.Public) |
|
printOne(user.Templates) |
|
printOne(user.Videos) |
|
project.SetProjectName("example", "org.example.example", "Example Corp.", "Example App") |
|
printOne(project.Cache) |
|
printOne(project.Config) |
|
printOne(project.Data) |
|
printOne(project.DataLocal) |
|
printOne(project.Preferences) |
|
} |
|
|
|
func main() { |
|
printall() |
|
}
|
|
|