1
0
mirror of https://github.com/jht5945/buildj.git synced 2025-12-27 09:20:03 +08:00

update buildj

This commit is contained in:
2020-04-05 01:04:31 +08:00
parent c1fb92449e
commit 5f474c47aa
7 changed files with 52 additions and 75 deletions

8
Cargo.lock generated
View File

@@ -72,7 +72,7 @@ dependencies = [
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)",
"rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
"rust_util 0.1.0 (git+https://github.com/jht5945/rust_util)",
"rust_util 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
"urlencoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1008,8 +1008,8 @@ dependencies = [
[[package]]
name = "rust_util"
version = "0.1.0"
source = "git+https://github.com/jht5945/rust_util#9c1bed76d1408467ff09a97a2783848751de8ba0"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1602,7 +1602,7 @@ dependencies = [
"checksum reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)" = "2c2064233e442ce85c77231ebd67d9eca395207dec2127fe0bbedde4bd29a650"
"checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf"
"checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a"
"checksum rust_util 0.1.0 (git+https://github.com/jht5945/rust_util)" = "<none>"
"checksum rust_util 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "35700070bf50662d748fb06926d16d24c1f7d6cfd62ba556dc58541d3c96d436"
"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"

View File

@@ -12,4 +12,4 @@ urlencoding = "1.0.0"
dirs = "2.0.1"
rust-crypto = "0.2.36"
lazy_static = "1.3.0"
rust_util = { git = "https://github.com/jht5945/rust_util" }
rust_util = "0.2.1"

View File

@@ -125,9 +125,7 @@ pub fn find_build_json_in_parents() -> Option<String> {
pub fn find_build_json() -> Option<String> {
match find_build_json_in_current() {
Some(p) => {
Some(p)
},
Some(p) => Some(p),
None => match find_build_json_in_parents() {
Some(p) => {
print_message(MessageType::WARN, &format!("Cannot find {} in current dir, find: {}", BUILD_JSON, p));

View File

@@ -9,6 +9,7 @@ use std::{
use super::{
rust_util::{
iff,
util_os::*,
util_msg::*,
},
@@ -37,11 +38,7 @@ pub fn get_java_home(version: &str) -> Option<String> {
Some(j) => Some(j),
None => match get_local_java_home(version) {
Some(j) => Some(j),
None => if get_cloud_java(version) {
get_local_java_home(version)
} else {
None
},
None => iff!(get_cloud_java(version), get_local_java_home(version), None),
},
}
}
@@ -93,53 +90,46 @@ pub fn get_local_java_home(version: &str) -> Option<String> {
let local_java_home_base_dir = local_util::get_user_home_dir(LOCAL_JAVA_HOME_BASE_DIR).ok()?;
let paths = fs::read_dir(Path::new(&local_java_home_base_dir)).ok()?;
for path in paths {
match path {
Err(_) => (),
Ok(dir_entry) => match dir_entry.path().to_str() {
None => (),
Some(p) => {
if let Ok(dir_entry) = path {
if let Some(p)= dir_entry.path().to_str() {
if *VERBOSE {
print_message(MessageType::DEBUG, &format!("Try match path: {}", p));
}
let mut path_name = p;
if p.ends_with('/') {
path_name = &path_name[..path_name.len() - 1]
}
if let Some(i) = path_name.rfind('/') {
path_name = &path_name[i+1..];
}
let matched_path_opt = if (path_name.starts_with("jdk-") && (&path_name[4..]).starts_with(version))
|| (path_name.starts_with("jdk") && (&path_name[3..]).starts_with(version)) {
Some(p)
} else {
None
};
if let Some(matched_path) = matched_path_opt {
if *VERBOSE {
print_message(MessageType::DEBUG, &format!("Try match path: {}", p));
print_message(MessageType::DEBUG, &format!("Matched JDK path found: {}", matched_path));
}
let mut path_name = p;
if p.ends_with('/') {
path_name = &path_name[..path_name.len() - 1]
}
let last_index_of_slash = path_name.rfind('/');
match last_index_of_slash {
None => (),
Some(i) => path_name = &path_name[i+1..],
};
let matched_path = if (path_name.starts_with("jdk-") && (&path_name[4..]).starts_with(version))
|| (path_name.starts_with("jdk") && (&path_name[3..]).starts_with(version)) {
p
if local_util::is_path_exists(matched_path, "Contents/Home") {
return Some(format!("{}/{}", matched_path, "Contents/Home"));
} else {
""
};
if !matched_path.is_empty() {
if *VERBOSE {
print_message(MessageType::DEBUG, &format!("Matched JDK path found: {}", matched_path));
}
if local_util::is_path_exists(matched_path, "Contents/Home") {
return Some(format!("{}/{}", matched_path, "Contents/Home"));
} else {
return Some(matched_path.to_string());
}
return Some(matched_path.to_string());
}
},
},
};
}
}
}
}
None
}
pub fn extract_jdk_and_wait(file_name: &str) {
match local_util::get_user_home_dir(LOCAL_JAVA_HOME_BASE_DIR) {
Err(_) => (),
Ok(local_java_home_base_dir) => local_util::extract_package_and_wait(&local_java_home_base_dir, file_name).unwrap_or_else(|err| {
if let Ok(local_java_home_base_dir) = local_util::get_user_home_dir(LOCAL_JAVA_HOME_BASE_DIR) {
local_util::extract_package_and_wait(&local_java_home_base_dir, file_name).unwrap_or_else(|err| {
print_message(MessageType::ERROR, &format!("Extract file: {}, failed: {}", file_name, err));
}),
};
});
}
}
pub fn get_env() -> HashMap<String, String> {

View File

@@ -71,10 +71,7 @@ pub fn calc_sha256(d: &[u8]) -> String {
pub fn calc_file_digest(digest: &mut dyn Digest, digest_alg: &str, file_name: &str) -> XResult<String> {
let mut buf: [u8; DEFAULT_BUF_SIZE] = [0u8; DEFAULT_BUF_SIZE];
let mut f = File::open(file_name)?;
let file_len = match f.metadata() {
Err(_) => -1_i64,
Ok(meta_data) => meta_data.len() as i64,
};
let file_len = f.metadata().map(|md| md.len() as i64).unwrap_or(-1_i64);
let start = SystemTime::now();
let mut written = 0_i64;
loop {
@@ -130,10 +127,9 @@ pub fn extract_package_and_wait(dir: &str, file_name: &str) -> XResult<()> {
}
pub fn init_home_dir(home_sub_dir: &str) {
match get_user_home_dir(home_sub_dir) {
Err(_) => (),
Ok(user_home_dir) => init_dir(&user_home_dir),
};
if let Ok(user_home_dir) = get_user_home_dir(home_sub_dir) {
init_dir(&user_home_dir);
}
}
pub fn init_dir(dir: &str) {

View File

@@ -41,7 +41,7 @@ const BUILD_DATE: &str = env!("BUILD_DATE");
fn do_with_buildin_arg_java(first_arg: &str, args: &[String]) {
let ver = &first_arg[7..];
if ver == "" {
if ver.is_empty() {
print_message(MessageType::ERROR, "Java version is not assigned!");
return;
}

View File

@@ -50,11 +50,9 @@ impl BuilderDesc {
pub fn get_builder_bin(&self) -> String {
match &self.bin {
Some(b) => b.clone(),
None => {
match self.name {
BuilderName::Maven => format!("{}/bin/mvn", self.home.clone()),
BuilderName::Gradle => format!("{}/bin/gradle", self.home.clone()),
}
None => match self.name {
BuilderName::Maven => format!("{}/bin/mvn", self.home.clone()),
BuilderName::Gradle => format!("{}/bin/gradle", self.home.clone()),
}
}
}
@@ -105,23 +103,18 @@ pub fn get_local_builder_home_sub(builder_name: BuilderName, local_builder_home_
print_message(MessageType::ERROR, &format!("Cannot find builder home in: {}", local_builder_home_dir));
None
},
Some(p) => {
Some(BuilderDesc{name: builder_name, home: p, bin: None})
},
Some(p) => Some(BuilderDesc{name: builder_name, home: p, bin: None}),
}
}
pub fn get_local_builder_home_sub_first_sub_dir(local_builder_home_dir: &str) -> Option<String> {
let paths = fs::read_dir(Path::new(&local_builder_home_dir)).ok()?;
for path in paths {
match path {
Err(_) => (),
Ok(p) => {
if p.path().is_dir() {
return Some(p.path().to_str()?.to_string());
}
},
};
if let Ok(p) = path {
if p.path().is_dir() {
return Some(p.path().to_str()?.to_string());
}
}
}
None
}