framework 0.2.4

Framework is a detector for different frameworks in one projects
Documentation
use crate::facet::java::jvm_facet::JvmFacet;
use crate::facet::Facet;
use crate::lang::jvm;
use crate::lang::jvm::{WORKSPACE_FRAMEWORK_GRADLE, WORKSPACE_FRAMEWORK_POM};
use std::collections::BTreeMap;

#[derive(Serialize)]
pub struct JavaFacet {
    pub jvm: JvmFacet,
    pub include_test: bool,
}

impl JavaFacet {
    pub fn new() -> JavaFacet {
        JavaFacet {
            jvm: Default::default(),
            include_test: false,
        }
    }
}

pub fn creator(tags: &BTreeMap<&str, bool>) -> Option<Box<Facet>> {
    if is_jvm_project(tags) {
        let facet = JavaFacet {
            jvm: JvmFacet {
                is_gradle: tags.contains_key(jvm::WORKSPACE_FRAMEWORK_GRADLE),
                is_maven: tags.contains_key(jvm::WORKSPACE_FRAMEWORK_POM),
                has_java: tags.contains_key(jvm::WORKSPACE_SOURCE_JAVA),
                has_groovy: tags.contains_key(jvm::WORKSPACE_SOURCE_GROOVY),
                has_kotlin: tags.contains_key(jvm::WORKSPACE_SOURCE_KOTLIN),
                has_scala: tags.contains_key(jvm::WORKSPACE_SOURCE_SCALA),
            },
            include_test: tags.contains_key(jvm::WORKSPACE_HAS_TEST),
        };
        return Some(Box::new(facet));
    }
    None
}

fn is_jvm_project(tags: &BTreeMap<&str, bool>) -> bool {
    tags.contains_key(WORKSPACE_FRAMEWORK_GRADLE) || tags.contains_key(WORKSPACE_FRAMEWORK_POM)
}