uvm_core 0.13.1

The core functionality for the unity version manager commandline client.
Documentation
use crate::unity::Component;
use std::path::{Path, PathBuf};

pub fn installpath(component:Component) -> Option<PathBuf> {
    use Component::*;
    let path = match component {
        Mono | VisualStudio | MonoDevelop => None,
        LinuxMono | StandardAssets | Example => Some(""),
        Documentation => Some("Editor/Data/Documentation"),
        ExampleProject  => None,
        Android => Some("Editor/Data/PlaybackEngines/AndroidPlayer"),
        AndroidSdkBuildTools => Some("Editor/Data/PlaybackEngines/AndroidPlayer/SDK/build-tools"),
        AndroidSdkPlatforms => Some("Editor/Data/PlaybackEngines/AndroidPlayer/SDK/platforms"),
        AndroidSdkPlatformTools | AndroidSdkNdkTools => Some("Editor/Data/PlaybackEngines/AndroidPlayer/SDK"),
        AndroidNdk => Some("Editor/Data/PlaybackEngines/AndroidPlayer/NDK"),
        AndroidOpenJdk => Some("Editor/Data/PlaybackEngines/AndroidPlayer/OpenJDK"),
        Ios => Some("Editor/Data/PlaybackEngines/iOSSupport"),
        TvOs => Some("Editor/Data/PlaybackEngines/AppleTVSupport"),
        AppleTV => Some("Editor/Data/PlaybackEngines/AppleTVSupport"),
        Linux | LinuxIL2CPP | LinuxServer => Some("Editor/Data/PlaybackEngines/LinuxStandaloneSupport"),
        Mac | MacIL2CPP | MacMono | MacServer => Some("Editor/Data/PlaybackEngines/MacStandaloneSupport"),
        Samsungtv | SamsungTV => Some("Editor/Data/PlaybackEngines/STVPlayer"),
        Tizen => Some("Editor/Data/PlaybackEngines/TizenPlayer"),
        Vuforia | VuforiaAR => Some("Editor/Data/PlaybackEngines/VuforiaSupport"),
        WebGl => Some("Editor/Data/PlaybackEngines/WebGLSupport"),
        Windows | WindowsMono | WindowsServer => Some("Editor/Data/PlaybackEngines/WindowsStandaloneSupport"),
        Facebook | FacebookGames => Some("Editor/Data/PlaybackEngines/Facebook"),
        Language(_) => Some("Editor/Data/Localization"),
        Lumin => None,
        _ => None,
    };

    path.map(|p| Path::new(p).to_path_buf())
}

pub fn install_location(component: Component) -> Option<PathBuf> {
    use Component::*;
    let path = match component {
        AndroidSdkPlatformTools => {
            Some("Editor/Data/PlaybackEngines/AndroidPlayer/SDK/platform-tools")
        }
        AndroidSdkNdkTools => {
            Some("Editor/Data/PlaybackEngines/AndroidPlayer/SDK/tools")
        }
        _ => None,
    };
    path.map(|p| Path::new(p).to_path_buf()).or_else(|| installpath(component))
}

pub fn selected(component:Component) -> bool {
    use Component::*;
    match component {
        Documentation => false,
        _ => false
    }
}