Skip to content

Commit c6839f4

Browse files
committed
chore: 更新依赖项并重构代码以支持 package_json_parser
- 在多个 `Cargo.toml` 文件中添加 `package_json_parser` 依赖项。 - 在 `pm.rs` 和 `pm_shim.rs` 中重构代码,使用 `PackageJsonParser` 替代原有的 `PJson` 解析逻辑。 - 确保代码整洁性和可读性,保持功能一致性。
1 parent c362fb4 commit c6839f4

File tree

5 files changed

+90
-53
lines changed

5 files changed

+90
-53
lines changed

Cargo.toml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ members = [
1111
"demo",
1212
"crates/snm_test_utils",
1313
"crates/snm_downloader",
14-
"crates/node", "crates/package_manager",
14+
"crates/node",
15+
"crates/package_manager",
1516
]
1617

1718
resolver = "2"
@@ -105,16 +106,17 @@ indicatif = "0.17.8"
105106

106107
## 杂项
107108
# async-openai = { version = "0.27.2", default-features = false, features = ["rustls-tls"] }
108-
flate2 = "1.0.28"
109-
glob = "0.3.2"
110-
once_cell = "1.20.2"
111-
strum = { version = "0.27.1", features = ["derive"] }
112-
tar = "0.4.40"
113-
tempfile = "=3.16.0"
114-
uuid = "=1.12.1"
115-
which = "=7.0.1"
116-
xz2 = { version = "0.1.7", features = ["static"] }
117-
zip = "2.1.3"
109+
flate2 = "1.0.28"
110+
glob = "0.3.2"
111+
once_cell = "1.20.2"
112+
package_json_parser = "0.0.2"
113+
strum = { version = "0.27.1", features = ["derive"] }
114+
tar = "0.4.40"
115+
tempfile = "=3.16.0"
116+
uuid = "=1.12.1"
117+
which = "=7.0.1"
118+
xz2 = { version = "0.1.7", features = ["static"] }
119+
zip = "2.1.3"
118120

119121
# self
120122
snm_cli = { path = "./crates/cli" }

crates/snm_pm/Cargo.toml

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,23 @@ version = "0.1.0-66"
66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
77

88
[dependencies]
9-
anyhow = { workspace = true }
10-
clap = { workspace = true }
11-
colored = { workspace = true }
12-
dialoguer = { workspace = true }
13-
lazy-regex = { workspace = true }
14-
once_cell = { workspace = true }
15-
regex = { workspace = true }
16-
reqwest = { workspace = true }
17-
robust_downloader = { workspace = true }
18-
semver = { workspace = true }
19-
serde = { workspace = true }
20-
serde_json = { workspace = true }
21-
strum = { workspace = true }
22-
tokio = { workspace = true }
23-
tracing = { workspace = true }
24-
up_finder = { workspace = true }
9+
anyhow = { workspace = true }
10+
clap = { workspace = true }
11+
colored = { workspace = true }
12+
dialoguer = { workspace = true }
13+
lazy-regex = { workspace = true }
14+
once_cell = { workspace = true }
15+
package_json_parser = { workspace = true }
16+
regex = { workspace = true }
17+
reqwest = { workspace = true }
18+
robust_downloader = { workspace = true }
19+
semver = { workspace = true }
20+
serde = { workspace = true }
21+
serde_json = { workspace = true }
22+
strum = { workspace = true }
23+
tokio = { workspace = true }
24+
tracing = { workspace = true }
25+
up_finder = { workspace = true }
2526

2627
# self
2728
snm_config = { workspace = true }

crates/snm_pm/src/pm.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,16 @@ use std::{path::PathBuf, str::FromStr};
22

33
use anyhow::bail;
44
use lazy_regex::regex_captures;
5+
use package_json_parser::PackageJsonParser;
56
use snm_config::snm_config::SnmConfig;
67
use snm_downloader::{DownloadPackageManagerResource, download_resource};
78
use snm_utils::ver::ver_gt_1;
89
use strum::EnumString;
910
use up_finder::UpFinder;
1011

