is-wsl 0.1.0

Checks if the process is running inside Windows Subsystem for Linux.
Documentation
extern crate is_docker;
extern crate sys_info;

fn proc_version_includes_microsoft() -> bool {
    match std::fs::read_to_string("/proc/version") {
        Ok(file_contents) => file_contents.to_lowercase().contains("microsoft"),
        Err(_) => false,
    }
}

pub fn is_wsl() -> bool {
    if std::env::consts::OS != "linux" {
        return false;
    }

    if sys_info::os_release().is_ok()
        && sys_info::os_release()
            .unwrap()
            .to_lowercase()
            .contains("microsoft")
    {
        if is_docker::is_docker() {
            return false;
        }

        return true;
    }

    return if proc_version_includes_microsoft() {
        !is_docker::is_docker()
    } else {
        false
    };
}