diff --git a/src/envpaths/EnvPaths.hx b/src/envpaths/EnvPaths.hx index 2b983fa..cc1e807 100644 --- a/src/envpaths/EnvPaths.hx +++ b/src/envpaths/EnvPaths.hx @@ -1,23 +1,23 @@ package envpaths; import haxe.io.Path; -//import haxe.io.*; import Sys; typedef Envpath = { - home: String, - data: String, - config: String, - cache: String, - log: String, - temp: String, + home:String, + data:String, + config:String, + cache:String, + log:String, + temp:String, } -final macos: String -> Envpath = name -> { +typedef GetEnvPath = String->Envpath + +final macos: GetEnvPath = name -> { final homedir = Sys.getEnv('HOME'); final tmpdir = Sys.getEnv('TMPDIR'); final library = Path.join([homedir, 'Library']); - return { home: homedir, data: Path.join([library, 'Application Support', name]), @@ -28,12 +28,11 @@ final macos: String -> Envpath = name -> { }; }; -final windows = name -> { +final windows: GetEnvPath = name -> { final homedir = Sys.getEnv('USERPROFILE'); final tmpdir = Sys.getEnv('TEMP'); final appData = Sys.getEnv('APPDATA') ?? Path.join([homedir, 'AppData', 'Roaming']); final localAppData = Sys.getEnv('LOCALAPPDATA') ?? Path.join([homedir, 'AppData', 'Local']); - return { // Data/config/cache/log are invented by me as Windows isn't opinionated about this home: homedir, @@ -46,11 +45,10 @@ final windows = name -> { }; // https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html -final linux = name -> { +final linux: GetEnvPath= name -> { final homedir = Sys.getEnv('HOME'); final username = Path.withoutDirectory(homedir); final tmpdir = Sys.getEnv("TMPDIR") ?? Sys.getEnv("TMP") ?? "/tmp"; - return { home: homedir, data: Path.join(linuxPathHelper("XDG_DATA_HOME", [homedir, '.local', 'share'], name)), @@ -62,28 +60,27 @@ final linux = name -> { }; }; -final linuxPathHelper: String -> Array -> String -> Array = (env, path, name) -> { - final xdgPath = Sys.getEnv(env); - if (Std.isOfType(xdgPath, String)){ - return [xdgPath, name]; - } else { - return path.concat([name]); - } -} +private final linuxPathHelper = (env: String, path:Array, name: String) -> ({ + final xdgPath = Sys.getEnv(env); + if (Std.isOfType(xdgPath, String)) { + return [xdgPath, name]; + } else { + return path.concat([name]); + } +} : Array); -function envPaths(name: String, ?suffix: String) { +final envPaths = (name:String, ?suffix:String) -> ({ if (Std.isOfType(suffix, String) && suffix != "") { // Add suffix to prevent possible conflict with native apps name += "-${suffix}"; } - - if (Sys.systemName() == 'Mac') { - return macos(name); - } - - if (Sys.systemName() == 'Windows') { - return windows(name); + switch (Sys.systemName()) { + case "Mac": + return macos(name); + case "Windows": + return windows(name); + case _: + // BSD is like Linux + return linux(name); } - - return linux(name); // BSD is like Linux. -} +} : Envpath ); diff --git a/test.hxml b/test.hxml index 9ebe737..de83420 100644 --- a/test.hxml +++ b/test.hxml @@ -1,11 +1,3 @@ -# -cp src -# -cp test -# -lib buddy -# -main envpaths.EnvPaths -# --interp -# -# --next - -cp src -cp test -lib buddy diff --git a/test/Demo.hx b/test/Demo.hx index 03d2fa9..37f4aee 100644 --- a/test/Demo.hx +++ b/test/Demo.hx @@ -1,5 +1,5 @@ import envpaths.EnvPaths; -function main(){ - trace(envPaths("")); +final main = () -> { + trace(envPaths("")); }