A cross-platform library for generating common application directory paths.
go get github.com/markgemmill/appdirspackage main
import (
"fmt"
"github.com/markgemmill/appdirs"
)
func main() {
// Create an AppDirs instance for your application
dirs, err := appdirs.NewAppDirs("myapp", "1.0")
if err != nil {
panic("this is only going to happen if app name is blank")
}
// Get user-level directories
fmt.Println("User Data:", dirs.UserDataDir())
fmt.Println("User Config:", dirs.UserConfigDir())
fmt.Println("User Cache:", dirs.UserCacheDir())
fmt.Println("User Logs:", dirs.UserLogDir())
// Get system-level directories
fmt.Println("Site Data:", dirs.SiteDataDir())
fmt.Println("Site Config:", dirs.SiteConfigDir())
}macOS:
User Data: /Users/username/Library/Application Support/myapp/1.0
User Config: /Users/username/Library/Preferences/myapp/1.0
User Cache: /Users/username/Library/Caches/myapp/1.0
User Logs: /Users/username/Library/Logs/myapp/1.0
Site Data: /Library/Application Support/myapp/1.0
Site Config: /Library/Preferences/myapp/1.0
Linux:
User Data: /home/username/.local/share/myapp/1.0
User Config: /home/username/.config/myapp/1.0
User Cache: /home/username/.cache/myapp/1.0
User Logs: /home/username/.cache/myapp/1.0/log
Site Data: /usr/local/share/myapp/1.0
Site Config: /etc/xdg/myapp/1.0
Windows:
User Data: C:\Users\username\AppData\Local\myapp\1.0
User Config: C:\Users\username\AppData\Local\myapp\1.0
User Cache: C:\Users\username\AppData\Local\myapp\1.0\cache
User Logs: C:\Users\username\AppData\Local\myapp\1.0\logs
Site Data: C:\ProgramData\myapp\1.0
Site Config: C:\ProgramData\myapp\1.0\config
This library only returns directory paths; it does not create them.