11-
use crate::{
12-
ops::{
13-
npm::NpmCommandLine, ops::PackageManagerOps, pnpm::PnpmCommandLine, yarn::YarnCommandLine,
14-
yarn_berry::YarnBerryCommandLine,
15-
},
16-
package_json::PJson,
12+
use crate::ops::{
13+
npm::NpmCommandLine, ops::PackageManagerOps, pnpm::PnpmCommandLine, yarn::YarnCommandLine,
14+
yarn_berry::YarnBerryCommandLine,
1715
};
1816

1917
#[derive(Debug, PartialEq, Eq, Clone, strum::Display, EnumString, strum::AsRefStr)]
@@ -97,19 +95,23 @@ impl<'a> SPM<'a> {
9795
}
9896

9997
let Some(spm) = vecs.iter().find_map(|item| {
100-
let Some(dir) = item.parent() else {
101-
return None;
102-
};
98+
// let Some(dir) = item.parent() else {
99+
// return None;
100+
// };
103101

104-
let Some(package_json) = PJson::from(dir).ok() else {
102+
let Ok(package_json) = PackageJsonParser::parse(item) else {
105103
return None;
106104
};
107105

106+
// let Some(package_json) = PJson::from(dir).ok() else {
107+
// return None;
108+
// };
109+
108110
let Some(raw) = package_json.package_manager else {
109111
return None;
110112
};
111113

112-
let Some(pm) = PackageManager::from_str(&raw).ok() else {
114+
let Some(pm) = PackageManager::from_str(&raw.0).ok() else {
113115
return None;
114116
};
115117

crates/snm_shim/Cargo.toml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,19 @@ name = "snm-shim"
1111
path = "src/main.rs"
1212

1313
[dependencies]
14-
anyhow = { workspace = true }
15-
async-trait = { workspace = true }
16-
color-eyre = { workspace = true }
17-
colored = { workspace = true }
18-
dirs = { workspace = true }
19-
lazy-regex = { workspace = true }
20-
once_cell = "1.19"
21-
thiserror = "1.0"
22-
tokio = { workspace = true, features = ["full"] }
23-
tracing = { workspace = true }
24-
tracing-subscriber = { workspace = true, features = ["env-filter"] }
25-
up_finder = { workspace = true }
14+
anyhow = { workspace = true }
15+
async-trait = { workspace = true }
16+
color-eyre = { workspace = true }
17+
colored = { workspace = true }
18+
dirs = { workspace = true }
19+
lazy-regex = { workspace = true }
20+
once_cell = "1.19"
21+
package_json_parser = { workspace = true }
22+
thiserror = "1.0"
23+
tokio = { workspace = true, features = ["full"] }
24+
tracing = { workspace = true }
25+
tracing-subscriber = { workspace = true, features = ["env-filter"] }
26+
up_finder = { workspace = true }
2627

2728
snm_config = { workspace = true }
2829
snm_downloader = { workspace = true }

crates/snm_shim/src/pm_shim.rs

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ use std::path::Path;
22

33
use anyhow::bail;
44
use colored::Colorize;
5+
use package_json_parser::PackageJsonParser;
56
use snm_config::snm_config::SnmConfig;
6-
use snm_pm::{package_json::PJson, pm::SPM};
7+
use snm_pm::pm::SPM;
78
use snm_utils::exec::exec_cli;
89

910
pub struct PmShim {
@@ -69,9 +70,17 @@ impl PmShim {
6970
}
7071

7172
let dir = spm.ensure_bin_dir().await?;
72-
let json = PJson::from(dir)?;
7373

74-
if let Ok(file) = json.get_bin_with_name(bin_name) {
74+
let json = PackageJsonParser::parse(dir.join("package.json"))?;
75+
76+
// let json = PJson::from(dir)?;
77+
78+
let map = json.bin_to_hash_map()?;
79+
80+
// let x = map.get(bin_name);
81+
82+
if let Some(file) = map.get(bin_name) {
83+
let file = dir.join(file);
7584
exec_cli(
7685
&[
7786
&[
@@ -93,6 +102,28 @@ impl PmShim {
93102
)?;
94103
}
95104

105+
// if let Ok(file) = json.get_bin_with_name(bin_name) {
106+
// exec_cli(
107+
// &[
108+
// &[
109+
// "node".to_string(),
110+
// file.to_string_lossy().into_owned(),
111+
// command.to_owned(),
112+
// ],
113+
// args,
114+
// ]
115+
// .concat(),
116+
// &self.paths,
117+
// true,
118+
// )?;
119+
// } else {
120+
// exec_cli(
121+
// &[&[bin_name.to_string(), command.to_owned()], args].concat(),
122+
// &self.paths,
123+
// true,
124+
// )?;
125+
// }
126+
96127
Ok(())
97128
}
98129
}

0 commit comments

Comments
 (0)