mirror of
https://mirror.ghproxy.com/https://github.com/StarCitizenToolBox/app.git
synced 2024-12-24 02:23:41 +08:00
69 lines
2.3 KiB
Dart
69 lines
2.3 KiB
Dart
/// This is copied from Cargokit (which is the official way to use it currently)
|
|
/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin
|
|
|
|
import 'dart:io';
|
|
|
|
extension on String {
|
|
String resolveSymlink() => File(this).resolveSymbolicLinksSync();
|
|
}
|
|
|
|
class Environment {
|
|
/// Current build configuration (debug or release).
|
|
static String get configuration =>
|
|
_getEnv("CARGOKIT_CONFIGURATION").toLowerCase();
|
|
|
|
static bool get isDebug => configuration == 'debug';
|
|
static bool get isRelease => configuration == 'release';
|
|
|
|
/// Temporary directory where Rust build artifacts are placed.
|
|
static String get targetTempDir => _getEnv("CARGOKIT_TARGET_TEMP_DIR");
|
|
|
|
/// Final output directory where the build artifacts are placed.
|
|
static String get outputDir => _getEnvPath('CARGOKIT_OUTPUT_DIR');
|
|
|
|
/// Path to the crate manifest (containing Cargo.toml).
|
|
static String get manifestDir => _getEnvPath('CARGOKIT_MANIFEST_DIR');
|
|
|
|
/// Directory inside root project. Not necessarily root folder. Symlinks are
|
|
/// not resolved on purpose.
|
|
static String get rootProjectDir => _getEnv('CARGOKIT_ROOT_PROJECT_DIR');
|
|
|
|
// Pod
|
|
|
|
/// Platform name (macosx, iphoneos, iphonesimulator).
|
|
static String get darwinPlatformName =>
|
|
_getEnv("CARGOKIT_DARWIN_PLATFORM_NAME");
|
|
|
|
/// List of architectures to build for (arm64, armv7, x86_64).
|
|
static List<String> get darwinArchs =>
|
|
_getEnv("CARGOKIT_DARWIN_ARCHS").split(' ');
|
|
|
|
// Gradle
|
|
static String get minSdkVersion => _getEnv("CARGOKIT_MIN_SDK_VERSION");
|
|
static String get ndkVersion => _getEnv("CARGOKIT_NDK_VERSION");
|
|
static String get sdkPath => _getEnvPath("CARGOKIT_SDK_DIR");
|
|
static String get javaHome => _getEnvPath("CARGOKIT_JAVA_HOME");
|
|
static List<String> get targetPlatforms =>
|
|
_getEnv("CARGOKIT_TARGET_PLATFORMS").split(',');
|
|
|
|
// CMAKE
|
|
static String get targetPlatform => _getEnv("CARGOKIT_TARGET_PLATFORM");
|
|
|
|
static String _getEnv(String key) {
|
|
final res = Platform.environment[key];
|
|
if (res == null) {
|
|
throw Exception("Missing environment variable $key");
|
|
}
|
|
return res;
|
|
}
|
|
|
|
static String _getEnvPath(String key) {
|
|
final res = _getEnv(key);
|
|
if (Directory(res).existsSync()) {
|
|
return res.resolveSymlink();
|
|
} else {
|
|
return res;
|
|
}
|
|
}
|
|
}
|