Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 28 additions & 11 deletions src/main/java/org/wpilib/gradlerio/wpi/WPIExtension.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public WPIExtension(Project project) {
platforms = new NativePlatforms();

wpilibYear = factory.property(String.class);
wpilibYear.convention("2027_alpha5");
wpilibYear.convention("2027_alpha7");

wpilibHome = factory.directoryProperty().fileProvider(project.provider(WPIExtension::computeHomeRoot))
.dir(wpilibYear);
Expand Down Expand Up @@ -142,18 +142,35 @@ public Provider<Directory> getWpilibHome() {
}

private static File computeHomeRoot() {
File homeRoot = null;
if (OperatingSystem.current().isWindows()) {
String publicFolder = System.getenv("PUBLIC");
if (publicFolder == null) {
publicFolder = "C:\\Users\\Public";
OperatingSystem currentOperatingSystem = OperatingSystem.current();
return computeHomeRoot(currentOperatingSystem.isWindows(), currentOperatingSystem.isMacOsX(),
currentOperatingSystem.isLinux(), System.getProperty("user.home"), System.getenv("PUBLIC"),
System.getenv("XDG_DATA_HOME"));
}

static File computeHomeRoot(boolean isWindows, boolean isMacOsX, boolean isLinux, String userFolder,
String publicFolder, String xdgDataHome) {
if (isWindows) {
String resolvedPublicFolder = publicFolder;
if (resolvedPublicFolder == null) {
resolvedPublicFolder = "C:\\Users\\Public";
}
homeRoot = new File(publicFolder, "wpilib");
} else {
String userFolder = System.getProperty("user.home");
homeRoot = new File(userFolder, "wpilib");
return new File(resolvedPublicFolder, "wpilib");
}

if (isMacOsX) {
return new File(userFolder, ".wpilib");
}
return homeRoot;

if (isLinux && xdgDataHome != null && !xdgDataHome.isBlank()) {
return new File(xdgDataHome, "wpilib");
}

if (isLinux) {
return new File(new File(userFolder, ".local/share"), "wpilib");
}

return new File(userFolder, ".wpilib");
}

// public Map<String, Tuple> versions() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.wpilib.gradlerio.wpi

import spock.lang.Specification

class WPIExtensionHomeRootTest extends Specification {
def "WPILib home root uses platform specific locations"() {
expect:
WPIExtension.computeHomeRoot(isWindows, isMacOsX, isLinux, userHome, publicFolder, xdgDataHome) == expected

where:
isWindows | isMacOsX | isLinux | userHome | publicFolder | xdgDataHome || expected
true | false | false | "/home/user" | "C:\\Users\\Team" | null || new File("C:\\Users\\Team", "wpilib")
true | false | false | "/home/user" | null | null || new File("C:\\Users\\Public", "wpilib")
false | true | false | "/Users/team" | null | null || new File("/Users/team", ".wpilib")
false | false | true | "/home/team" | null | "/data/team/share" || new File("/data/team/share", "wpilib")
false | false | true | "/home/team" | null | null || new File("/home/team/.local/share", "wpilib")
false | false | true | "/home/team" | null | "" || new File("/home/team/.local/share", "wpilib")
false | false | false | "/home/team" | null | "/data/team/share" || new File("/home/team", ".wpilib")
}
}
14 changes: 12 additions & 2 deletions testing/asm/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
String wpilibYear = '2027_alpha5'
String wpilibYear = '2027_alpha7'
File wpilibHome
if (OperatingSystem.current().isWindows()) {
String publicFolder = System.getenv('PUBLIC')
Expand All @@ -13,9 +13,19 @@ pluginManagement {
}
def homeRoot = new File(publicFolder, "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
} else if (OperatingSystem.current().isLinux()) {
String xdgDataHome = System.getenv('XDG_DATA_HOME')
if (xdgDataHome != null && !xdgDataHome.isBlank()) {
def homeRoot = new File(xdgDataHome, "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
} else {
def userFolder = System.getProperty("user.home")
def homeRoot = new File(new File(userFolder, ".local/share"), "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
}
} else {
def userFolder = System.getProperty("user.home")
def homeRoot = new File(userFolder, "wpilib")
def homeRoot = new File(userFolder, ".wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
}
def wpilibHomeMaven = new File(wpilibHome, 'maven')
Expand Down
14 changes: 12 additions & 2 deletions testing/cpp/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
String wpilibYear = '2027_alpha5'
String wpilibYear = '2027_alpha7'
File wpilibHome
if (OperatingSystem.current().isWindows()) {
String publicFolder = System.getenv('PUBLIC')
Expand All @@ -13,9 +13,19 @@ pluginManagement {
}
def homeRoot = new File(publicFolder, "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
} else if (OperatingSystem.current().isLinux()) {
String xdgDataHome = System.getenv('XDG_DATA_HOME')
if (xdgDataHome != null && !xdgDataHome.isBlank()) {
def homeRoot = new File(xdgDataHome, "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
} else {
def userFolder = System.getProperty("user.home")
def homeRoot = new File(new File(userFolder, ".local/share"), "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
}
} else {
def userFolder = System.getProperty("user.home")
def homeRoot = new File(userFolder, "wpilib")
def homeRoot = new File(userFolder, ".wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
}
def wpilibHomeMaven = new File(wpilibHome, 'maven')
Expand Down
14 changes: 12 additions & 2 deletions testing/java/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
String wpilibYear = '2027_alpha5'
String wpilibYear = '2027_alpha7'
File wpilibHome
if (OperatingSystem.current().isWindows()) {
String publicFolder = System.getenv('PUBLIC')
Expand All @@ -13,9 +13,19 @@ pluginManagement {
}
def homeRoot = new File(publicFolder, "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
} else if (OperatingSystem.current().isLinux()) {
String xdgDataHome = System.getenv('XDG_DATA_HOME')
if (xdgDataHome != null && !xdgDataHome.isBlank()) {
def homeRoot = new File(xdgDataHome, "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
} else {
def userFolder = System.getProperty("user.home")
def homeRoot = new File(new File(userFolder, ".local/share"), "wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
}
} else {
def userFolder = System.getProperty("user.home")
def homeRoot = new File(userFolder, "wpilib")
def homeRoot = new File(userFolder, ".wpilib")
wpilibHome = new File(homeRoot, wpilibYear)
}
def wpilibHomeMaven = new File(wpilibHome, 'maven')
Expand Down
Loading