use serde::{Deserialize, Serialize};
pub mod args;
pub mod classpath;
pub mod install;
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
pub struct JavaMajorVersion(pub u16);
pub mod maven {
#[derive(Debug, PartialEq)]
pub struct MavenLibraryParts {
pub orgs: Vec<String>,
pub package: String,
pub version: String,
}
impl MavenLibraryParts {
pub fn parse_from_str(string: &str) -> Option<Self> {
let mut parts = string.split(':');
let orgs: Vec<String> = parts.next()?.split('.').map(|x| x.to_owned()).collect();
let package = parts.next()?.to_owned();
let version = parts.next()?.to_owned();
Some(Self {
orgs,
package,
version,
})
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_maven_library_destructuring() {
assert_eq!(
MavenLibraryParts::parse_from_str("foo.bar.baz:hel.lo:wo.rld")
.expect("Parts did not parse correctly"),
MavenLibraryParts {
orgs: vec!["foo".to_string(), "bar".to_string(), "baz".to_string()],
package: "hel.lo".into(),
version: "wo.rld".into()
}
)
}
}
}