mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-24 01:31:46 +00:00
Add deploy directory detection (#1400)
Add Filesystem class for java and namespace methods for C++ for detecting deploy location.
This commit is contained in:
committed by
Peter Johnson
parent
b6830638df
commit
28087424ec
31
wpilibc/src/main/native/cpp/Filesystem.cpp
Normal file
31
wpilibc/src/main/native/cpp/Filesystem.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Copyright (c) 2018 FIRST. All Rights Reserved. */
|
||||
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||||
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
||||
/* the project. */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#include "frc/Filesystem.h"
|
||||
|
||||
#include <wpi/FileSystem.h>
|
||||
#include <wpi/Path.h>
|
||||
|
||||
#include "frc/RobotBase.h"
|
||||
|
||||
void frc::filesystem::GetLaunchDirectory(wpi::SmallVectorImpl<char>& result) {
|
||||
wpi::sys::fs::current_path(result);
|
||||
}
|
||||
|
||||
void frc::filesystem::GetOperatingDirectory(
|
||||
wpi::SmallVectorImpl<char>& result) {
|
||||
if (RobotBase::IsReal()) {
|
||||
wpi::sys::path::native("/home/lvuser", result);
|
||||
} else {
|
||||
frc::filesystem::GetLaunchDirectory(result);
|
||||
}
|
||||
}
|
||||
|
||||
void frc::filesystem::GetDeployDirectory(wpi::SmallVectorImpl<char>& result) {
|
||||
frc::filesystem::GetOperatingDirectory(result);
|
||||
wpi::sys::path::append(result, "deploy");
|
||||
}
|
||||
45
wpilibc/src/main/native/include/frc/Filesystem.h
Normal file
45
wpilibc/src/main/native/include/frc/Filesystem.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Copyright (c) 2018 FIRST. All Rights Reserved. */
|
||||
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||||
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
||||
/* the project. */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wpi/SmallVector.h>
|
||||
|
||||
#include "frc/RobotBase.h"
|
||||
|
||||
namespace frc {
|
||||
namespace filesystem {
|
||||
|
||||
/**
|
||||
* Obtains the current working path that the program was launched with.
|
||||
* This is analogous to the `pwd` command on unix.
|
||||
*
|
||||
* @param result The result of the current working path lookup.
|
||||
*/
|
||||
void GetLaunchDirectory(wpi::SmallVectorImpl<char>& result);
|
||||
|
||||
/**
|
||||
* Obtains the operating directory of the program. On the roboRIO, this
|
||||
* is /home/lvuser. In simulation, it is where the simulation was launched
|
||||
* from (`pwd`).
|
||||
*
|
||||
* @param result The result of the operating directory lookup.
|
||||
*/
|
||||
void GetOperatingDirectory(wpi::SmallVectorImpl<char>& result);
|
||||
|
||||
/**
|
||||
* Obtains the deploy directory of the program, which is the remote location
|
||||
* src/main/deploy is deployed to by default. On the roboRIO, this is
|
||||
* /home/lvuser/deploy. In simulation, it is where the simulation was launched
|
||||
* from, in the subdirectory "deploy" (`pwd`/deploy).
|
||||
*
|
||||
* @param result The result of the operating directory lookup
|
||||
*/
|
||||
void GetDeployDirectory(wpi::SmallVectorImpl<char>& result);
|
||||
|
||||
} // namespace filesystem
|
||||
} // namespace frc
|
||||
58
wpilibj/src/main/java/edu/wpi/first/wpilibj/Filesystem.java
Normal file
58
wpilibj/src/main/java/edu/wpi/first/wpilibj/Filesystem.java
Normal file
@@ -0,0 +1,58 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Copyright (c) 2008-2018 FIRST. All Rights Reserved. */
|
||||
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||||
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
||||
/* the project. */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
package edu.wpi.first.wpilibj;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Class for interacting with the Filesystem, particularly, interacting with
|
||||
* FRC-related paths on the system, such as the launch and deploy directories.
|
||||
*
|
||||
* <p>This class is primarily used for obtaining resources in src/main/deploy, and
|
||||
* the RoboRIO path /home/lvuser in a simulation-compatible way.</p>
|
||||
*/
|
||||
public final class Filesystem {
|
||||
private Filesystem() { }
|
||||
|
||||
/**
|
||||
* Obtains the current working path that the program was launched with.
|
||||
* This is analogous to the `pwd` command on unix.
|
||||
*
|
||||
* @return The current working directory (launch directory)
|
||||
*/
|
||||
public static File getLaunchDirectory() {
|
||||
return new File(System.getProperty("user.dir")).getAbsoluteFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains the operating directory of the program. On the roboRIO, this is
|
||||
* /home/lvuser. In simulation, it is where the simulation was launched from
|
||||
* (`pwd`).
|
||||
*
|
||||
* @return The operating directory
|
||||
*/
|
||||
public static File getOperatingDirectory() {
|
||||
if (RobotBase.isReal()) {
|
||||
return new File("/home/lvuser");
|
||||
} else {
|
||||
return getLaunchDirectory();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains the deploy directory of the program, which is the remote location
|
||||
* src/main/deploy is deployed to by default. On the roboRIO, this is
|
||||
* /home/lvuser/deploy. In simulation, it is where the simulation was launched
|
||||
* from, in the subdirectory "deploy" (`pwd`/deploy).
|
||||
*
|
||||
* @return The deploy directory
|
||||
*/
|
||||
public static File getDeployDirectory() {
|
||||
return new File(getOperatingDirectory(), "deploy");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user