diff --git a/README.md b/README.md index 023144f..52225d1 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,8 @@ -[![Maven Central](https://img.shields.io/maven-central/v/dev.dirs/directories.svg)](https://search.maven.org/#search|gav|1|g%3A%22dev.dirs%22%20AND%20a%3A%22directories%22) -[![API documentation](http://javadoc.io/badge/dev.dirs/directories.svg)](http://javadoc.io/doc/dev.dirs/directories) -![actively developed](https://img.shields.io/badge/maintenance-actively_developed-brightgreen.svg) -[![TravisCI status](https://img.shields.io/travis/dirs-dev/directories-jvm/main.svg?label=Linux%20build)](https://travis-ci.org/dirs-dev/directories-jvm) -[![AppVeyor status](https://img.shields.io/appveyor/ci/soc/directories-jvm/main.svg?label=Windows%20build)](https://ci.appveyor.com/project/soc/directories-jvm/branch/main) -[![License: MPL-2.0](https://img.shields.io/github/license/dirs-dev/directories-jvm.svg)](LICENSE) +[![Maven Central](https://img.shields.io/maven-central/v/dev.dirs/directories.svg?style=for-the-badge)](https://search.maven.org/#search|gav|1|g%3A%22dev.dirs%22%20AND%20a%3A%22directories%22) +[![API documentation](http://javadoc.io/badge/dev.dirs/directories.svg?style=for-the-badge)](http://javadoc.io/doc/dev.dirs/directories) +![actively developed](https://img.shields.io/badge/maintenance-actively_developed-brightgreen.svg?style=for-the-badge) +[![GitHub Actions status](https://img.shields.io/github/actions/workflow/status/dirs-dev/directories-jvm/test.yml?branch=main&style=for-the-badge)](https://github.com/dirs-dev/directories-jvm/actions/workflows/test.yml) +[![License: MPL-2.0](https://img.shields.io/github/license/dirs-dev/directories-jvm.svg?style=for-the-badge)](LICENSE) # Directories @@ -38,17 +37,17 @@ Add the library as a dependency to your project: dev.dirs directories - 20 + 26 ``` ##### Gradle ```groovy -compile 'dev.dirs:directories:20' +compile 'dev.dirs:directories:26' ``` ##### SBT ```scala -"dev.dirs" % "directories" % "20" +"dev.dirs" % "directories" % "26" ``` The library itself is built against Java 6 to allow for the widest possible usage scenarios. @@ -186,7 +185,15 @@ The version number of this library consists of a whole number, which is incremen ## Changelog -### 24 – current stable `dev.dirs:directories` release +### 26 – current stable `dev.dirs:directories` release + +- Adds support for IBM Series i (OS/400). Thanks @ThePrez! + +### 25 +- Release with newer JavaDoc version. +- Update SBT version to 1.5.0. + +### 24 - Try both "normal" and "downgraded" version of Powershell. Hopefully fixes #47. Thanks @phongngtuan! diff --git a/src/main/java/dev/dirs/BaseDirectories.java b/src/main/java/dev/dirs/BaseDirectories.java index 93dc51b..3d06180 100644 --- a/src/main/java/dev/dirs/BaseDirectories.java +++ b/src/main/java/dev/dirs/BaseDirectories.java @@ -251,6 +251,8 @@ private BaseDirectories() { case LIN: case BSD: case SOLARIS: + case IBMI: + case AIX: homeDir = System.getProperty("user.home"); cacheDir = defaultIfNullOrEmpty(System.getenv("XDG_CACHE_HOME"), homeDir, "/.cache"); configDir = defaultIfNullOrEmpty(System.getenv("XDG_CONFIG_HOME"), homeDir, "/.config"); diff --git a/src/main/java/dev/dirs/ProjectDirectories.java b/src/main/java/dev/dirs/ProjectDirectories.java index cb7c4ac..98ae845 100644 --- a/src/main/java/dev/dirs/ProjectDirectories.java +++ b/src/main/java/dev/dirs/ProjectDirectories.java @@ -238,6 +238,8 @@ public static ProjectDirectories fromPath(String path, GetWinDirs getWinDirs) { case LIN: case BSD: case SOLARIS: + case IBMI: + case AIX: homeDir = System.getProperty("user.home"); cacheDir = defaultIfNullOrEmptyExtended(System.getenv("XDG_CACHE_HOME"), path, homeDir + "/.cache/", path); configDir = defaultIfNullOrEmptyExtended(System.getenv("XDG_CONFIG_HOME"), path, homeDir + "/.config/", path); @@ -302,6 +304,8 @@ public static ProjectDirectories from(String qualifier, String organization, Str case LIN: case BSD: case SOLARIS: + case IBMI: + case AIX: path = trimLowercaseReplaceWhitespace(application, "", true); break; case MAC: @@ -311,7 +315,7 @@ public static ProjectDirectories from(String qualifier, String organization, Str path = windowsApplicationPath(qualifier, organization, application); break; default: - throw new UnsupportedOperatingSystemException("Base directories are not supported on " + operatingSystemName); + throw new UnsupportedOperatingSystemException("Project directories are not supported on " + operatingSystemName); } return fromPath(path, getWinDirs); } diff --git a/src/main/java/dev/dirs/UserDirectories.java b/src/main/java/dev/dirs/UserDirectories.java index 5bf4e76..bb739e3 100644 --- a/src/main/java/dev/dirs/UserDirectories.java +++ b/src/main/java/dev/dirs/UserDirectories.java @@ -303,6 +303,7 @@ private UserDirectories() { case LIN: case BSD: case SOLARIS: + case AIX: String[] userDirs = getXDGUserDirs("MUSIC", "DESKTOP", "DOCUMENTS", "DOWNLOAD", "PICTURES", "PUBLICSHARE", "TEMPLATES", "VIDEOS"); homeDir = System.getProperty("user.home"); audioDir = userDirs[0]; @@ -327,6 +328,18 @@ private UserDirectories() { templateDir = null; videoDir = homeDir + "/Movies"; break; + case IBMI: + homeDir = System.getProperty("user.home"); + audioDir = homeDir + "/Music"; + desktopDir = homeDir + "/Desktop"; + documentDir = homeDir + "/Documents"; + downloadDir = homeDir + "/Downloads"; + fontDir = defaultIfNullOrEmptyExtended(System.getenv("XDG_DATA_HOME"), "/fonts", homeDir, "/.local/share/fonts"); + pictureDir = homeDir + "/Pictures"; + publicDir = homeDir + "/Public"; + templateDir = null; + videoDir = homeDir + "/Movies"; + break; case WIN: String[] winDirs = getWinDirs( "5E6C858F-0E22-4760-9AFE-EA3317B67173", diff --git a/src/main/java/dev/dirs/Util.java b/src/main/java/dev/dirs/Util.java index 05ddbdb..2314278 100644 --- a/src/main/java/dev/dirs/Util.java +++ b/src/main/java/dev/dirs/Util.java @@ -22,6 +22,8 @@ private Util() { static final char WIN = 'w'; static final char BSD = 'b'; static final char SOLARIS = 's'; + static final char IBMI = 'i'; + static final char AIX = 'a'; static final String UTF8_BOM = "\ufeff"; @@ -37,6 +39,10 @@ else if (os.contains("bsd")) operatingSystem = BSD; else if (os.contains("sunos")) operatingSystem = SOLARIS; + else if (os.contains("os/400") || os.contains("os400")) + operatingSystem = IBMI; + else if (os.contains("aix")) + operatingSystem = AIX; else throw new UnsupportedOperatingSystemException("directories are not supported on " + operatingSystemName); }