Skip to content

Commit 237657e

Browse files
committed
Upgrade gix-protocol to winnow 0.5
1 parent 8c80dba commit 237657e

File tree

3 files changed

+23
-35
lines changed

3 files changed

+23
-35
lines changed

Cargo.lock

Lines changed: 6 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gix-protocol/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ gix-credentials = { version = "^0.18.0", path = "../gix-credentials" }
4949
thiserror = "1.0.32"
5050
serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]}
5151
bstr = { version = "1.3.0", default-features = false, features = ["std", "unicode"] }
52-
winnow = { version = "0.4.0", features = ["simd"] }
52+
winnow = { version = "0.5.14", features = ["simd"] }
5353
btoi = "0.4.2"
5454

5555
# for async-client

gix-protocol/src/remote_progress.rs

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ pub struct RemoteProgress<'a> {
2626

2727
impl<'a> RemoteProgress<'a> {
2828
/// Parse the progress from a typical git progress `line` as sent by the remote.
29-
pub fn from_bytes(line: &[u8]) -> Option<RemoteProgress<'_>> {
30-
parse_progress(line).ok().and_then(|(_, r)| {
29+
pub fn from_bytes(mut line: &[u8]) -> Option<RemoteProgress<'_>> {
30+
parse_progress(&mut line).ok().and_then(|r| {
3131
if r.percent.is_none() && r.step.is_none() && r.max.is_none() {
3232
None
3333
} else {
@@ -74,13 +74,13 @@ impl<'a> RemoteProgress<'a> {
7474
}
7575
}
7676

77-
fn parse_number(i: &[u8]) -> winnow::IResult<&[u8], usize> {
77+
fn parse_number(i: &mut &[u8]) -> PResult<usize> {
7878
take_till0(|c: u8| !c.is_ascii_digit())
7979
.try_map(btoi::btoi)
8080
.parse_next(i)
8181
}
8282

83-
fn next_optional_percentage(i: &[u8]) -> winnow::IResult<&[u8], Option<u32>> {
83+
fn next_optional_percentage(i: &mut &[u8]) -> PResult<Option<u32>> {
8484
opt(terminated(
8585
preceded(
8686
take_till0(|c: u8| c.is_ascii_digit()),
@@ -91,22 +91,19 @@ fn next_optional_percentage(i: &[u8]) -> winnow::IResult<&[u8], Option<u32>> {
9191
.parse_next(i)
9292
}
9393

94-
fn next_optional_number(i: &[u8]) -> winnow::IResult<&[u8], Option<usize>> {
94+
fn next_optional_number(i: &mut &[u8]) -> PResult<Option<usize>> {
9595
opt(preceded(take_till0(|c: u8| c.is_ascii_digit()), parse_number)).parse_next(i)
9696
}
9797

98-
fn parse_progress(line: &[u8]) -> winnow::IResult<&[u8], RemoteProgress<'_>> {
99-
let (i, action) = take_till1(|c| c == b':').parse_next(line)?;
100-
let (i, percent) = next_optional_percentage.parse_next(i)?;
101-
let (i, step) = next_optional_number.parse_next(i)?;
102-
let (i, max) = next_optional_number.parse_next(i)?;
103-
Ok((
104-
i,
105-
RemoteProgress {
106-
action: action.into(),
107-
percent,
108-
step,
109-
max,
110-
},
111-
))
98+
fn parse_progress<'i>(line: &mut &'i [u8]) -> PResult<RemoteProgress<'i>> {
99+
let action = take_till1(|c| c == b':').parse_next(line)?;
100+
let percent = next_optional_percentage.parse_next(line)?;
101+
let step = next_optional_number.parse_next(line)?;
102+
let max = next_optional_number.parse_next(line)?;
103+
Ok(RemoteProgress {
104+
action: action.into(),
105+
percent,
106+
step,
107+
max,
108+
})
112109
}

0 commit comments

Comments
 (0)